symbian 列表
来源:互联网 发布:单片机p0口怎么接LED灯 编辑:程序博客网 时间:2024/04/29 13:59
symbian自定义列表,支持拖拽功能,有阻尼效果
void CListContainer::MoveUp(TUint aDistance)
{
TPoint tl(0,0);
TInt cavasHeight = iCavas->SizeInPixels().iHeight;
TInt count = iItemArray.Count();
TBool meetVisible = EFalse;//遇见可视的列表项
for (TInt i=0; i < count; i++)
{
CListItem* item = iItemArray[i];
if (meetVisible)
{
item->SetPosition(tl);
if (tl.iY > cavasHeight)
{
item->MakeVisible(EFalse);
tl.iY += item->Size().iHeight;
}
else if (tl.iY > 0)
{
item->MakeVisible(ETrue);
tl.iY += item->Size().iHeight;
}
else
{
tl.iY += item->Size().iHeight;
if (tl.iY > 0)
item->MakeVisible(ETrue);
else
item->MakeVisible(EFalse);
}
}
else
{
if (item->IsVisible())
{
meetVisible = ETrue;
tl = item->Position();
tl.iY -= aDistance;
item->SetPosition(tl);
tl.iY += item->Size().iHeight;
if (tl.iY < 0)
item->MakeVisible(EFalse);
}
}
}
if (!meetVisible)
{
for (TInt i=0; i < count; i++)
{
CListItem* item = iItemArray[i];
tl = item->Position();
tl.iY -= aDistance;
item->SetPosition(tl);
if (tl.iY > cavasHeight)
{
item->MakeVisible(EFalse);
}
else if (tl.iY > 0)
{
item->MakeVisible(ETrue);
}
else
{
tl.iY += item->Size().iHeight;
if (tl.iY > 0)
item->MakeVisible(ETrue);
else
item->MakeVisible(EFalse);
}
}
}
}
{
TPoint tl(0,0);
TInt cavasHeight = iCavas->SizeInPixels().iHeight;
TInt count = iItemArray.Count();
TBool meetVisible = EFalse;//遇见可视的列表项
for (TInt i=0; i < count; i++)
{
CListItem* item = iItemArray[i];
if (meetVisible)
{
item->SetPosition(tl);
if (tl.iY > cavasHeight)
{
item->MakeVisible(EFalse);
tl.iY += item->Size().iHeight;
}
else if (tl.iY > 0)
{
item->MakeVisible(ETrue);
tl.iY += item->Size().iHeight;
}
else
{
tl.iY += item->Size().iHeight;
if (tl.iY > 0)
item->MakeVisible(ETrue);
else
item->MakeVisible(EFalse);
}
}
else
{
if (item->IsVisible())
{
meetVisible = ETrue;
tl = item->Position();
tl.iY -= aDistance;
item->SetPosition(tl);
tl.iY += item->Size().iHeight;
if (tl.iY < 0)
item->MakeVisible(EFalse);
}
}
}
if (!meetVisible)
{
for (TInt i=0; i < count; i++)
{
CListItem* item = iItemArray[i];
tl = item->Position();
tl.iY -= aDistance;
item->SetPosition(tl);
if (tl.iY > cavasHeight)
{
item->MakeVisible(EFalse);
}
else if (tl.iY > 0)
{
item->MakeVisible(ETrue);
}
else
{
tl.iY += item->Size().iHeight;
if (tl.iY > 0)
item->MakeVisible(ETrue);
else
item->MakeVisible(EFalse);
}
}
}
}
void CListContainer::MoveDown(TUint aDistance)
{
TPoint tl(0,0);
TInt cavasHeight = iCavas->SizeInPixels().iHeight;
TInt count = iItemArray.Count();
TBool meetVisible = EFalse;//遇见可视的列表项
for (TInt i=count-1; i >= 0; i--)
{
CListItem* item = iItemArray[i];
if (meetVisible)
{
if (tl.iY < 0)
{
item->MakeVisible(EFalse);
tl.iY -= item->Size().iHeight;
}
else if (tl.iY < cavasHeight)
{
item->MakeVisible(ETrue);
tl.iY -= item->Size().iHeight;
}
else
{
tl.iY -= item->Size().iHeight;
if (tl.iY < cavasHeight)
item->MakeVisible(ETrue);
else
item->MakeVisible(EFalse);
}
item->SetPosition(tl);
}
else
{
if (item->IsVisible())
{
meetVisible = ETrue;
tl = item->Position();
tl.iY += aDistance;
item->SetPosition(tl);
if (tl.iY > cavasHeight)
item->MakeVisible(EFalse);
}
}
}
if (!meetVisible)
{
for (TInt i=count-1; i >= 0; i--)
{
CListItem* item = iItemArray[i];
tl = item->Position();
tl.iY += aDistance;
item->SetPosition(tl);
if (tl.iY < 0)
{
item->MakeVisible(EFalse);
}
else if (tl.iY < cavasHeight)
{
item->MakeVisible(ETrue);
}
else
{
tl.iY -= item->Size().iHeight;
if (tl.iY < cavasHeight)
item->MakeVisible(ETrue);
else
item->MakeVisible(EFalse);
}
}
}
}
{
TPoint tl(0,0);
TInt cavasHeight = iCavas->SizeInPixels().iHeight;
TInt count = iItemArray.Count();
TBool meetVisible = EFalse;//遇见可视的列表项
for (TInt i=count-1; i >= 0; i--)
{
CListItem* item = iItemArray[i];
if (meetVisible)
{
if (tl.iY < 0)
{
item->MakeVisible(EFalse);
tl.iY -= item->Size().iHeight;
}
else if (tl.iY < cavasHeight)
{
item->MakeVisible(ETrue);
tl.iY -= item->Size().iHeight;
}
else
{
tl.iY -= item->Size().iHeight;
if (tl.iY < cavasHeight)
item->MakeVisible(ETrue);
else
item->MakeVisible(EFalse);
}
item->SetPosition(tl);
}
else
{
if (item->IsVisible())
{
meetVisible = ETrue;
tl = item->Position();
tl.iY += aDistance;
item->SetPosition(tl);
if (tl.iY > cavasHeight)
item->MakeVisible(EFalse);
}
}
}
if (!meetVisible)
{
for (TInt i=count-1; i >= 0; i--)
{
CListItem* item = iItemArray[i];
tl = item->Position();
tl.iY += aDistance;
item->SetPosition(tl);
if (tl.iY < 0)
{
item->MakeVisible(EFalse);
}
else if (tl.iY < cavasHeight)
{
item->MakeVisible(ETrue);
}
else
{
tl.iY -= item->Size().iHeight;
if (tl.iY < cavasHeight)
item->MakeVisible(ETrue);
else
item->MakeVisible(EFalse);
}
}
}
}
void CListContainer::Damp()
{
#if 1
TInt count = iItemArray.Count();
TInt cavasHeight = iCavas->SizeInPixels().iHeight;
CListItem* first = iItemArray[0];
CListItem* last = iItemArray[count-1];
if (first->Position().iY > 0)
{
//开头需要调整
MoveUp(first->Position().iY);
}
else if (last->Rect().iBr.iY < cavasHeight && first->Position().iY < 0)
{
//尾部需要调整
MoveDown(cavasHeight - last->Rect().iBr.iY);
if (first->Position().iY > 0)
{
MoveUp(first->Position().iY);
}
}
DrawToCavas();
DrawNow();
#endif
}
{
#if 1
TInt count = iItemArray.Count();
TInt cavasHeight = iCavas->SizeInPixels().iHeight;
CListItem* first = iItemArray[0];
CListItem* last = iItemArray[count-1];
if (first->Position().iY > 0)
{
//开头需要调整
MoveUp(first->Position().iY);
}
else if (last->Rect().iBr.iY < cavasHeight && first->Position().iY < 0)
{
//尾部需要调整
MoveDown(cavasHeight - last->Rect().iBr.iY);
if (first->Position().iY > 0)
{
MoveUp(first->Position().iY);
}
}
DrawToCavas();
DrawNow();
#endif
}
- symbian 列表
- symbian系统错误列表
- Symbian列表框(CEikListBox)使用说明
- symbian 获得终端安装程序列表
- symbian c++ 使用列表(Carbide c++)
- Symbian
- symbian
- symbian
- symbian
- symbian 获取指定路径下的文件夹和文件列表
- symbian在Series60中创建自定义列表(LISTBOX)
- symbian 获取指定路径下的文件夹列表
- symbian中的listbox添加和删除列表项代码实例
- symbian OS:解决S60列表框上下滚动出现列表项覆盖,失去焦点的列表项仍高亮的问题
- Symbian中获取ListBox当前列表项(ListBoxItem)中的文本的实现方法
- 分享一个漂亮的Symbian S60 3rd 自定义列表框控件
- 建了一个"symbina 技术"邮件列表,欢迎大加入到这个群,讨论symbian C++相关的技术问题!
- symbian c++
- blazes+java
- 【iOS-cocos2d-X 游戏开发之一】在Mac下结合Xcode搭建Cocos2d-X开发环境!
- FTP信息代码全解
- 云计算背后的秘密(1)-MapReduce
- 整合spring 支持声明式事务的hibernate
- symbian 列表
- ASP.NET DBHelper
- 2011年排名前十的电子行业网站
- Linq简单操作
- MYSQL 日期函数
- Js_常量和变量
- glib安装 glib使用手册
- 怎么生成star-cascade的PCA统计信息文件
- mac os