TListBox多列显示问题?(200分)

  • 主题发起人 主题发起人 ow
  • 开始时间 开始时间
O

ow

Unregistered / Unconfirmed
GUEST, unregistred user!
我的程序中需要实现一个多列的TListBox,基本特点是:
1.共有210个Item,排成3列,每列70项。
2.只有垂直滚动条,用户可以上下拖动滚动条看到不同的项。
我把TListBox的Columns属性设置为3,但是实际效果是增加了水平滚动条,而且在ListBox
中的列数远远大于3列,无法满足我的要求,请问各位有什么办法可以解决?
 
只能自己解决了吧
你想想,如果要实现你的效果,这个控件怎么做呢?
因为它只有一个Items的TStringList类型属性,如果要按你的要求分成三列
第二列、第三列的内容如何显示? 它只能是先排满第一列,再第二列。。。一直横着过去了
你可以用其他控件如StringGrid来实现你的目的。
 
用listview可能达到你要的效果
 
用listview吧!子不过程序要大一点!
 
to xianjun:
可以啊,只需要先排满第一行,再排第二行,这样一直下去,直到所有的项目都排完
为止,每行保持三项。
 
呵呵,那可能是我想错了
不过TListBox好象确实不支持这样的
你就用其他控件代替吧,应该不难的。
 
我试试去
 
listbox排列可以
能不能自己添加一个垂直滚动条来控制它?
我没试过,学习
 
ListBox支持的多列显示和你要求的并不一样,
当它的Columns属性不为0时就不会再有垂直滚动条,
而是会把所有的Item都会分栏,每栏的行数不超过所能显示的行数,
而栏数则是这样能安排下所有Item的栏数.
比如:你的Item数是210,而你每栏只能显示10个Item,无论你的Columns是多少,只要大于0;
都会有21栏,Columns属性的真正意义是当前可显示的有多少栏,比如是3,则这21栏中有3栏
可以同时显示出来.
要实现你的要求,我想必需用ListView或Grid!
 
to aizb:
能否从TCustomListBox继承一个类来实现真正的多列功能,因为目前我的主要工作都是
建立在TListBox的基础之上,如果改为其它控件不大可能。
 
如果你要速度建议你用TStringGrid把!
 
to 张无忌:
我的List中需要用到OwerDraw的,TStrinGrid可以吗?
 
可以,TStringGrid 的重画事件很好控制!
 
而且你如果想进一步控制,可以修改 TStringGrid 的代码,什么线条颜色呀,
所有的东西都可以修改的
 
to 张无忌:
我的列表中有1万多项,请问用TStringGrid好还是用TListView好,那个占资源更少,并
且速度更快?
 
这个是用TStringGrid好,
还有DBGRID和TStringGrid从同一个类继承下来的,
有人做过测试,在列表项目很多的情况下, TStringGrid 比TListView 快上很多,
 
ListBox的基类TCustomListBox上修改非常麻烦,我也建议你用TStringGrid,我的主页上有一些关于StringGrid自绘的Demo,你可以去找找!
http://www.aidelphi.com
 
我觉得可以用stringgrid来实现,极切关注此问题
 
后退
顶部