Symbian Dynamic ListBox

关于Symbian 动态列表的构建

 

 

1. MMP 文件中需要的库:
LIBRARY euser.lib apparc.lib cone.lib eikcore.lib
LIBRARY eikcoctl.lib avkon.lib eikctl.lib bafl.lib
2. 在资源文件中定义 ListBox 资源:
   RESOURCE LISTBOX r_notebook_listbox
       {
       flags = EAknListBoxSelectionList | EAknListBoxLoopScrolling;
       }
 
3. 定义拥有 ListBox 的控件类,使其从 CCoeControl, MEikListBoxObserver 公有继承,并在类中定义 ListBox 为数据成员:
   #include <aknlists.h> // CAknSingleStyleListBox
#include <barsread.h> // TResource Reader
#include <e32def.h> // STATIC_CAST
#include <eikclbd.h> // CColumnListBoxData
#include <eikmenub.h> // CEikMenuBarclass
#include <stringloader.h> // StringLoader
#include <uikon.hrh> // TKeyCode #defines
 
CContainer : public CCoeControl, MEikListBoxObserver
{
// Other Code
private:
        CAknColumnListBox*  iList;  
}
CAknColumnListBox ListBox 的基类。
 
4. 建立列表:
  void CreateListL()
{
       iList = new (ELeave) CAknSingleStyleListBox;
       iList->SetContainerWindowL(*this);
      
       TResourceReader reader;
        CEikonEnv::Static()->CreateResourceReaderLC(reader, R_NOTEBOOK_LISTBOX);
        iList->ConstructFromResourceL(reader);
       CleanupStack::PopAndDestroy();
}
 
5. 加载列表项:
   void SetupListItemsL()
{
       CTextListBoxModel* model = iList->Model();
       model->SetOwnershipType (ELbmOwnsItemArray);
     CDesCArray* savedArray = STATIC_CAST(CDesCArray*, model->
ItemTextArray());
       LoadSavedL(*savedArray);
}
 
void LoadSavedL(CDesCArray& aArray)
{
   _LIT (KString,"/tSelect%d");
   TBuf <16> aString;
   for (TInt i = 1; i< 10; i++)
          {
          aString.Format(KString(),i);
          aArray.AppendL (aString);
          }
}
首先取得列表的模型,获取模型中的列表项数组,将列表项逐个添加到列表项数组里。
 
6. 设置滚动条:
   void SetupScrollBarsL()
{
       iList->CreateScrollBarFrameL();
       iList->ScrollBarFrame()->SetScrollBarVisibilityL(
              CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto);
}
 
7. 其他控件属性或函数的设置:
TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType)
{
       if (iList)
              return iList->OfferKeyEventL (aKeyEvent, aType);
       else
              return EKeyWasNotConsumed;
}
 
void SizeChanged()
    {
    iList->SetExtent( TPoint(0,0), iList->MinimumSize() );
    }
 
void Draw(const TRect& aRect) const
    {
     CWindowGc& gc = SystemGc();
       gc.Clear(aRect);
    }
 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值