关于ListBox

river99 2000-01-18 01:02:00
VB6.0中的ListBox控件有一个缺点,没有水平滚动条,当内容的长度大于控件的宽度时,
后面的内容看不到。不知有无办法解决(有类似的控件,但不能使用ListView控件)
...全文
231 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
smallBridge 2000-01-18
  • 打赏
  • 举报
回复

//请参考下面的DELPHI程序,把它改成VB格式即可
procedure TForm1.Button1Click(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[i]) then
MaxWidth := ListBox1.Canvas.TextWidth(ListBox1.Items[i]);
SendMessage(ListBox1.Handle, LB_SETHORIZONTALEXTENT, MaxWidth+2, 0);
end;
Venne 2000-01-18
  • 打赏
  • 举报
回复
否定我的第二个回答,因此列表框控件缺省的创建风格里含有对水平滚动条的支持,因此只需要发消息即可:
先建立一个新模块,然后使用API文本查看器拷贝一个关于Sendmessage的声明,和一个LB_SETHORIZONTALEXTENT常量的声明,粘贴到模块中,
在表单的ONLOAD事件里,写以下代码:
dim i as long
sendmessage(list1.hwnd,LB_SETHORIZONTALEXTENT,list1.width+1,0)
要显式说明设置的滚动条宽度比列表框宽,水平滚动条会显示出来,否则水平滚动条会消失。

ltp3 2000-01-18
  • 打赏
  • 举报
回复
1.做一个足够宽的listbox,放到一个容器内(如Frame)。然后写代码用滚动条滚动listbox.
2.用MSFlexGrid代替listbox。将内容拆开成n个字符一组,放入MSFlexGrid,去掉网格线。
Venne 2000-01-18
  • 打赏
  • 举报
回复
对,要使用API函数
必须要使用GetWINDOWLong和SetWindowLong来设置LIST的风格之中有一个
WS_HSCROLL;
这样才能响应LB_SETHORIZONTALEXTENT消息。

WHQ 2000-01-18
  • 打赏
  • 举报
回复
Also, to respond to the LB_SETHORIZONTALEXTENT message, the list box must have been defined with the WS_HSCROLL style. Then if the width of the list box is smaller than the value of wParam, the horizontal scroll bar horizontally scrolls items in the list box. If the width of the list box is equal to or greater than this value, the horizontal scroll bar is hidden.
kxy 2000-01-18
  • 打赏
  • 举报
回复
试一试给ListBox发一条消息LB_SETHORIZONTALEXTENT

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧