设置类似表格效果的几种方法

探讨了在Symbian平台上实现类似Excel效果的表格控件的方法,包括使用Grid、Listbox等控件的可能性及局限性,并详细介绍了利用Listbox自绘网格线的具体实现方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Symbian中没有好用的类似excel效果的表格控件。搜索一番没有发现例子或者有用的东西,虽然很多商业软件上都有这样的效果,唯一可以确定的就是自己画,麻烦。

1.首先想到稍微有点类似的就是Grid,但由于其每行中的若干列是独立的,在设置焦点时比较麻烦,故最后也放弃了通过修改Grid实现这样的效果。

2.其次想到的是列表框listbox,其每行是独立,焦点转换简单,但需要自己在每行中设置  各列,并绘制对应网格线。

3.最后想到的是自己完全从头开始画,什么都靠自己的双手。

1比较难,我没想到好的方法,3就是比较烦,我觉得花过多的时间在UI上就是浪费生命,可是symbian却让我们浪费了很多很多。勉强选择2实现,首先参考了dev论坛上CustomListbox的设计,然后再其基础上实现网格效果。

 

先说 绘制网格线效果的几种方法:

1.先绘制Rect的边框,然后shrink,最后在shrink后的Rect中DrawText

   iGc->DrawRect(textRect) ;

   textRect.Shrink(1,1) ;

   iGc->DrawText

效果: 纵向线因为画了两次 会比横向线粗一倍。

 

2.设置ListBox控件背景为白,然后在 DrawActualItem函数中 设置Brush颜色,shrinkRect,然后在DrawText绘制时会将Rect的背景设置成Brush的颜色。背景的白色作为网格线。

//iGc->SetBrushStyle(CGraphicsContext::ESolidBrush);

//iGc->SetBrushColor(TRgb(100,100,100)) ;

效果:如果listbox中有列表项的背景区域为设置的颜色,无列表项的背景区域为原来的白色。另外,选中项需另外处理。

 

3.设置ListBox控件的寄宿控件的背景为黑,然后在 DrawActualItem函数中 shrink Rect , 然后DrawText是绘制白色背景,Shrink出现的缝隙作为网格线。

效果:listbox中有列表项的区域有 网格线,无列表项的区域无 网格线,因为网格线在 DrawActualItem设置。

 

4.在ListBox控件的Draw函数中绘制 网格线,然后在DrawActualItem函数中 将text填入对于的区域。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值