如何加上ListBox的垂直滚动条?(50分)

  • 主题发起人 主题发起人 Adnil
  • 开始时间 开始时间
A

Adnil

Unregistered / Unconfirmed
GUEST, unregistred user!
ListBox的垂直滚动条只有在Item数超过它的高度的时候才出现,如何是它在任何时候都能显示垂直滚动条呢?
例如将TMemo的ScrollBars属性设置成ssVertical时候的那种效果。
 
查下消息,发送一个消息就可以实现了
 
To antic_ant:
你说了等于没说。 :(
 
或者你直接添加一个垂直的滚动条,建立关联,也OK.
 
考虑过,但是这样一旦ListBox自己的滚动条出来以后不就有两个滚动条了?
 
但是只有在item数达到一定数量超出边界的时候滚动条才出现,而我需要滚动条永久保持,跟item数无关。

我需要这样肯定是有一定理由的,否则哪有这个闲工夫去讨论这个问题。

可以看看outlook express的拼写检查对话框,里面就有这样的一个listbox。

谢过。
 
从TListBox继承一个下来吧:
TMyListBox = class(TListBox)
protected
procedure CreateParams(var Params: TCreateParams); override;
end;

procedure TMyListBox.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.Style := Params.Style or LBS_DISABLENOSCROLL;
end;
 
发消息是不行的了, 不过没想到用SetWindowLong也不行, 真是想不通!
SetWindowLong(ListBox1.Handle, GWL_STYLE,
GetWindowLong(ListBox1.handle, GWL_STYLE) or LBS_DISABLENOSCROLL);
 
xianjun,你的方法接受。

其实我自己也找到了,通过spy++查找控件的属性得来的。
最终代码如下:
TADListBox = class(TListBox)
protected
procedure CreateParams(var Params: TCreateParams); override;
end;
procedure TADListBox.CreateParams(var Params: TCreateParams);
begin
inherited;
with Params do
begin
Style := Style or LBS_DISABLENOSCROLL or WS_VSCROLL;
Style := Style and not WS_HSCROLL;
end;
end;

感谢各位的支持!
 

Similar threads

D
回复
0
查看
802
DelphiTeacher的专栏
D
D
回复
0
查看
747
DelphiTeacher的专栏
D
D
回复
0
查看
753
DelphiTeacher的专栏
D
D
回复
0
查看
659
DelphiTeacher的专栏
D
后退
顶部