Thema: Delphi Setter Problem

Einzelnen Beitrag anzeigen

Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

Re: Setter Problem

  Alt 9. Dez 2008, 07:44
Zitat von guidok:
Oh. Bedeutet das, dass bei so einer Konstruktion [...] die Setter-Methode nicht aufgerufen wird, wenn ich auf eine Eigenschaft, die von TStringList geerbt ist, zugreife sondern nur wenn ich der Property "Parameters" eine komplette StringList zuweise? Ist ja doof!
Ganz genau. Daher muss man sich oftmals überlegen ob man jetzt vererbt oder ob man die Klasse "benutzt". Bei Vererbung kann man ja ggf. alle Setter oder Getter überschreiben, aber eben leider mit dem Nachteil, dass man vielleicht gar nicht vererben will. Dafür nutzte ich dann meist eben diese Ereignis-Konstrukte
Delphi-Quellcode:
type
TChangedProp = (cpWert1, cpWert2);

TOnChange = procedure(Sender: TObject; ChangedProp: TChangedProp) of object;

TMyClass = class
private
  FWert1: Integer;
  FWert2: string;
  FOnChange: TOnChange;
  procedure SetWert1(Value: Integer);
  procedure SetWert2(Value: string);
public
  property Wert1: Integer read FWert1 write SetWert1;
  property Wert2: string read FWert2 write SetWert2;
  property OnChange: TOnChange read FOnChange write FOnChange;
end;

implementation

procedure TMyClass.SetWert1(Value: Integer);
var
  WertChanged: Integer;
begin
  WertChanged := FWert1 <> Value;
  FWert1 := Value;
  if WertChanged and Assigned(FOnChange) then FOnChange(Self, cpWert1);
end;

procedure TMyClass.SetWert2(Value: string);
var
  WertChanged: Integer;
begin
  WertChanged := FWert2 <> Value;
  FWert2 := Value;
  if WertChanged and Assigned(FOnChange) then FOnChange(Self, cpWert2);
end;
Aber ohne Garantie auf Funktion. Nur reingehackt

Gruß, Chris

[edit] sollte ja auf of object sein [/edit]
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  Mit Zitat antworten Zitat