combobox的问题(100分)

  • 主题发起人 主题发起人 阿韬
  • 开始时间 开始时间

阿韬

Unregistered / Unconfirmed
GUEST, unregistred user!
delphi中的TComBoBox控件,如果我的Item的text比这个控件的宽度要长的话,选择
下拉的时候就只能看到一部分,能不能设定看到的长度?
 
写OnDrawItem事件,
 
给它加上个水平滚动条
 
procedure TForm1.Button1Click(Sender: TObject);
begin
combobox1.perform(CB_SETDROPPEDWIDTH,combobox1.width+200,0);
end;
 
楼上作法基本上等同于
PostMessage(ComboBox1.Handle,CB_SETDROPPEDWIDTH,combobox1.width+200,0);
殊途同归
 
呵呵!
我看的懂,但自己写不出来!
 
你可以把以下语句放在form 的 OnCreate 事件中。

combobox1.perform(CB_SETDROPPEDWIDTH,combobox1.width+200,0);
 

你的方法不错,不过200限死了大小。
也许可以这样参考,循环得到某一最长的Item,
再用TextWidth得到宽度,在OnDropDown事件里实现?
 
你可以改变Combox各项内容时增加一些语句:
var
MaxWidth, W: Integer;
i: Integer;
begin
MaxWidth := 0;
for i := 0 to ComboBox1.Items.Count - 1 do
begin
w := ComboBox1.Canvas.TextWidth(ComboBox1.Items.Strings);
if MaxWidth < w then
w := MaxWidth;
end;

PostMessage(ComboBox1.Handle, CB_SETDROPPEDWIDTH, MaxWidth, 0);
end;
 
多谢各位坐的这么直,靠得这么近来听我提问。
 
后退
顶部