⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ndgrid.cpp

📁 symbian 二版本的自定义控件
💻 CPP
字号:
#include "NDGrid.h"
//构造函数
CNDGrid::CNDGrid()
{
	iTextArray = NULL;
	iIconArray = NULL;
	iIndex = 0;
	iGridNum = 0;
	iStart = 0;
}
void CNDGrid::ConstructL(CDesC16ArrayFlat* aTextArray,RPointerArray<CFbsBitmap>* aIconArray)
{
	iTextArray = aTextArray;
	iIconArray = aIconArray;
}
//析构函数
CNDGrid::~CNDGrid()
{
	
}
//设置文本数组
void CNDGrid::SetTextArray(CDesC16ArrayFlat* aArray)
{
	iTextArray = aArray;
}
//设置Icon图标数组
void CNDGrid::SetIconArray(RPointerArray<CFbsBitmap>* aArray)
{
	iIconArray = aArray;
}
//设置Grid数
void CNDGrid::SetGridNum(TInt aNum)
{
	iGridNum = aNum;
}
//绘制Grid在指定GC上
void CNDGrid::Draw(CWindowGc &aGc)
{
	TRect	rect;	
	TInt	x = iIndex%3;
	TInt	y = iIndex/3;
	rect.SetRect(1+x*58,1+y*46,58+x*58,50+y*46);
	aGc.SetBrushColor(TRgb(0xdfcfca));
	aGc.DrawRect(rect);
	TInt row = 0;
	if(iGridNum%3==0)
	{
		row = iGridNum/3;
	}
	else
	{
		row = iGridNum/3+1;
	}
	TInt col = 3;
	TInt num = 0;
	for(TInt i=0;i<3;i++)
	{
		num = iStart+i*3;
		for(TInt j=0;(j<col) && (num<iGridNum);j++)
		{
			rect.SetRect(10+58*j,2+48*i,48+58*j,36+48*i);
			aGc.DrawBitmap(rect,(*iIconArray)[iStart+i*3+j]);
			aGc.DrawText((*iTextArray)[iStart+i*3+j],TPoint(12+58*j,48+48*i));
			num++;
		}
		if(num==iGridNum)
		{
			break;
		}
	}
}
//获取当前选中索引
TInt CNDGrid::Selected()
{
	return (iIndex+iStart);
}
//按键处理
TKeyResponse CNDGrid::OfferKeyEventL(const TKeyEvent &aKeyEvent, TEventCode aType)
{
	if(aKeyEvent.iCode == EKeyDownArrow && aType == EEventKey)
	{
		if(iIndex/3==2)
		{
			iStart += 3;
			if((iIndex+iStart+1)>iGridNum)
			{
				if( (iIndex+iStart+1-iIndex%3)>iGridNum)
				{
					iIndex = iIndex%3;
					iStart = 0;
				}
				else
				{
					iIndex = iGridNum-iStart-1;
				}	
			}
		}
		else
		{
			iIndex +=3;
			if((iIndex+iStart+1)>iGridNum)
			{
				if(iGridNum%3==0 || (iIndex+iStart-2)==iGridNum)
				{
					iIndex = iIndex%3;
					iStart = 0;
				}
				else
				{
					iIndex = iGridNum-iStart-1;
				}	
			}
		}
	}
	else if(aKeyEvent.iCode == EKeyUpArrow && aType == EEventKey)
	{
		if(iIndex/3==0)
		{
			iStart -= 3;
			if(iStart<0)
			{
				if(iGridNum>6)
				{
					iStart = iGridNum-(iGridNum-1)%3-7;
				}
				else
				{
					iStart = 0;
				}
				iIndex += 6;
				if((iIndex+iStart+1)>iGridNum)
				{
					iIndex = (iGridNum-1)%3 + 6;
				}
			}
		}
		else
		{
			iIndex -= 3;
		}
	}
	else if(aKeyEvent.iCode == EKeyLeftArrow && aType == EEventKey)
	{
		if(iIndex == 0)
		{
			if(iStart == 0)
			{
				if(iGridNum>6)
				{
					iStart = iGridNum - (iGridNum-1)%3 - 7;
					iIndex = (iGridNum-1)%3+6;
				}
				else
				{
					iIndex = iGridNum-1;
				}
									
			}
			else
			{
				iStart -=3;
				iIndex += 2;
			}
		}
		else
		{
			iIndex--;
		}
	}
	else if(aKeyEvent.iCode == EKeyRightArrow && aType == EEventKey)
	{
		
		if((iIndex + iStart + 1) == iGridNum)
		{
			iIndex = iStart = 0;
		}
		else if(iIndex == 8)
		{
			iIndex -= 2;
			iStart +=3;
		}
		else
		{
			iIndex ++;
		}
	}
	return EKeyWasConsumed;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -