Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi properties (https://www.delphipraxis.net/138392-properties.html)

Mephisto090 9. Aug 2009 16:15


properties
 
hallo liebe Leute,

Ich will eine Klasse schreiben wo ein Property vorhanden ist was eine Log macht ich kenne sowas in der art wie OnError von anderen klassen sehe aber auch nicht durch wie die das machen das wenn immer irgendein Error kommt das die Procedure im Form getriggert wird

Also ein Property OnLog was immer gefeuert wird wenn ich bei der Klasse was in die Variable FLog rein schreibe.

Delphi-Quellcode:
Procedure TForm1.Log(Log: string);
begin
  mmoLog.Lines.Add(Log);
end;
Ich hoffe ihr versteht was ich schreibe.

soweit habe ich es schon ^^

Delphi-Quellcode:
property OnLog: String read FLog write FLog;
mfg
Mephisto

[edit=TBx]Druckfehler + verschoben, das ist kein Vorschlag für die CL! Mfg, TBx[/edit]

jaenicke 9. Aug 2009 16:29

Re: propertys
 
Laut der gewählten Sparte möchtest du also einen neuen Beitrag für die Code-Library vorschlagen? :gruebel:

Zur Frage:
Im Grunde funktioniert das so, dass die Klasse intern die Fehler abfängt und nur das Event auslöst statt die Fehler direkt als Exception an den Aufrufer weiterzuleiten.

Beispiel:
Delphi-Quellcode:
type
  TOnLogEvent = procedure(Sender: TObject; ALogText: String) of object;

  TBla = class
  private
    FOnLog: TOnLogEvent;
    procedure DoLog(AText: String);
  public
    property OnLog: TOnLogEvent read FOnLog write FOnLog;
  end;

  TBlaForm = class(TForm)
  ...
  private
    procedure TestLogEvent(Sender: TObject; ALogText: String);
  end;

omplementation

procedure TBla.DoLog(AText: String);
begin
  if Assigned(FOnLog) then
    FOnLog(Self, AText);
end;

procedure TBla.Something...
begin
  ...
  try
    ...
  except
    DoLog('Fehler');
  end;
end;

procedure TBlaForm.TestLogEvent(Sender: TObject; ALogText: String);
begin

end;

...

MyBla.OnLog := TestLogEvent;
...
Du deklarierst also eine entsprechende Eigenschaft und weist der eine entsprechende Methode zu.

// EDIT:
String als Typ? Du willst doch eine entsprechende Methode zuweisen, die aufgerufen wird, wenn das Event ausgelöst wird...

Mephisto090 9. Aug 2009 16:52

Re: properties
 
danke hat mir geholfen


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:47 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