在使用listbox时,当item数多于可显示的行数时,listbox可以立即添加一个垂直滚动条,当item数少于可显示的行数时,垂直滚动条则立即消失。我想看看他是怎么实现的,代码应该在哪里找呢?如果我想让它也能自动地实现一个类似的水平滚动条的话该怎么做呢?
解决方案 »
- 请教:自定义异常类的实现
- 现在有程序,用到多个窗口,而每个窗口都要读ACCESS数据库,请问,如何实现只要一个连接控件?
- 求TidHTTP和TidHTTPServer的使用文档,找到立即给分,给我一个简单的编程的例子也行。
- 如何更有效的方法判断edit 中的TEXT 是一个有效的时间
- 截取字符串的问题!!!!!!!!!!!!!!!!!!!!!!!!
- 我想问一下软件做好了怎么做连接数据库文件?
- delphi 程序用什么软件制作安装文件最好?
- teamsource的使用入门??
- 新开的 源码搜索引擎 www.sousource.com
- 怎样不清空列表
- 一个数据集附加的怪问题!!!
- 使用SocketConnection做的三层应用问题
就会转到源代码出了/你想加水平滚动条:有没有Delphi开发人员指南,组件制作那个章中有这个例子
procedure TForm1.FormCreate(Sender: TObject);
var
i, MaxWidth: integer;
begin
MaxWidth := 0;
for i := 0 to ListBox1.Items.Count - 1 do
if MaxWidth < ListBox1.Canvas.TextWidth(ListBox1.Items.Strings[i]) then
MaxWidth := ListBox1.Canvas.TextWidth(ListBox1.Items.Strings[i]);
SendMessage(ListBox1.Handle, LB_SETHORIZONTALEXTENT, MaxWidth+2, 0);
end;
以上的代码首先得到ListBox中最长Item的长度,然后用LB_SETHORIZONTALEXTENT消息设置ListBox的水平滚动的宽度,宽度加2是为了给右面留2个点的边。
至少我经常这么干,试试看