ListBox creation
The following code snippet shows how to create and initialize listbox. Certain parts of initialization are slightly different in case of CEikColumnListBox-derived and CEikFormattedCellListBox-derived listboxes.
ListBox Container Code:
// Creation, initialization
CEikColumnListBox* _listBox = new (ELeave) CEikColumnListBox-derived ListBox;
or
CEikFormattedCellListBox* _listBox = new (ELeave) CEikFormattedCellListBox-derived ListBox;
_listBox->ConstructL(this); // parent: container, use default flags
_listBox->SetContainerWindowL(*this);
_listBox->CreateScrollBarFrameL(ETrue);
_listBox->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EOn, CEikScrollBarFrame::EAuto);
// Setting the icon list
// For CEikColumnListBox-derived ListBox
CArrayPtr* iconList = (method that returns icon list);
_listBox->ItemDrawer()->ColumnData()->SetIconArray(iconList);
or
// For CEikFormattedCellListBox-derived ListBox
_listBox->ItemDrawer()->FormattedCellData()->SetIconArray();
_listBox->ItemDrawer()->FormattedCellData()->SetSubCellAlignmentL(2, CGraphicsContext::ELeft);
// Setting the item list (in this example listbox takes the ownership of the list)
CDesCArray* listBoxItems = (method that returns listbox items);
// Items could be read also from a resource file (ARRAY structure in .rss file),
// in cases where item list is non-modifiable (and perhaps language-dependent)
// CDesCArrayFlat* listBoxItems = iCoeEnv->ReadDesCArrayResourceL(R_MYAPP_LISTBOX_ITEMS);
CTextListBoxModel* model = _listBox->Model();
model->SetItemTextArray(listBoxItems);
model->SetOwnershipType(ELbmOwnsItemArray); // transfers ownership
Icons in a ListBox
The icon list is a multi-bitmap file. The icons used in a listbox can have different sizes: typically, you'll have big and small icons in your icon list. Small icon size could be something like 13x13 pixels, while good candidates for a big icon size are 30x40, 36x44, 40x30, 40x48 and 44x36. (All dimensions should be taken just as a guideline.)
The following code shows how to create icons for a listbox, assuming that icons are stored in a multi-bitmap (.mbm) file located in the application's installation directory.
_LIT(KIconsFilename, "\\system\\apps\\<appname>\\<iconfile>.mbm");
// CGulIcon class packages two bitmaps: icon image and its mask
// CAknIconArray inherits from CArrayPtrFlat
CArrayPtr* iconList = new (ELeave) CAknIconArray(10);
CleanupStack::PushL(iconList);
// Icons are referenced by their physical position in .mbm file
iconList->AppendL(iEikonEnv->CreateIconL(KIconsFilename, <icon1 idx>, <icon1mask idx>));
iconList->AppendL(iEikonEnv->CreateIconL(KIconsFilename, <icon2 idx>, <icon2mask idx>));
...
CleanupStack::Pop();
// assign icon list to a listbox...
How to add an item
The following code shows how to add an item to the listbox.
CTextListBoxModel* model = _listBox->Model();
MDesCArray* textArray = model->ItemTextArray();
CDesCArray* listBoxItems = static_cast<CDesCArray*>(textArray);
// The actual item text format depends on the listbox type, see tables with listbox types
_LIT(KItemName,"MyNewItem");
TBuf<32> item;
item.Format(_L("%d\t%S\t%d\t%d"), 0, &KItemName, 1, 2); // 0, 1, 2 = icon indexes in iconlist
listBoxItems->AppendL(item);
_listBox->HandleItemAdditionL(); // Update listbox
_listBox->SetCurrentItemIndexAndDraw(listBoxItems->Count() - 1); // select new item
How to remove an item
The following code shows how to remove an item from the listbox.
CTextListBoxModel* model = _listBox->Model();
TInt currentItem = _listBox->CurrentItemIndex();
MDesCArray* textArray = model->ItemTextArray();
CDesCArray* listBoxItems = static_cast<CDesCArray*>(textArray);
listBoxItems->Delete(currentItem, 1); // 1 = how many items to delete
AknListBoxUtils::HandleItemRemovalAndPositionHighlightL(_listBox, currentItem, ETrue);
_listBox->DrawNow(); // Update listbox
Can anybody tell me what are the header files invloved in this tutorial??
Tanx
#include akniconarray.h // CAknIcon #include aknlists.h //CAknSingleStyleListBox #include aknutils.h #include barsread.h // TResource Reader #include eikclbd.h // CColumnListBoxData #include eikmenub.h // CEikMenuBar #include eiktxlbm.h #include eiklbx.h #include eiklbm.h #include eiktxlbx.h
#include <stringloader.h> // StringLoader #include <uikon.hrh> // TKeyCode #defines #include <eiklabel.h> // for example label control #include<badesca.h>
>> item.Format(_L("%d\t%S\t%d\t%d"), 0, &KItemName, 1, 2); // 0, 1, 2 = icon indexes in iconlist
and if for some item i don't want any icon? what should be the symbol then? just a space or "-" don't work...
If you want the main item icon to be empty, you'll need to create an icon with no foreground to it and just use its index. If you want the trailing icons to be blank, just exclude them from the item text, such as:
item.Format(_L("%d\t%S"), 0, &KItemName); // 0 = icon index in iconlist
Cheers,
TT
hi every body
i write a simple code into the multiviews example, i add a method to view's container. the code is follow
void CMultiViewsContainer1::DisplayListBox()
{
m_listBox = new (ELeave) CAknSingleStyleListBox();
m_listBox->SetListBoxObserver(this);
m_listBox->SetContainerWindowL(*this);
m_listBox->ConstructL(this, 0);
(textArray);
m_listBox->CreateScrollBarFrameL(ETrue);
m_listBox->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EOn, CEikScrollBarFrame::EAuto);
CTextListBoxModel* model = m_listBox->Model();
MDesCArray* textArray = model->ItemTextArray();
CDesCArray* listBoxItems = static_cast
model->SetItemTextArray(listBoxItems);
model->SetOwnershipType(ELbmOwnsItemArray);
TBuf<32> item;
_LIT(KIT1, "item 1");
_LIT(KIT2, "item 2");
item.Format(_L("\t%S\t\t"), &KIT1);
listBoxItems->AppendL(item);
return;
item.Format(_L("%S"), &KIT2);
listBoxItems->AppendL(item);
m_listBox->HandleItemAdditionL();
m_listBox->SetCurrentItemIndexAndDraw(listBoxItems->Count() - 1);
m_listBox->ActivateL();
DrawNow();
}
when i execute it in epoc, i got a error of cbase21, if i do not execute appendl of CDesCArray, it run ok , who can tell me why?
thanks
steve
Hi,
I am using the given Example . it gives the following error:-
Creation Time Description Resource Path Location Type
1250153429265 illegal use of incomplete struct/union/class 'CTextListBoxModel' SListBoxExampleAppView.cpp SListBoxExample/src line 81 C/C++ Problem