WEB开发网
开发学院手机开发Symbian 开发 Symbian 中关于 ListBox 的编程使用 阅读

Symbian 中关于 ListBox 的编程使用

 2010-02-26 16:03:00 来源:WEB开发网   
核心提示:appView->iChannelHandler->GetContents();for(TInt i=0;iCount();i++){if((*rc)[i].pid==tabId){str.FillZ(str.MaxLength());str.Format(KITEMFORMAT,(*rc)[i].titl
appView->iChannelHandler->GetContents();

for(TInt i=0;iCount();i++)

{

if((*rc)[i].pid==tabId)

{

str.FillZ(str.MaxLength());

str.Format(KITEMFORMAT,(*rc)[i].title);

list->AppendL(str);

}

}

iListBox->HandleItemAdditionL();

iListBox->SetFocus( ETrue );

iListBox->SetCurrentItemIndexAndDraw(appView->iListIndex);

iListBox->ActivateL();

iListBox->DrawNow();

}

这里的HandleItemAdditionL()通知一下ListBox模型作了增加操作,同样还有一个HandleItemRemovalL()则是通知ListBox作了一个删除操作。

这里的KITEMFORMAT定义是" %S"。这里的格式似乎挺重要的,一般是:图标ID 题头字串 主要字串 图标ID 图标ID。

因为没有用到图标所以是一个 %S,这个 不可省略。如果用图标,则变成%d %S了,同时还要增加iconArray在创建iListBox的时候。

CAknIconArray* icons =new(ELeave) CAknIconArray(2);

CleanupStack::PushL(icons);

icons->ConstructFromResourceL(R_ICON_LISTICONS);

iListBox->ItemDrawer()->ColumnData()->SetIconArray(icons);

CleanupStack::Pop();

在ListBox中有一个叫Model()的还有一个叫View()的,从名字上就可以看出它们的含义了。前面我们从Model中操作列表内容,而我们可以从View中获取ItemDrawer去操作列表显示的一些参数:

iListBox->ItemDrawer()->SetFont(ApacPlain12());

但是我觉得有一点不爽的是,缺省生成的列表框字体比较大,不是太喜欢,在网上搜了一下,似乎那个设置字体的方法对我的机器不管用?

不过有一种方法是可行的,只是比较麻烦,那就是自己去实现ListBox,以及它的ItemDrawer。在网上看到的代码我试了一下,还行。方法如下。

第一步作一个自己的ItemDrawer:

class CCustomListItemDrawer: public CListItemDrawer

{

public:

CCustomListItemDrawer(const CEikTextListBox& aListBox);

~CCustomListItemDrawer();

Tags:Symbian 关于 ListBox

编辑录入:coldstar [复制链接] [打 印]
赞助商链接