Home » Tutorials » VCL » Komponenten zur Laufzeit erstellen

Komponenten zur Laufzeit erstellen

Einfügen und Erstellen von Komponenten

Damit Sie mit den Komponenten arbeiten können, müssen Sie erst die Units für die entsprechenden Komponenten einfügen. Beispiele:
„StdCtrls“ für Buttons, Speedbuttons, Memos, Edits, Checkboxen, Radiobuttons, …
„ExtCtrls“ für Panels, Images, …
„Forms“ für Formulare, Frames, …
„Menus“ für Menüs, Popups, …
„StdCtrls“ und „ComCtrls“ für Richedits, …
usw.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ComCtrls;

Ich gebe Ihnen einen einfachen Tipp: Ziehen Sie die Komponente auf das Formular und speichern die Unit. Nun müsste Delphi die benötigten Units automatisch der Uses-Klausel hinzufügen. Löschen Sie die Komponente vom Formular wieder. Die Units bleiben erhalten. Nun können Sie mit den Komponenten arbeiten. Bevor Sie die Komponenten sehen können, müssen Sie erst deklariert und erzeugt werden. Unser Ziel ist es, ein kleines Textbearbeitungsprogramm zu erstellen.
Dazu brauchen wir einmal ein Richedit und eine Toolbar.

  • Fügen Sie in die „USES“-Klausel die Units „StdCtrls“, „ComCtrls“ und „ToolWin“ ein.
  • Fügen Sie nun in die „Var“-Klausel „MyRichedit: TRichedit“ und „MyToolbar: TToolbar“ ein.
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ComCtrls, ToolWin;

type
  TForm1 = class(TForm)
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  MyRichEdit: TRichEdit;
  MyToolbar: TToolbar;

implementation

Somit haben wir das Richedit und die Toolbar deklariert. Jetzt müssen wir sie nur noch erstellen.
Doppelklicken Sie einfach auf das leere Formular. Daraufhin wird die Prozedur „FormCreate“ erstellt. Dort werden wir die zwei Komponenten erstellen.
Dazu gibt es die Methode „Create(AOwner: TComponent);“. (Methoden, die ein Objekt erzeugen, nennt man Konstruktor.)
Schreiben Sie nun „MyRichedit := TRichedit.Create(self);“.
Damit reservieren wir für die Komponenten freien Speicher und bekommen eine Referenz auf diesen Speicherbereich zurück, die wir in der Variablen MyRichedit speichern. In den Klammern hinter Create wird der Eigentümer (Owner) des neuen Objekts angegeben. Da wir uns innerhalb einer Methode von Form1 befinden, steht „self“ für Form1 selbst. Der Owner ist dafür zuständig, alle Objekte/Komponenten, die er besitzt, automatisch wieder aus dem Speicher zu entfernen, wenn er selbst freigegeben wird.
Dasselbe machen wir mit MyToolbar („MyToolbar := TToolbar.create(self);“). Jedes Objekt wird so oder so ähnlich erzeugt. Komponenten machen da keine Ausnahme.

{$R *.DFM}

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

Nun haben wir die zwei Komponenten erstellt, und diese sind voll funktionstüchtig. Das war doch einfach. Leider sehen wir noch nichts; das wird sich aber bald ändern.