Symbian 中关于 ListBox 的编程使用
2010-02-26 16:03:00 来源:WEB开发网在Symbian系统中,ListBox的使用是比较复杂的,也是比较常用的,应该先从最简单的CAknSingleStyleListBox入手来尝试。基本实现步骤就是:先声明一个列表组件 CAknSingleStyleListBox* iListBox,然后在Container的ConstructL中去创建它,接着在合适的地方需要去给ListBox增加内容。具体编程如下:
先声明一个列表组件:CAknSingleStyleListBox* iListBox;
然后在Container的ConstructL中去创建它:
void CUniNewsAppContainer::ConstructL(const TRect& aRect)
{
CreateWindowL();
//add your code here ...
//construct a listbox
iListBox = new(ELeave) CAknSingleStyleListBox;
iListBox->SetContainerWindowL( *this);
iListBox->SetListBoxObserver(this);
iListBox->ConstructL(this,EAknListBoxSelectionList|EAknListBoxLoopScrolling);
iListBox->CreateScrollBarFrameL(ETrue);
iListBox->ScrollBarFrame()->SetScrollBarVisibilityLCEikScrollBarFrame::EOn,CEikScrollBarFrame::EOn);
iListBox->ItemDrawer()->ColumnData()->EnableMarqueeL(ETrue);
iListBox->SetRect(aRect);
SetRect(aRect);
ActivateL();
}
这里有几句话:
一是SetScrollBarVisibilityL设置使用滚动条;
二是ItemDrawer()->ColumData()->EnableMarqueeL()让选中的文本超长后可以左右滚动。
有一点比较奇怪,我得先设置ListBox的Rect才能设置整个Container的Rect?否则ListBox会不占整个主面板的位置。
接着在合适的地方需要去给ListBox增加内容:
void CUniNewsAppContainer::InitListBox(TInt tabId)
{
if(iListBox==NULL) return;
CDesCArray* list = static_cast
TBuf<256> str;
list->Reset();
CUniNewsAppView * appView = STATIC_CAST(CUniNewsAppUi*,iCoeEnv->AppUi())->iAppView;
RArray
赞助商链接