使用GRID来实现九宫格菜单
来源:互联网 发布:anaconda安装caffe 编辑:程序博客网 时间:2024/05/18 03:04
1、头文件中声明用到的变量
CAknGrid* iGrid;
CAknGridM* iGridM;
TInt iNumOfRows;
TInt iNumOfColumns;
TSize iCellSize;
TInt iGraphHeight;
2、源文件中的代码
const TInt KNumOfSelectionColumns = 3;
const TInt KNumOfSelectionRows = 3;
const TInt KGraphHeight=32;
_LIT(KMbmPath, "Z://system//apps//GirdTest//GirdTest.mbm");
_LIT(KItemFormat,"%d/t%S");
ConstructL()中实现
iGrid = new( ELeave ) CAknGrid;
iGrid->SetContainerWindowL( *this );
iGridM = new( ELeave ) CAknGridM;
iGrid->SetModel( iGridM );
TInt gridFlags = EAknListBoxSelectionGrid;
iGrid->ConstructL( this, gridFlags);
CAknGridView::TScrollingType iVerticalScrollingType =
CAknGridView::EScrollIncrementLineAndLoops;
CAknGridView::TScrollingType iHorizontalScrollingType =
CAknGridView::EScrollIncrementLineAndLoops;
TBool iVerticalOrientation = EFalse;
TBool iTopToBottom = ETrue;
TBool iLeftToRight = ETrue;
iNumOfColumns = KNumOfSelectionColumns;
iNumOfRows = KNumOfSelectionRows;
iGraphHeight=KGraphHeight;
iCellSize.iWidth = ( aRect.iBr.iX - aRect.iTl.iX ) / iNumOfColumns;
iCellSize.iHeight = ( aRect.iBr.iY - aRect.iTl.iY ) / iNumOfRows;
iGrid->SetLayoutL( iVerticalOrientation,iLeftToRight, iTopToBottom, iNumOfRows, iNumOfColumns,iCellSize );
iGrid->SetPrimaryScrollingType( iVerticalScrollingType );
iGrid->SetSecondaryScrollingType( iHorizontalScrollingType );
iGrid->CreateScrollBarFrameL(ETrue);
iGrid->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff,CEikScrollBarFrame::EAuto);
AknListBoxLayouts::SetupStandardGrid( *iGrid );
TInt grWidth = 0;
TInt txWidth = 0;
grWidth = iGrid->ColumnWidth();
txWidth = iGrid->ColumnWidth();
const CFont* fontText = CCoeEnv::Static()->NormalFont();
AknListBoxLayouts::SetupFormGfxCell( *iGrid, iGrid->ItemDrawer(), 0, 0, 0, 0, 0, grWidth, iGraphHeight, TPoint( 0, 0 ), TPoint( grWidth, iGraphHeight) );
AknListBoxLayouts::SetupFormTextCell( *iGrid, iGrid->ItemDrawer(), 1, fontText, 215, 0, 0, iGrid->ItemHeight()-3, txWidth, CGraphicsContext::ECenter, TPoint( 0, iGrid->ItemHeight()-iGraphHeight), TPoint( iGrid->ColumnWidth(), iGrid->ItemHeight() ) );
CArrayPtr<CGulIcon>* icons =new ( ELeave ) CAknIconArray(7);
CleanupStack::PushL( icons );
icons->AppendL( iEikonEnv->CreateIconL(KMbmPath,EMbmGirdtestContact,EMbmGirdtestContact) );
icons->AppendL( iEikonEnv->CreateIconL(KMbmPath,EMbmGirdtestCalllog,EMbmGirdtestCalllog) ); icons->AppendL( iEikonEnv->CreateIconL(KMbmPath,EMbmGirdtestConfig,EMbmGirdtestConfig) );
icons->AppendL( iEikonEnv->CreateIconL(KMbmPath,EMbmGirdtestCallwall,EMbmGirdtestCallwall) );
icons->AppendL( iEikonEnv->CreateIconL(KMbmPath,EMbmGirdtestFind,EMbmGirdtestFind) );
icons->AppendL( iEikonEnv->CreateIconL(KMbmPath,EMbmGirdtestBlackcode,EMbmGirdtestBlackcode) ); icons->AppendL( iEikonEnv->CreateIconL(KMbmPath,EMbmGirdtestTodo,EMbmGirdtestTodo) );
// Sets graphics as ListBox icon. iGrid->ItemDrawer()->FormattedCellData()->SetIconArrayL( icons );
CleanupStack::Pop();
CDesCArray* array = static_cast<CDesCArray*>(iGrid->Model()->ItemTextArray());
array->Reset();
TBuf<255> item;
HBufC* textResource = StringLoader::LoadLC(QTN_CONTACT);
item.Format(KItemFormat,0,textResource);
array->AppendL(item);
CleanupStack::PopAndDestroy();
textResource = StringLoader::LoadLC(QTN_CALLLOG);
item.Format(KItemFormat,1,textResource);
array->AppendL(item);
CleanupStack::PopAndDestroy();
textResource = StringLoader::LoadLC(QTN_CONFIG);
item.Format(KItemFormat,2,textResource);
array->AppendL(item);
CleanupStack::PopAndDestroy();
textResource = StringLoader::LoadLC(QTN_CALLWALL);
item.Format(KItemFormat,3,textResource);
array->AppendL(item);
CleanupStack::PopAndDestroy();
textResource = StringLoader::LoadLC(QTN_FIND);
item.Format(KItemFormat,4,textResource);
array->AppendL(item);
CleanupStack::PopAndDestroy();
textResource = StringLoader::LoadLC(QTN_BLACKCODE);
item.Format(KItemFormat,5,textResource);
array->AppendL(item);
CleanupStack::PopAndDestroy();
textResource = StringLoader::LoadLC(QTN_TODO);
item.Format(KItemFormat,6,textResource);
array->AppendL(item);
CleanupStack::PopAndDestroy();
iGrid->HandleItemAdditionL();
4、~CGirdTestContainer()
delete iGrid;
5、SizeChanged()
if ( iGrid ) { iGrid->SetRect( Rect() ); }
6、OfferKeyEventL
TKeyResponse CGirdTestContainer::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType )
{
if (aType!=EEventKey)
return EKeyWasNotConsumed;
switch(aKeyEvent.iCode)
{
// Forward up and down key press events to the list box
case EKeyUpArrow:
case EKeyDownArrow:
case EKeyLeftArrow:
case EKeyRightArrow:
return iGrid->OfferKeyEventL( aKeyEvent, aType );
case EKeyOK:
{
TInt nIndex=iGrid->CurrentItemIndex();
/*****
.......
*****/
break;
}
default:
break;
}
return EKeyWasNotConsumed;
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/stonesl/archive/2008/06/23/2577686.aspx
网上找了很多例子,没有能成功的,这篇文章传的比较广,希望有所帮助
- 使用GRID来实现九宫格菜单
- 使用GRID来实现九宫格菜单
- 使用GridView实现九宫格的菜单
- 采用GridView实现九宫格的菜单
- 使用九宫格来调整图片
- Android之UI学习篇八:使用GridView实现九宫格的菜单
- Android之UI学习篇:使用GridView实现九宫格的菜单
- Android之UI学习篇:使用GridView实现九宫格的菜单
- ionic grid(栅格) 九宫格
- 九宫格菜单制作
- 九宫格菜单
- 九宫格 Swift提供经典的数组和字典两种集合类型来存储集合数据,使用数组实现一个九宫格程序,
- 使用GridView实现九宫格布局
- [Android] 使用 GridView 实现九宫格视图
- Android实现九宫格
- WEB 九宫格实现
- 九宫格的实现
- Android实现九宫格
- 如何学习基于ARM平台的嵌入式系统(2)
- __stdcall和_cdecl FAR&NEAR 16&32
- 牛雪峰:夜色归来,异样的相同
- RealPlay在Fedora13上的安装
- 团队建设是为了更多的沉淀
- 使用GRID来实现九宫格菜单
- Linux的五个查找命令:find,locate,whereis,which,type
- (转)ASP.NET安全问题--Forms验证实战篇
- Scily 1011. Lenny's Lucky Lotto
- 男人20到30的生存法则
- 从零开始做3D地图编辑器(二)(基于QT与OGRE)
- ubuntu分区设置
- 如何把Powerbuilder程序从PB8升级到PB10
- 关于效率提升