N'abend!
Ich sitzt jetzt schon seit 4 Stunden an einem Problem:
Ich leite eine Komponente von TTimer ab. Dafür muss ich die Eigenschaft "Interval" überschreiben, weil ich deren Schreibmethode erweitern möchte.
In der
OH steht folgendes:
Delphi-Quellcode:
Die folgenden Deklarationen zeigen, wie Eigenschaften überschrieben werden können:
type
TAncestor = class
...
protected
property Size: Integer read FSize;
property Text: string read GetText write SetText;
property Color: TColor read FColor write SetColor stored False;
...
end;
type
TDerived = class(TAncestor)
...
protected
property Size write SetSize;
published
property Text;
property Color stored True default clBlue;
...
end;
Beim Überschreiben von Size wird die Angabe write hinzugefügt, damit der Wert der Eigenschaft geändert werden kann. Die Sichtbarkeit der Eigenschaften Text und Color wird von protected in published geändert. Für die Eigenschaft Color wird außerdem festgelegt, dass sie in der Formulardatei gespeichert wird, wenn sie einen anderen Wert als clBlue hat.
Hier ist allerdings nicht die Implementation gezeigt. Momentan sieht das ganze bei mir so aus:
Delphi-Quellcode:
type
TZeitgeber = class(TTimer)
private
procedure SetInterval(const Value: Cardinal);
published
property Interval write SetInterval;
{ ... }
procedure TZeitgeber.SetInterval(const Value: Cardinal);
begin
Interval := Value;
end;
Das sind die relevanten Teile. Wenn man sich das ansieht, kommt man schnell darauf, dass hier ein Stacküberlauf produziert wird!
Wie kann ich dieses Problem lösen? Wenn ich die Zeile "Interval := Value;" weglasse kann ich der Eigenschaft keine Werte mehr zuuweisen!
[EDIT]Hatte die
OH als Zitat, wodurch die Formatierung (Leerzeichen) nicht beachtet wurden! >> Delphi-Code draus gemacht![/EDIT]