Symbian多选列表框开发实例(转)

http://www.j2mehome.com  2009-07-06 12:57  点击: 61 未知   我要评论( 0 )

  • 摘要:昨天6.10太累了,没有写,今天接着努力了! 本小节的MulsList示例程序以CAknDoubleStyleListBox类为例,演示了如何动态创建多选列表框以及批量删除列表项。(在这里我们还是以MyMarkList示例
  • Tags: 图标 icons 开发 实例 //

本小节的MulsList示例程序以CAknDoubleStyleListBox类为例,演示了如何动态创建多选列表框以及批量删除列表项。(在这里我们还是以MyMarkList示例程序为例,进行改编)

1.创建多选列表框

多选列表框在创建时必须指定“EAknListBoxMultiselectionList”,添加数据时注意使用正确的格式串,添加图标时必须保证表示选中状态的图标和表示未选中状态的图标分别是图标数组的第一个和第二个元素(即图标要相对应即可)。主要修改的代码如下:

void CMyMarkListContainer::ConstructL(const TRect& aRect)
    {
    CreateWindowL();

    // Create listbox
    iListBox = new(ELeave)CAknDoubleGraphicStyleListBox;
    iListBox->SetContainerWindowL(*this);
    iListBox->ConstructL(this,EAknListBoxMultiselectionList);
    iListBox->SetListBoxObserver(this);

    // Load items
    CTextListBoxModel* model = iListBox->Model();
    CDesCArray* array = static_cast<CDesCArray*>(model->ItemTextArray());
    //_LIT(KItemFormat, "1\tRecord%d\t%d");
// "Icon1\tLabel1\tLabel2" 如果写“1”表示icons(1)的图标作为最前面的Icon,这里还可以为0
//如果是11.3.4MulsList则使用下面的格式串
_LIT(KItemFormat,"1\tRecord%d\t%d\t2");

    TBuf<32> record;
    TInt i = 1;
    for (i = 1; i<9 ; i++)
        {
        record.Format(KItemFormat(), i, 100-i, 1);
        array->AppendL(record);
        }

    // Load icons
    CEikonEnv* eikonEnv = CEikonEnv::Static();
    TFileName mbmFile = eikonEnv->EikAppUi()->Application()->BitmapStoreName();
    CArrayPtr<CGulIcon>* icons = new(ELeave) CAknIconArray(3);
    CleanupStack::PushL(icons);
//    icons->AppendL(eikonEnv->CreateIconL(mbmFile, EMbmMymarklistTick, EMbmMymarklistTickmask));
//    icons->AppendL(eikonEnv->CreateIconL(mbmFile, EMbmMymarklistStar, EMbmMymarklistStarmask));
//如果是11.3.4MulsList则使用下面的图标
    icons->AppendL(eikonEnv->CreateIconL(mbmFile, EMbmMymarklistCheck, EMbmMymarklistCheckmask));
    icons->AppendL(eikonEnv->CreateIconL(mbmFile, EMbmMymarklistUncheck, EMbmMymarklistUncheckmask));
    icons->AppendL(eikonEnv->CreateIconL(mbmFile, EMbmMymarklistStar, EMbmMymarklistStarmask));
CleanupStack::Pop(icons);
    iListBox->ItemDrawer()->FormattedCellData()->SetIconArray(icons);

    // Create scrollbar
    iListBox->CreateScrollBarFrameL(ETrue);
    iListBox->ScrollBarFrame()->SetScrollBarVisibilityL(
    CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto );
    SetRect(aRect);
    ActivateL();
    }

搞了半天.mbg文件无法重新生成,查了好多资料,没有解释的。

方法一: 试试清一下工程:
abld reallyclean
bldmake clean
然后重新Build一下:
bldmake bldfiles
abld build wins udeb 

方法二:在group目录下 bmconv 命令  
bmconv      MyMarkList.mbm /C12Star.bmp

都无法实现,最后我一气之下,把这两个文件都删除了,结果。。。 哈哈,可以了,估计要生成这两个文件需要手动删除原来的。

终于搞定了!!!

原文地址:https://www.cnblogs.com/yaoliang11/p/1790547.html