📄 dtlist.html
字号:
<html>
<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
<meta NAME="Author" CONTENT="FuGui">
<meta NAME="GENERATOR" CONTENT="Mozilla/4.04 [en] (Win95; I) [Netscape]">
<title>如何给TListBox加上水平滚动条</title>
</head>
<body TEXT="#000099" BGCOLOR="#FFFFFF" LINK="#0000EE" VLINK="#551A8B" ALINK="#FF0000" BACKGROUND="background.gif" tppabs="http://www.nease.net/~borland/delphi/tips/background.gif">
<h1>
如何给TListBox加上水平的滚动条?</h1>
<p> Delphi 的 TListBox元件自动实现了垂直的滚动条,当ListBox不能显示全部的菜单(Item)时,这个垂直的滚动条就会出现。然而,当菜单的宽度比ListBox宽时水平的滚动条却不会出现。以下的程序就是处理这个问题的。
<p> 在你的Form的OnCreate事件中添加以下代码:
<br>procedure TForm1.FormCreate(Sender: TObject);
<br><b>var</b>
<br> i, MaxWidth: integer;
<br><b>begin</b>
<br> MaxWidth := 0;
<br> <b>for</b> i := 0 <b>to</b> ListBox1.Items.Count - 1 <b>do</b>
<br> <b>if</b> MaxWidth < ListBox1.Canvas.TextWidth(ListBox1.Items.Strings[i])
<b>then</b>
<br> MaxWidth := ListBox1.Canvas.TextWidth(ListBox1.Items.Strings[i]);
<br> SendMessage(ListBox1.Handle, LB_SETHORIZONTALEXTENT, MaxWidth+2,
0);
<br><b>end</b>;
<p> 以上的代码首先得到ListBox中最长Item的长度,然后用LB_SETHORIZONTALEXTENT消息设置ListBox的水平滚动的宽度,宽度加2是为了给右面留2个点的边。
<br>
<br>
<p>Tips来源:The Cobb Group's Delphi Developer's Journal
<br>
<br>
<p>本页版主:<a HREF="mailto:fgui@usa.net">傅贵</a>,最后修改日期:1998.2.19
<br>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -