dtlist.html

来自「对于学习很有帮助」· HTML 代码 · 共 42 行

HTML
42
字号
<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>
&nbsp;

<p>&nbsp;&nbsp;&nbsp; Delphi 的 TListBox元件自动实现了垂直的滚动条,当ListBox不能显示全部的菜单(Item)时,这个垂直的滚动条就会出现。然而,当菜单的宽度比ListBox宽时水平的滚动条却不会出现。以下的程序就是处理这个问题的。

<p>&nbsp;&nbsp;&nbsp; 在你的Form的OnCreate事件中添加以下代码:
<br>procedure TForm1.FormCreate(Sender: TObject);
<br><b>var</b>
<br>&nbsp; i, MaxWidth: integer;
<br><b>begin</b>
<br>&nbsp; MaxWidth := 0;
<br>&nbsp; <b>for</b> i := 0 <b>to</b> ListBox1.Items.Count - 1 <b>do</b>
<br>&nbsp; <b>if</b> MaxWidth &lt; ListBox1.Canvas.TextWidth(ListBox1.Items.Strings[i])
<b>then</b>
<br>&nbsp;&nbsp;&nbsp; MaxWidth := ListBox1.Canvas.TextWidth(ListBox1.Items.Strings[i]);
<br>&nbsp; SendMessage(ListBox1.Handle, LB_SETHORIZONTALEXTENT, MaxWidth+2,
0);
<br><b>end</b>;

<p>&nbsp;&nbsp;&nbsp; 以上的代码首先得到ListBox中最长Item的长度,然后用LB_SETHORIZONTALEXTENT消息设置ListBox的水平滚动的宽度,宽度加2是为了给右面留2个点的边。
<br>&nbsp;
<br>&nbsp;

<p>Tips来源:The Cobb Group's Delphi Developer's Journal
<br>&nbsp;
<br>&nbsp;

<p>本页版主:<a HREF="mailto:fgui@usa.net">傅贵</a>,最后修改日期:1998.2.19
<br>&nbsp;
</body>
</html>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?