Einzelnen Beitrag anzeigen

Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#1

Eigenschaft überschreiben

  Alt 8. Apr 2005, 22:46
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]
  Mit Zitat antworten Zitat