读书人

ComboBox上拉后鼠标停留在哪一项下就

发布时间: 2013-01-07 10:02:24 作者: rapoo

ComboBox下拉后鼠标停留在哪一项上,就在label中显示该项的text,怎么实现?
ComboBox中的某个选项长度大于combobox的尺寸时,下拉不能显示全部的内容,因此想实现鼠标停留时,能提示该行全部内容。不知道怎么实现,好像有人说重载onhint事件,但是不知道怎么写啊。
[解决办法]
何必要这么麻烦呢,你直接把下拉列表的宽度加大不就成了


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;


来一段代码,来自网上,刚用,根据下拉列表动态的扩展宽度。
[解决办法]
引用:
我这个界面比较紧凑,不能改宽度


是下拉列表宽度,不用改动你界面。

3、4楼其实也是这个办法。


[解决办法]
  combobox的stylecsOwnerDrawVariable;
label1.Caption:=Combobox1.Items[Index];
ComboBox1.Canvas.TextOut(Rect.Left,Rect.Top,Combobox1.Items[Index]);

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


用鼠标勾子行不行?

读书人网 >.NET

热点推荐