如何改变dbcombobox的下拉列表框宽度为其中items中的最长字符串长度?
我已用了CB_SETITEMHEIGHT,只对combobox有效~~LB_SETCOLUMNWIDTH 这个可以吗?

解决方案 »

  1.   

    貌似delphi自带的dbcombobox控件没有这个功能吧,第三方控件可以实现。
      

  2.   


    DBComboBox1.Perform(CB_SETDROPPEDWIDTH,   500,   0); 
    这样设置没有问题,只有在DBComboBox1.Items.Count>0时才能看到效果
      

  3.   

    先循环以下items,然后取最大长度
      

  4.   


    var
      i,maxlen:integer;
    begin
      maxlen := 0;
      for i := 0 to DBComboBox1.Items.Count - 1 do
      begin
        if DBComboBox1.Canvas.TextWidth(DBComboBox1.Items.Strings[i]) > maxlen then
          maxlen := Self.Canvas.TextWidth(DBComboBox1.Items.Strings[i]);
      end;
      DBComboBox1.Perform(CB_SETDROPPEDWIDTH,   maxlen+5,   0);
    end;
      

  5.   

    OK了~~
    感谢bdmh,刚开始是我放错地方了,我放到DrawItem事件下,应该放在DropDown事件下的~~~
    结贴~~