Home » Tutorials » VCL » Aktionen verwenden

Aktionen verwenden

Aktionen erstellen

Und damit kommen wie vom „Warum“ zum „Wie“. Dazu kläre ich erstmal, wovon wir im Einzelnen reden.
Die Eigenschaft „Action“ erben alle Nachkommen von TControl, also alle visuellen Komponenten (solche, die man zur Laufzeit auf dem Formular sieht). Aber nur bei einigen erscheint diese Eigenschaft auch im Objektinspektor:

  • TForm
  • TMenuItem
  • TButton
  • TCheckBox
  • TRadioButton
  • TBitBtn
  • TSpeedButton
  • TToolButton

Wir wollen uns zunächst auf diese Klassen beschränken. Auf die anderen gehe ich später ein.
Die Eigenschaft Action verlangt einen Wert vom Typ TBasicAction. Das ist die Basisklasse, von der alle Aktionen abgeleitet sind. Aktionen sind zusammengefasst in der Komponente ActionList. Darüber werden sie auch verwaltet.
Um also unsere erste Aktion zu erstellen, ziehen wir zunächst eine ActionList-Komponente (Registrierkarte Standard der Komponentenpalette) auf unser Formular. Durch Doppelklicken auf die Komponente öffnet sich ein Editor.
Mit einem Klick auf das Symbol links oben (Neue Aktion) erstellen wir die Aktion.

Im Editor erscheint Action1. Der Objektinspektor zeigt uns die verschiedenen Eigenschaften. Als Beispiel wollen wir jetzt eine Aktion erstellen, die unser Programm beendet. Zuerst wählen wir einen passenden Namen (wie „ActionClose“). Unter Category kann ein String als Kategoriename
eingegeben werden. So lassen sich die Aktionen im Editor übersichtlich einteilen. Tag und ImageIndex beachten wir jetzt mal (noch) nicht.
Alle anderen Eigenschaften werden später auf das Bedienfeld, dem wir die Aktion zuweisen, übertragen.
Wir geben also für unser Beispiel ein:

bei Caption: „&Beenden“
bei Hint: „Beendet das Programm“
bei ShortCut: „Strg + B“

Durch Doppelklicken auf unsere Aktion im Editor wird die Prozedur „ActionCloseExecute“ erstellt. Das ist die Routine, die später von unseren Bedienfeldern aufgerufen wird. Da die Aktion das Programm beenden soll, schreiben wir:

procedure TForm1.ActionCloseExecute(Sender: TObject);
begin
  Close;
end;