Wie kann ich auf OnMouseEnter und OnMouseLeave Events reagieren?
Wie kann ich auf MouseEnter und MouseLeave reagieren, wenn es diese Events in einer Komponente nicht gibt?
Ganz einfach: Man muß die entsprechenden Windows nachrichten selber anfangen, hier am Beispiel eines tEdit:
interface type TTestEdit = class(TEdit) private FOnMouseEnter: TNotifyEvent; FOnMouseLeave: TNotifyEvent; procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER; procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE; published property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter; property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave; end; implementation procedure TTestEdit.CMMouseEnter(var Message: TMessage); begin inherited; if not(csLoading in ComponentState) and Assigned(FOnMouseEnter) then begin FOnMouseEnter(Self); end; end; procedure TCustomdpEdit.CMMouseLeave(var Message: TMessage); begin inherited; if not(csLoading in ComponentState) and Assigned(FOnMouseLeave) then begin FOnMouseLeave(Self); end; end;
Delphi 1 | Delphi 2 | Delphi 3 | Delphi 4 |
nicht getestet | Version nicht betroffen | getestet |
siehe auch: