delphi7 自动调整combobox下拉列表宽度

现有一个Form1和一个ComboBox1,列表中有中文和数字,希望能使ComboBox下拉列表自动调整宽度,让它适应列表中最长的条目,希望是完整的程序代码和使用方法,就... 现有一个Form1和一个ComboBox1,列表中有中文和数字,希望能使ComboBox下拉列表自动调整宽度,让它适应列表中最长的条目,希望是完整的程序代码和使用方法,就是希望直接复制上去可以用的那种,本人新手,望多关照。
有点急 ,我自己也有一个代码,但是只能准确算出英文的长度,如果列表中有中文往往算不准确,致使最大宽度比准确的要小,也就是不能完整显示,还有部分显示不出来。
忘了说了,还要保持原来的列表长度不变,只是选择时列表自动调整
展开
 我来答
bangke007
2010-05-13 · TA获得超过170个赞
知道小有建树答主
回答量:90
采纳率:0%
帮助的人:72.4万
展开全部
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
ComboBox1: TComboBox;
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin

end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var strlen:integer;
i:integer;
begin
strlen:=length(combobox1.Items[0]);
for i:=1 to combobox1.Items.Count-1 do//计算最大长度
begin
if length(combobox1.Items[i])>strlen then
strlen:=length(combobox1.Items[i]);
end;
combobox1.Width:=strlen*9;//控制width属性
end;
end.
我把代码写在窗体的鼠标移动事件中了,你也可以写在其他过程中。主要是控制组合框的width属性,通过列表框中的每个items的长度来改变。倒数第三行的strlen*9是可以改变的,乘以几都可以,自己试试乘几合适。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式