Home » Tutorials » VCL » Komponenten zur Laufzeit erstellen

Komponenten zur Laufzeit erstellen

Arbeiten mit Eigenschaften

Der nächste Schritt ist das Anzeigen der Komponenten auf dem Formular.
Wir schreiben direkt nach „MyToolbar := …“ weiter. Die Komponenten müssen auf dem Formular platziert werden.
Geben Sie nun „MyRichedit.Parent := Form1;“ ein. Parent (Eltern) gibt an, wo die Komponente drauf liegt. Diese Eigenschaft haben nur fensterorientierte Komponenten (Nachfahren von TControl). Sie ähnelt dem „Owner“, den wir im letzten Abschnitt kennengelernt haben, den alle Komponenten (auch die nicht sichtbaren, Nachfahren von TComponent) haben. Parent ist (wie Owner) für die automatische Freigabe seiner „Kinder“ zuständig, aber auch für die Anordnung auf dem Bildschirm. Z.B. kann so festgelegt werden, ob eine Komponente direkt auf dem Formular liegt oder auf einem Panel. Wenn Sie eine Komponente per Mausklick auf das Fenster setzen, geschieht das automatisch.
Das Gleiche machen wir wieder mit der Toolbar: „MyToolbar.Parent := Form1;“.

MyToolbar := TToolbar.Create(self);
  MyRichedit.Parent := Form1;
  MyToolbar.Parent := Form1;
end;

Nun haben die Komponenten einen Platz gefunden. Genauere Positionierungen wären über die Eigenschaften Left und Top möglich.
Das war aber leider noch nicht alles, wir können sie noch gar nicht sehen.
„Show“ heißt das Zauberwort. Geben Sie jetzt „MyRichedit.Show;“ und natürlich „MyToolbar.Show;“ ein.

 MyToolbar.Parent := Form1;
  MyRichedit.Show;
  MyToolbar.Show;

Jetzt sehen wir endlich etwas, aber nicht dort, wo wir es wollen. Show bedeutet übrigens das Gleiche wie „Visible:=true“.
Wir möchten in diesem Beispiel das Richedit immer in der Mitte und über das ganze Formular gezogen haben: „MyRichedit.Align := AlClient;“. Die Toolbar ist schon automatisch am richtigen Ort.
Sie können jetzt wie gewohnt Eigenschaften bearbeiten, natürlich aber nur per Code.
Beispiele:

  • Schriftfarbe Rot
  • Hintergrundfarbe Hellgrau
  • Text hinzufügen
 MyRichedit.Align := alClient;
  MyRichedit.Font.Color := clRed;
  MyRichedit.Color := clLtGray;
  MyRichedit.Lines.Add('text');
end;

Bevor wir uns den Ereignissen widmen können, müssen wir erst ein paar Knöpfe auf der Toolbar erstellen. Dies machen wir genau so wie mit „MyRichedit“ oder „MyToolbar“. Der einzige Unterschied ist, dass wir Parent jetzt auf „MyToolbar“ setzen.
Sie fragen sich sicherlich, warum MyToolButton nicht an der gleichen Stelle wie MyRichedit erstellt wird. Ganz einfach: Die Buttons werden in MyToolbar eingefügt und sind dann darüber ansprechbar. Darum brauchen wir sie nicht global deklarieren.

procedure TForm1.FormCreate(Sender: TObject);
var MyToolbutton: TToolbutton;
begin
  MyRichedit := TRichedit.Create(self);
  MyToolbar := TToolbar.Create(self);

  MyRichedit.Parent := Form1;
  MyToolbar.Parent := Form1;

  MyRichedit.Show;
  MyToolbar.Show;

  MyRichedit.Align := alClient;
  MyRichedit.Font.Color := clRed;
  MyRichedit.Color := clLtGray;
  MyRichedit.Lines.Add('text');

  MyToolbutton := TToolbutton.Create(self);
  MyToolbutton.Caption := 'B1';
  MyToolbutton.Parent := MyToolbar;
  MyToolbutton.Show;
end;

Nun wollen wir 10 Buttons auf diese Weise erstellen. Die Buttons bekommen die Aufschrift „B1..10“. Damit auch alle Buttons den Text anzeigen, fügen wir noch die Zeile „MyToolbar.ShowCaptions := true;“ ein.

procedure FormCreate(Sender: TObject);
var MyToolbutton: TToolbutton;
  i: integer;
begin
  ...
  MyToolbar.ShowCaptions := true;
  for i := 0 to 9 do begin
    MyToolbutton := TToolbutton.Create(self);
    MyToolbutton.Caption := 'B'+IntToStr(i+1);
    MyToolbutton.Parent := MyToolbar;
    MyToolbutton.Show;
  end;
end;