CAknSingleStyleListBox* iListBox;
CAknSearchField* iListBoxSearchField;
//defined
CGulIcon* defaultIcon = NULL;
CAknSearchField* searchField = CAknSearchField::NewL( *this, CAknSearchField::EFixed,defaultIcon, 40 );
CleanupStack::PushL ( searchField );
searchField->SetSkinEnabledL(ETrue);
CAknFilteredTextListBoxModel* filteredModel = static_cast< CAknFilteredTextListBoxModel* >( iListBox->Model() );
filteredModel->CreateFilterL( iListBox, searchField );
searchField->Editor().SetAknEditorInputMode(EAknEditorTextInputMode);
CleanupStack::Pop( searchField );
searchField->MakeVisible( ETrue );
iListBoxSearchField = searchField; //in
//SizeChanged()
iListBox->SizeChanged();
AknFind::HandleFixedFindSizeChanged( this, ( CAknColumnListBox *)iListBox, iListBoxSearchField );//use HandleFixedFindSizeChanged
//OfferKeyEvent
if ( iListBoxSearchField != NULL && iListBoxSearchField->OfferKeyEventL( aKeyEvent, aType ) == WasConsumed )
{
return EKeyWasConsumed;
}
下边两个不要忘了,要不然会改变不了输入法的(我就在这个地方折腾了一天,郁闷呀!)
TInt CContactContainer::CountComponentControls() const
{
return 2;
}
CCoeControl* CContactContainer::ComponentControl(TInt aIndex) const
{
switch ( aIndex )
{
case 0:
return iListBox;
case 1:
return iListBoxSearchField;
default:
return NULL;
}
}
//取得指定项的操作
TInt CurrentItem = iListBox->View()->CurrentItemIndex ();
CAknFilteredTextListBoxModel* Model = STATIC_CAST (CAknFilteredTextListBoxModel*, iListBox->Model ());
TInt index = Model->Filter()->FilteredItemIndex (CurrentItem);
if( index < 0 )
return NULL;
CDesCArray *itemList = static_cast<CDesCArray*>( iListBox->Model()->ItemTextArray() );
TPtrC ptrin=(*itemList)[index];