如何让TComboBox在Style=csDropDown时,单击Text区域也弹出下拉列表框?
由于其Text区域内好象没有Click事件,也缺少相应消息,不知如何处理
我对此研究了好久,找不到答案,望有经验的高手指点
由于其Text区域内好象没有Click事件,也缺少相应消息,不知如何处理
我对此研究了好久,找不到答案,望有经验的高手指点
解决方案 »
- 混合编程问题,C语言如何调用delphi的rtl库函数
- 有关delphi用together的文档生成功能的问题
- 关于DBGRIDEH选定记录行变颜色的怪问题
- 求助,在xp系统下怎样实现程序自动关机呀?
- 线程+报表fastreport
- 有用过ehlib和AdvanceStringGrid的吗?求助了!
- 如何用编程实现在他人的留言本留言?(留言本使用ASP编成)
- 如何在SQL SERVER数据库中插入数据?
- VirtualTrees控件里如果设置多级节点如何设计数据库(例如:高一年级,高一01班,高一01班全体,高一01班在籍)
- 自定义ActiveX属性页关联不成功,请帮个忙!
- 紧急求救, 关于ADO+sql2000发布问题
- TAdoQuery的onFilterRecord不起作用,为什么?
要求Style=csDropDown 时注意看清问题描述望各位控件高手踊跃参加
ComboBox1.DroppedDown := True;
就OK了
var
Form: TCustomForm;
begin
if (DragMode = dmAutomatic) and (Style = csDropDownList) and
(Message.XPos < (Width - GetSystemMetrics(SM_CXHSCROLL))) then
begin
SetFocus;
BeginDrag(False);
Exit;
end;
inherited;
if MouseCapture then
begin
Form := GetParentForm(Self);
if (Form <> nil) and (Form.ActiveControl <> Self) then
MouseCapture := False;
end;
end;这个就是我说的那个消息处理过程,但这个过程的可见性是Private!
FS的代码已经很清楚了,在点到Edit框中时,没有inherited,所以不能响应click,当然如果写在onenter,在setfocus以后点击也会无效。你可以
1 继承tcombobox自己写,重载窗口过程
2 在上面用一个panel或者edit等用“障眼法”
3 在容器form等中判断鼠标位置Message.XPos,Message.YPos或者GetMessagePos
---
抛砖引玉,献丑之言。
是大富翁上的一高手给指点的。现公布给大家,分享
继承TcomboBox,覆盖 ComboWndProc(message:Tmessage);
在其中处理WM_LBUTTONDOWN 即可问题结束
以上每人5分....