![]() |
Event Property erst prüfen dann setzen
Ahoi,
ich habe mal eine Frage oder besser gesagt ein mittleres Problem, folgender Code:
Delphi-Quellcode:
property OnMyEvent:TNotifyEvent read FMyEvent write SetMyEvent;
Delphi-Quellcode:
Und zwar tut es nicht so wie ich es gerne hätte. Der Event ist Default auf eine interne Procedure gesetzt aber man soll ihn auch überschreiben können auf eine externe Procedure, im OI oder wo auch immer...
procedure TClass.SetMyEvent(const Value:TNotifyEvent);
begin FMyEvent:=Value; if NOT Assigned(FMyEvent) then begin FMyEvent:=Self.DefaultInternalEvent; end; MyComponent.Event:=FMyEvent; end; Weiß jemand woran das liegt oder welchen Fehler ich ggf. mache (abgesehen jetzt von vllt falschen var Namen oder so, da ich den Code jetzt nur so zum zeigen des Problems erstellt habe)? Die Delphi Version ist D5 Pro. mit Update 1 Grüße und danke schonmal im vorraus =) Daniel |
Re: Event Property erst prüfen dann setzen
Wenn du als Standardverhalten eine interne Prozedur haben willst, musst du sie im Konstructor oder im AfterCunstruction zuweisen, dann brauchst du auch die Set-Prozedur nicht mehr. ;)
|
Re: Event Property erst prüfen dann setzen
Ne ja klar das tut er ja auch soweit ;) Nur angenommen man will dann eine andere zuweisen geht das iwi nicht :-/ (zur Designzeit jetzt).
Und die Abfrage
Delphi-Quellcode:
ergibt immer True.
if NOT Assigned(FMyEvent) then
|
Re: Event Property erst prüfen dann setzen
Ich weiss nicht, obs hilft, aber nimm doch mal Probeweise das const weg.. Ich finde in dem Code keinen direkten Fehler :?
|
Re: Event Property erst prüfen dann setzen
Mööp, geht auch nicht :( Doppelklick im OI bei dem Event erstellt ihn zwar wie zuvor, aber lässt ihn leer und die Set Procedure setzt es wieder aufs internet Default, weil die Abfrage wieder True ergibt also angeblich nil.
|
Re: Event Property erst prüfen dann setzen
prüf mal ob Value zu begin der SetMethode assigned ist oder nicht.
|
Re: Event Property erst prüfen dann setzen
Hatte ich auch schon zu anfang, tut er genausowenig :(
|
Re: Event Property erst prüfen dann setzen
Da mir ja wohl anscheinden keiner helfen konnte oder wollte ;) habe ich es jetzt anders gelößt, aber komisch das es so geht... nunja egal.
Delphi-Quellcode:
constructor TClass.Create(AOwner:TComponent);
begin // ... MyComponent.Event:=DefaultInternalEvent; // ... end; procedure TClass.SetMyEvent(const Value:TNotifyEvent); begin FMyEvent:=Value; end; procedure TClass.DefaultInternalEvent(Sender:TObject); begin if Assigned(FMyEvent) then begin FMyEvent(Sender); end else begin // default ablauf // ... end; end; |
Re: Event Property erst prüfen dann setzen
dieses "MyComponent.Event:=FMyEvent;" was ist das? die eigene komponente? Ich selbst hab das selbst auch schon gemacht was du vorhattest und es hat geklappt. Ich denke es liegt an irgend etwas vom quelltext was du nicht gepostet hast.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz