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]