Re: Events zur Designtime
Zitat:
Danke dir fürs Mitfiebern, und den Tipp mit den Videoprogrammen! In spätestens 30 Tagen wird eine Vollversion wohl interessant... |
Re: Events zur Designtime
So Geht's
Dein Komponente im protected Abschnitt
Delphi-Quellcode:
Dein Komponente im Implementations-Teil
protected
. procedure WMAreaInternalMouseMove(var Message: TWMMouseMove); message WM_MOUSEMOVE; .
Delphi-Quellcode:
und dann im Desing-Time Package einen Component-Editor ...
procedure TYourDesignInteractiveComponent.WMAreaInternalMouseMove(var Message: TWMMouseMove);
begin inherited; if not(csNoStdEvents in ControlStyle) then begin FMouseScreen.x := Message.XPos; FMouseScreen.y := Message.YPos; if (csDesignInteractive in ControlStyle) then begin {Mach was zur Design-Time} end else begin {Mach was zur Run-Time} end; paint; end; end;
Delphi-Quellcode:
das wars...interface TYourCE = class(TDefaultEditor) public function GetVerb(Index:Integer):string; override; function GetVerbCount: Integer; override; procedure ExecuteVerb(Index: Integer); override; end; procedure Register; implementation procedure Register; begin RegisterComponents('Palette', [TYourDesignInteractiveComponent]); RegisterComponentEditor(TYourDesignInteractiveComponent, TYourCE); . end; function TYourCE.GetVerbCount: Integer; begin result := 2; END; function TYourCE.GetVerb(Index: Integer):STRING; begin case Index of 0 : result := 'DesignTime Interactive ON'; 1 : result := 'DesignTime Interactive OFF'; end; end; procedure TYourCE.ExecuteVerb(Index: Integer); begin case Index of 0: begin with TYourDesignInteractiveComponent(Component) do begin ControlStyle := ControlStyle+[csDesignInteractive]; end; end; 1: begin with TYourDesignInteractiveComponent(Component) do begin ControlStyle := ControlStyle-[csDesignInteractive]; end; end; end; end; . . end. Warum... Du mußt die Win-Messages direkt abfangen. Events treten zur Desing-Time nicht ein.... Edit: Falscher Fehler ;-) |
Re: Events zur Designtime
Da brat mir einer nen Storch! Ich hab csDesignInteractive mit den geerbten Handlern, und eigene Handler ohne csDesignInteractive getestet. Kombiniert man es, geht es! LoCrux, ganz ganz heissen Dank! Damit lässt sich dann nun auch endlich realisieren, dass man ohne extra Formular auskommt, und man Teiltransparenz auch beim Bearbeiten hat. Ein riesen Vorteil! Dann werd ich mal umbauen...
|
Re: Events zur Designtime
Leider zu früh gefreut. MouseMove und ButtonEvents der Rechten Maustaste sind kein Problem, aber die linke und mittlere Maustaste kommen dennoch nicht durch.
Ich hatte meinen Versuch mit csDesignInteractive auch mit Handlern für die linke Maustaste gemacht, womit sich der Kreis irgendwie schließt. Hast du da evtl. auch noch einen Geheimtip? |
Re: Events zur Designtime
Jau....
Delphi-Quellcode:
same as above...
procedure WMAreaInternalLButtonUp(var Message: TWMLButtonUp); message WM_LBUTTONUP;
procedure WMAreaInternalRButtonUp(var Message: TWMRButtonUp); message WM_RBUTTONUP; procedure WMAreaInternalMButtonUp(var Message: TWMMButtonUp); message WM_MBUTTONUP; procedure CMAreaMouseEnter(var Message: TMessage); message CM_MOUSEENTER; procedure CMAreaMouseLeave(var Message: TMessage); message CM_MOUSELEAVE; |
Re: Events zur Designtime
Ja nun, genau das hab ich ja gemacht ;). Aber die Handler wurden nie erreicht. Actions der rechten Maustaste und MouseMove ja, linke und mittlere Taste nein. Alles gleich aufgebaut, alles in ein und der selben Instanz getestet.
Edit: MouseUp hab ich nun nicht getestet, sondern die jeweiligen Down-Ereignisse, aber die brauche ich zwingend auch. |
Re: Events zur Designtime
OOps.. mhhh.. muss mal schaun wie ich das gemacht hatte....
aber probier mal noch csClickEvents und csDoubleClicks im ControlStyle.... |
Re: Events zur Designtime
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz