AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Event Property erst prüfen dann setzen

Ein Thema von static_cast · begonnen am 18. Jan 2005 · letzter Beitrag vom 22. Jan 2005
Antwort Antwort
static_cast

Registriert seit: 19. Okt 2003
Ort: Peine
300 Beiträge
 
#1

Event Property erst prüfen dann setzen

  Alt 18. Jan 2005, 15:36
Ahoi,

ich habe mal eine Frage oder besser gesagt ein mittleres Problem, folgender Code:

property OnMyEvent:TNotifyEvent read FMyEvent write SetMyEvent;
Delphi-Quellcode:
procedure TClass.SetMyEvent(const Value:TNotifyEvent);
begin
  FMyEvent:=Value;

  if NOT Assigned(FMyEvent) then
  begin
    FMyEvent:=Self.DefaultInternalEvent;
  end;
  
  MyComponent.Event:=FMyEvent;
end;
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...

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
Daniel M.
"The WM_NULL message performs no operation. An application sends the WM_NULL message if it wants to post a message that the recipient window will ignore."
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#2

Re: Event Property erst prüfen dann setzen

  Alt 18. Jan 2005, 15:39
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.
  Mit Zitat antworten Zitat
static_cast

Registriert seit: 19. Okt 2003
Ort: Peine
300 Beiträge
 
#3

Re: Event Property erst prüfen dann setzen

  Alt 18. Jan 2005, 15:51
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
if NOT Assigned(FMyEvent) then ergibt immer True.
Daniel M.
"The WM_NULL message performs no operation. An application sends the WM_NULL message if it wants to post a message that the recipient window will ignore."
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#4

Re: Event Property erst prüfen dann setzen

  Alt 18. Jan 2005, 15:53
Ich weiss nicht, obs hilft, aber nimm doch mal Probeweise das const weg.. Ich finde in dem Code keinen direkten Fehler
  Mit Zitat antworten Zitat
static_cast

Registriert seit: 19. Okt 2003
Ort: Peine
300 Beiträge
 
#5

Re: Event Property erst prüfen dann setzen

  Alt 18. Jan 2005, 15:59
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.
Daniel M.
"The WM_NULL message performs no operation. An application sends the WM_NULL message if it wants to post a message that the recipient window will ignore."
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Event Property erst prüfen dann setzen

  Alt 18. Jan 2005, 16:28
prüf mal ob Value zu begin der SetMethode assigned ist oder nicht.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
static_cast

Registriert seit: 19. Okt 2003
Ort: Peine
300 Beiträge
 
#7

Re: Event Property erst prüfen dann setzen

  Alt 18. Jan 2005, 16:50
Hatte ich auch schon zu anfang, tut er genausowenig
Daniel M.
"The WM_NULL message performs no operation. An application sends the WM_NULL message if it wants to post a message that the recipient window will ignore."
  Mit Zitat antworten Zitat
static_cast

Registriert seit: 19. Okt 2003
Ort: Peine
300 Beiträge
 
#8

Re: Event Property erst prüfen dann setzen

  Alt 20. Jan 2005, 09:51
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;
Daniel M.
"The WM_NULL message performs no operation. An application sends the WM_NULL message if it wants to post a message that the recipient window will ignore."
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Event Property erst prüfen dann setzen

  Alt 22. Jan 2005, 14:46
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:05 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