1.当listbox1.Items.Count * listbox1.ItemHeight > listbox1.Height时, listbox会自动显示垂直滚动条,否则不显示. 可以根据这个判断垂直滚动条是否显示.2.listbox的水平滚动条不会自动加载,即使当item的内容超过显示范围,也不会自动加载水平滚动条.解决方法如下://根据item内容的长度自动加载listbox的水平滚动条 //在FormCreate中处理 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 begin maxwidth:=listbox1.Canvas.TextWidth(listbox1.Items.Strings[i]); end; sendmessage(listbox1.Handle,lb_sethorizontalextent,maxwidth+2,0) end;
就可以了你试试看看行不?
1.当listbox1.Items.Count * listbox1.ItemHeight > listbox1.Height时,
listbox会自动显示垂直滚动条,否则不显示.
可以根据这个判断垂直滚动条是否显示.2.listbox的水平滚动条不会自动加载,即使当item的内容超过显示范围,也不会自动加载水平滚动条.解决方法如下://根据item内容的长度自动加载listbox的水平滚动条
//在FormCreate中处理
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
begin
maxwidth:=listbox1.Canvas.TextWidth(listbox1.Items.Strings[i]);
end;
sendmessage(listbox1.Handle,lb_sethorizontalextent,maxwidth+2,0)
end;