Die Eigenschaften untergeordneter Klassen setzen
Nach oben zu Grafische Komponenten erzeugen - Index
In einem letzten Schritt bei der Erzeugung der Stift- und Pinselklassen müssen Sie dafür sorgen, dass sich die Beispielkomponente nach jeder Änderung am Stift oder am Pinsel neu zeichnet. In beiden Klassen gibt es das Ereignis OnChange. Sie können also in TSampleShape einfach eine Methode schreiben und sie den beiden OnChange-Ereignissen zuweisen.
Fügen Sie der Beispielkomponente die folgenden Methoden hinzu, und aktualisieren Sie den Konstruktor so, dass er den genannten Ereignissen die neue Methode zuweist:
type
TSampleShape = class(TGraphicControl)
published
procedure StyleChanged(Sender: TObject);
end;
.
.
.
implementation
.
.
.
constructor TSampleShape.Create(AOwner: TComponent);
begin
inherited Create(AOwner); { Immer den geerbten Konstruktor aufrufen }
Width := 65;
Height := 65;
FPen := TPen.Create; { Stift erzeugen }
FPen.OnChange := StyleChanged; { Dem OnChange-Ereignis die Methode zuweisen }
FBrush := TBrush.Create; { Pinsel erzeugen }
FBrush.OnChange := StyleChanged; { Dem OnChange-Ereignis die Methode zuweisen }
end;
procedure TSampleShape.StyleChanged(Sender: TObject);
begin
Invalidate; { Komponente löschen und neu zeichnen }
end;
// Header-Datei
class PACKAGE TSampleShape : public TGraphicControl
{
.
.
.
public:
void __fastcall StyleChanged(TObject* Owner);
.
.
.
};
// Implmentierungsdatei
__fastcall TSampleShape::TSampleShape(TComponent* Owner) : TGraphicControl(Owner)
{
Width = 65;
Height = 65;
FBrush = new TBrush();
FBrush->OnChange = StyleChanged;
FPen = new TPen();
FPen->OnChange = StyleChanged;
}
// auch die Methode StyleChanged in die Implementierungsdatei einbeziehen<?Pub Caret?>
void __fastcall TSampleShape::StyleChanged( TObject* Sender)
{
Invalidate(); // Komponente neu darstellen
}
Die Komponente zeichnet sich nun nach jeder Änderung an einer der Eigenschaften Pen oder Brush neu.