ComboBox中的某个选项长度大于combobox的尺寸时,下拉不能显示全部的内容,因此想实现鼠标停留时,能提示该行全部内容。不知道怎么实现,好像有人说重载onhint事件,但是不知道怎么写啊。

解决方案 »

  1.   

    何必要这么麻烦呢,你直接把下拉列表的宽度加大不就成了
      ComboBox1.Perform(CB_SetDroppedWidth,288,0);
      //这里的288就是你需要把下拉列表增加到的宽度
      

  2.   


    procedure TForm1.FormCreate(Sender: TObject);
    begin
      ComboBox1.Style:= csOwnerDrawVariable;
    end;procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
      Rect: TRect; State: TOwnerDrawState);
    begin
      label1.Caption:= Combobox1.Items[Index];
      ComboBox1.Canvas.TextOut(Rect.Left , Rect.Top, Combobox1.Items[Index]);
    end;
      

  3.   


    uses Math;procedure TForm1.ComboBox1DropDown(Sender: TObject);
    var
      i, 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]) + 10);
      TComboBox(Sender).Perform(CB_SETDROPPEDWIDTH, vMaxWidth, 0);
    end;
      

  4.   


    procedure TfrmMain.cbb1DropDown(Sender: TObject);
    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]) + 8);
        TComboBox(Sender).Perform(CB_SETDROPPEDWIDTH,   vMaxWidth,   0);
    end;来一段代码,来自网上,刚用,根据下拉列表动态的扩展宽度。
      

  5.   

      combobox的style為csOwnerDrawVariable;
      label1.Caption:=Combobox1.Items[Index];
      ComboBox1.Canvas.TextOut(Rect.Left,Rect.Top,Combobox1.Items[Index]);
      

  6.   

    噢,是不是一行的内容在下拉combobox的时候看不全呢?
    如果是的话,把Hint设置为你所选行的内容,让他显示提示可以嘛?
      

  7.   

    我想过,但是行不通。
    hint只有鼠标停留在combobox组件上的时候才会显示,停留在下拉框的选项上面的时候不会显示。
      

  8.   

    可以考虑换一个解决思路:1.Combobox没有针对下拉项的操作句柄,也没有针对下拉选项Hint的选项,我的做法是以三方组件Devexpress的cxcombobox来解决这个问题(当然,也看楼主对三方组件的想法,开发桌面应用软件的不用Dev的少见罢:),方法是在Properties设置DropdownAutoWidth为True,这样下拉出来的项也就能自适应宽度了,而cxcombobox本身宽度不发生改变。
    2.更换组件,如果下拉框选项是从数据库中选出,且数量超过10个时,建议弹出个模态窗口,以一个dbGrid之类的显示,用户可以自如地检索,更快速地选择。