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;
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;来一段代码,来自网上,刚用,根据下拉列表动态的扩展宽度。
ComboBox1.Perform(CB_SetDroppedWidth,288,0);
//这里的288就是你需要把下拉列表增加到的宽度
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;
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;
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;来一段代码,来自网上,刚用,根据下拉列表动态的扩展宽度。
label1.Caption:=Combobox1.Items[Index];
ComboBox1.Canvas.TextOut(Rect.Left,Rect.Top,Combobox1.Items[Index]);
如果是的话,把Hint设置为你所选行的内容,让他显示提示可以嘛?
hint只有鼠标停留在combobox组件上的时候才会显示,停留在下拉框的选项上面的时候不会显示。
2.更换组件,如果下拉框选项是从数据库中选出,且数量超过10个时,建议弹出个模态窗口,以一个dbGrid之类的显示,用户可以自如地检索,更快速地选择。