如何让combobox组件不响应鼠标滚动,(200)

  • 主题发起人 主题发起人 comorange
  • 开始时间 开始时间
C

comorange

Unregistered / Unconfirmed
GUEST, unregistred user!
如何让combobox组件不响应鼠标滚动, 我一个窗体里有一个combobox组件和一个paintbox组件, 我想实现在paintbox上画图响应鼠标滚动, 但是在选择combobox里一个选项后,鼠标滚动,就只响应combobox选择 如何禁止这个事件吗???----我在CXGRID有个字段设成了COMBOBOX....就是当这字段得到焦点时要禁示鼠标滚动,要不然我滚动一下,字段值就改变了,只想通过下拉选择改变值.
 
procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);beginif ActiveControl = 你的Cmb then Handled := true;end;
 
不错的方法!多个Combobox控制方法: if (ActiveControl Is TComboBox) then Handled := true;
 
老大,好像不行...
 
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) cbb1: TComboBox; procedure FormCreate(Sender: TObject); private { Private declarations } procedure comboboxWndProc(var msg : TMessage); public { Public declarations } end;var Form1: TForm1; cbbHandle:THandle; cbbProcPointer:Pointer;implementation{$R *.dfm} procedure TForm1.comboboxWndProc(var msg: TMessage);begin//case Msg.Msg of WM_MOUSEWHEEL: begin //ShowMessage('禁止滚动'); Exit; end;end;msg.Result :=CallWindowProc(cbbProcPointer,cbbHandle,msg.Msg ,msg.WParam,msg.LParam );end;procedure TForm1.FormCreate(Sender: TObject);varp:Pointer;begincbbHandle:=Self.cbb1.Handle;if cbbHandle>0 thenbegin cbbProcPointer:=Pointer(GetWindowLong(cbbHandle, GWL_WNDPROC) ); p:=Classes.MakeObjectInstance(comboboxWndProc); SetWindowLong(cbbHandle,GWL_WNDPROC,Integer(p));end; //ShowMessage(IntToStr(edtHandle));end;end.
 
这样是不是太麻烦了吗?还有这样也不行吧
 
我测试通过的,你要你实事为依据撒程序稍微改一下就可以实现鼠标在combobox里可以滚动,在外面不可以滚动这是窗口子类化的技术,非常优雅的,呵呵
 
我在CXGRID有个字段设成了COMBOBOX....就是当这字段得到焦点时要禁示鼠标滚动,要不然我滚动一下,字段值就改变了,只想通过下拉选择改变值.----按你那样写没办法控制.
 
问题解决了....procedure TfmBGEdit.tbBGFlowInfoFlowNameGetProperties( Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; var AProperties: TcxCustomEditProperties);begin inherited; AProperties.UseMouseWheel := False;end;----吗的写EXPRESS控件的人真是'疯子'
 
多人接受答案了。
 
后退
顶部