WEB开发网
开发学院手机开发Symbian 开发 Symbian ListBox 常用技巧 阅读

Symbian ListBox 常用技巧

 2010-03-17 21:06:00 来源:WEB开发网   
核心提示:TBuf<120> buf;buf.Append(_L(""));buf.Append(pAppui->iNameArray[i]->GetName()->Des());buf.Append(_L("0"));iListBoxArray->De

TBuf<120> buf;

buf.Append(_L(" "));

buf.Append(pAppui->iNameArray[i]->GetName()->Des());

buf.Append(_L(" 0"));

iListBoxArray->Delete(i);

iListBoxArray->InsertL(i,buf);

}

}

iListBox->DrawNow();//设置完成后,记得一定要重绘

}

TKeyResponse CSingleListBoxContainer::OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode

aType)

{

//响应上下左右键

if (iListBox)

return iListBox->OfferKeyEventL (aKeyEvent, aType);

else

return EKeyWasNotConsumed;

}

//得到当将用户选中的项

TInt CSingleListBoxContainer::GetListBoxIndex()

{

if(iListBox)

{

return iListBox->CurrentItemIndex();

}

return 0;

}

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

第一步作一个自己的ItemDrawer:

class CCustomListItemDrawer: public CListItemDrawer

...{

public:

CCustomListItemDrawer(const CEikTextListBox& aListBox);

~CCustomListItemDrawer();

private:

virtual void DrawActualItem(TInt aItemIndex, const TRect& aActualItemRect,

TBool aItemIsCurrent, TBool aViewIsEmphasized, TBool aViewIsDimmed,

TBool aItemIsSelected) const;

public:

void SetIconArray(CArrayPtr* aIconArray);

TSize MaxIconSize() const;

private:

void DeleteIconArray();

void CalculateMaxIconSize();

private:

const CEikTextListBox& iListBox;

CArrayPtr* iIconArray;

TSize iMaxIconSize;

};

实现的代码中最重要的就是那个DrawActualItem方法负责具体的绘制工作,从它的参数表中足够得到绘制所需的信息,剩下的事情就是用SystemGc去绘制。

上一页  1 2 3 4  下一页

Tags:Symbian ListBox 常用

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