Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by DeddyH,
24. Mai 2011
Schön, dass es jetzt "Klick" gemacht hat. Aber um das noch einmal klarzustellen: Events machen nur dann Sinn, wenn sie eine Schnittstelle zur "Außenwelt" darstellen. Geht es nur um Vererbung, dann reichen ja auch virtuelle Methoden (ggf. sogar abstrakte in der Basisklasse).
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by DeddyH,
24. Mai 2011
Wenn Du schon selbst nicht mehr weißt, wie Du die Methode deklariert hast:
procedure TForm1.MyEvent(Sender: TObject; sAction: String); //Sender-Parameter muss dazu
Ich habe mal schnell ein Beispiel gebaut:
type
TOnRenameEvent = procedure(Sender: TObject; NewName: string) of object;
THund = class
private
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by DeddyH,
24. Mai 2011
Du kannst dem Event doch jede kompatible Methode zuweisen, egal welchem Objekt sie gehört. Soll das aber immer dieselbe aus Deinem TMyForm sein, dann brauchst Du auch kein Event wie bereits erwähnt.
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by DeddyH,
24. Mai 2011
Richtig, das ist ja der Sinn von Events: man kann bei definierten Ereignissen eingreifen. Wenn man das gar nicht beabsichtigt, kann man ja auch stumpf irgendeine fixe Methode aufrufen oder dergleichen.
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by DeddyH,
24. Mai 2011
Wieso musst Du OnShow nichts zuweisen? Wenn Du im Objektinspektor nichts im OnShow einträgst, dann wird das Event ja auch nicht gefeuert.
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by DeddyH,
24. Mai 2011
procedure TfrmMain.Wuppdi(Sender:TObject; sAction: String); //muss natürlich als Methode deklariert sein
begin
ShowMessage('Da schau her: ' + sAction);
end;
procedure TfrmMain.Button1Click(Sender: TObject);
var
test: TMyForm;
begin
test := TMyForm.Create(nil);
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by DeddyH,
24. Mai 2011
Und wo wird der Property eine Methode zugewiesen?
MyForm := TMyForm.Create(nil);
MyForm.MyEvent := Methode; //das hier muss ja irgendwo stehen
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by DeddyH,
24. Mai 2011
Ich hatte Dich zuerst falsch verstanden, aber wenn ich jetzt richtig denke, müsste es so funktionieren:
type
TMyEvent = procedure(Sender:TObject; sAction: String) of object;
TMyForm = class(TForm)
private
{ Private-Deklarationen }
FOnSetMyParams: TMyEvent;
public
{ Public-Deklarationen }
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by DeddyH,
24. Mai 2011
Die Property im private und deren Setter (der allerdings nicht zugewiesen wurde) im public-Abschnitt? Das kann ja nicht stimmen, oder?