var MaxWidth,Width,i : integer; begin MaxWidth:=0; for i:=ComboBox1.Items.Count-1 to 0 do begin Width:=ComboBox1.Font.Size * Length(ComboBox1.Items[i]); if Width>MaxWidth then MaxWidth:=Width; //找出最大值 end; ComboBox1.Text:=ComboBox1.Items[0]; //发送消息以确定显示区域的宽度 SendMessage(ComboBox1.Handle,CB_SETDROPPEDWIDTH,MaxWidth,0); end;
错了.改一下: for i:=ComboBox1.Items.Count-1 downto 0 do
不光是这个控件,其它的如:TDBlistbox
MaxWidth,Width,i : integer;
begin
MaxWidth:=0;
for i:=ComboBox1.Items.Count-1 to 0 do
begin
Width:=ComboBox1.Font.Size * Length(ComboBox1.Items[i]);
if Width>MaxWidth then
MaxWidth:=Width; //找出最大值
end;
ComboBox1.Text:=ComboBox1.Items[0];
//发送消息以确定显示区域的宽度
SendMessage(ComboBox1.Handle,CB_SETDROPPEDWIDTH,MaxWidth,0);
end;
for i:=ComboBox1.Items.Count-1 downto 0 do
var
I: Integer;
vMaxWidth: Integer;
begin
vMaxWidth := TComboBox(Sender).Width;
for I := 0 to TComboBox(Sender).Items.Count - 1 do
vMaxWidth := Max(vMaxWidth,
TComboBox(Sender).Canvas.TextWidth(TComboBox(Sender).Items[I]) + 15);
TComboBox(Sender).Perform(CB_SETDROPPEDWIDTH, vMaxWidth, 0);
end;
你的方法我已经调试成功,谢谢!laihecongxi(兴哥) 你的方法我马上试一下,不知道你们两个的方法谁的性能更好点啊?to: lzf1010(深宇) HINT属性我查过了帮助,发现是一个string型,怎么弄