Die Eigenschaften untergeordneter Klassen setzen

Aus RAD Studio
Wechseln zu: Navigation, Suche

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.

Siehe auch