Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

Re: eigenem Objekt Ereignisse hinzufügen

  Alt 16. Nov 2008, 16:24
Zitat von Gargamel:
Hi

Ja, ein paar Sachen sind mir noch nicht ganz klar.
Zitat von Gargamel:
Zeile 24: Wozu wurde TNotifyPersonEvent deklariert?
Um einen eigenen EventType zu deklarieren. Mit TNotifyEvent kann ich nur Sender als Parameter übergeben.
Will ich mehr übergeben, dann macht man das so. Mit diesem Event kann ich also hier auch gleich VName und NName übergeben. (so geschieht in Zeile 82)

Zitat von Gargamel:
Zeile 44: Müßte das nicht FOnNameChange2 und SetOnNameChange2 lauten?
ja bitte ändern

Zitat von Gargamel:
Zeile 41-44:
Ich vermute, daß es property wegen dem Objektinspektor gibt, damit eine Wertzuweisung intern einen Funktionsaufruf zur Folge hat (via read und write hinter der property-Eigenschaft).
Nicht nur das, dadurch kann ich steuern, ob eine Eigenschaft z.b. nur lesend oder nur schreibend ist, und ich kann auf diese Ereignisse auch noch reagieren. Der Vorteil ist, dass bei der Benutzung der Klasse einfach einer anscheinlichen Variablen der Klasse ein Wert zugewiesen wird, was die Programmierung wesentlich erleichtert. Also statt GetVariable und SetVariable arbeite ich einfach mit Variable und fertig.

eine Property kann ich auch wie folgt deklarieren:
Delphi-Quellcode:
private
  FVar : integer;
  function GetVar : integer;
  procedure SetVar( Value : integer);
public
  property Var1 : integer read GetVar write SetVar; // Lesen und Schreiben via func/proc
  property Var2 : integer read FVar; // Nur Lesen direkt
  property Var3 : integer write FVar; // Nur Schreiben direkt
  property Var4 : integer read GetVar; write FVar; // Lesen via func, Schreiben direkt
Zitat von Gargamel:
Zeile 109: Hier wird die Funktion definiert, die bei Ereignis XY ausgeführt werden soll?
Nein, definiert wird die in Zeile 95.
In Zeile 109 wird diese procedure an die Klasse gehängt.
Ausgeführt wird die, wenn die Klasse den Event feuert (Zeile 68/79), darum wird auch in Zeile 66/77 überprüft, ob für dieses Event auch ein Ziel angegeben wurde.

Zitat von Gargamel:
Das Zusammenspiel von SetVName, SetOnNameChange1 und FOnNameChange ist mir noch nicht ganz klar.
Wenn Person.VName := 'Peter' ausgeführt wird, dann wird die proc TPerson.SetVName( 'Peter' ) aufgerufen.
Hier wird der Variablen TPeter.FVName der Wert 'Peter' zugewiesen.
Dann werden die Events gefeuert.

Wenn du das Programm mal ausführst, dann solltest du eigentlich sehen, was da passiert.
Vor allem kommentiere doch mal wahlweise die Zeile 109 und 110 aus und schau was passiert.

cu

Oliver
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat