Den Konstruktor überschreiben

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Die Komponentenklasse ändern

Wenn eine Komponente während des Entwurfs in einem Formular platziert oder zur Laufzeit generiert wird, setzt der Konstruktor der Komponente die Eigenschaftswerte. Wenn eine Komponente aus einer Formulardatei geladen wird, setzt die Anwendung alle Eigenschaftswerte, die während des Entwurfs geändert wurden.

Anmerkung:  Wenn Sie einen Konstruktor überschreiben, muss der neue Konstruktor den geerbten Konstruktor aufrufen, bevor er irgendwelche Operationen durchführt. Nähere Informationen finden Sie unter Methoden überschreiben.

Im vorliegenden Beispiel muss die neue Komponente den von TMemo geerbten Konstruktor so überschreiben, dass die Eigenschaft WordWrap mit False initialisiert wird. Zu diesem Zweck fügen Sie die Konstruktorüberschreibung in die Vorwärtsdeklaration ein und platzieren den neuen Konstruktor im implementation-Abschnitt der Unit:



 type
   TWrapMemo = class(TMemo)
   public                                                { Konstruktoren sind immer als public deklariert }
     constructor Create(AOwner: TComponent); override; { Diese Syntax ist immer gleich }
   end;
 .
 .
 .
 constructor TWrapMemo.Create(AOwner: TComponent)      { Dies kommt nach der Implementierung }
 begin
   inherited Create(AOwner);                     { Diesen Schritt IMMER zuerst! }
   WordWrap := False;                                  { Neuen Wert setzen }
 end;



 class PACKAGE TYellowMemo : public TMemo
 {
 public:
     virtual __fastcall TYellowMemo(TComponent* Owner); // Deklaration des Konstruktors
 __published:
     __property Color ;
 };
 __fastcall TYellowMemo::TYellowMemo(TComponent* Owner)
   : TMemo(Owner)                                // Zuerst die Konstruktorimplementierung...                                                  // ...Ruft den Konstruktor für Tmemo auf
 {
   Color = clYellow;                            // Farbe Gelb zuweisen
 }



Nun kann die neue Komponente in der Tool-Palette platziert und dann in ein Formular eingefügt werden. Beachten Sie, wie die Eigenschaft WordWrap wunschgemäß mit dem Wert False initialisiert wird.

Wenn Sie den Anfangswert einer Eigenschaft ändern, sollten Sie diesen neuen Wert zum Standard machen. Falls Sie den vom Konstruktor gesetzten Wert nicht mit dem angegebenen Standardwert abgleichen, kann Delphi den korrekten Wert nicht speichern und wiederherstellen.