Writing Scripts
Skripte schreiben
Es gibt eine Reihe grundlegender Konzepte und Begriffe, die für das Schreiben von Skripten gelten:
- Prozesse sind Befehlszeichenfolgen, mit denen Sie Befehle in Skripten ausführen können.
- Komponenten sind visuelle Steuerelemente im Tool Palette panel, die Sie per Drag-and-drop auf ein Skriptformular ziehen können, um das Design zu bearbeiten.
- Eine Komponente, die auf einem Skriptformular platziert wird, verfügt über Methoden, Eigenschaften und Ereignisse.
- Objektschnittstellen sind spezielle Objektschnittstellen, mit denen Sie aus Ihren Skripten Daten in Designdokumenten auslesen und ändern können.
Skriptsprachen
Die Standardskriptsprache ist auf DelphiScript (*.pas) eingestellt. Die Skript-Engine selbst ist in Embarcadero Delphi geschrieben, und das Tool Palette panel basiert auf Delphis VCL (Visual Component Library).
Eine DelphiScript-Unit
Eine kurze und einfache Skriptübung kann durchgeführt werden, indem zunächst ein neues Projekt und eine neue Skriptdatei erstellt werden. Vorausgesetzt, dass Projekt und Skriptdatei auf die Sprache DelphiScript eingestellt sind, kann ein einfaches „Hello World“-Skript wie unten gezeigt eingegeben werden.
Procedure ShowAMessage;
Var
DefaultMessage;
Begin
DefaultMessage := 'Hello World!';
ShowMessage(DefaultMessage);
End;
Innerhalb der Prozedur gibt es eine standardmäßige DelphiScript-ShowMessage Funktion, die ein Dialogfeld mit der Meldung „Hello World“ öffnet, wie durch die Variable DefaultMessage definiert.
Das Skript ausführen
Um eines der Skripte auszuführen, wählen Sie File » Run Script in den Hauptmenüs und wählen dann eine verfügbare Skriptprozedur im Dialogfeld Select Item To Run aus. Wenn eine Version ausgeführt wird, wird ein Dialogfeld geöffnet, in dem die Meldung angezeigt wird.

Ausführen einer einfachen HelloWorld Skript-Unit über das Menü File » Run Script.
Ein Skript kann auch mit dem Befehl „Run“ des Editors ausgeführt werden, aufgerufen über die Schaltfläche Run , die Tastenkombination F9 oder durch Auswahl von Run » Run in den Hauptmenüs.
Neben dem Befehl „Run“ selbst bietet das Dropdown-Menü Run eine Reihe von Befehlen zur Skriptsteuerung und zum Debugging.
Wenn der Befehl Run zum ersten Mal ausgewählt wird, wird das Dialogfeld Select Item to Run geöffnet, in dem Sie die Hauptprozedur eines Skripts angeben können (in diesem Fall ShowAMessage). Sobald dies festgelegt ist, lässt sich das Skript im Editor mit dem Befehl Run einfach wiederholt ausführen. Verwenden Sie Run » Set Project Startup Procedure, um die Einstellung auf eine andere Prozedur zu ändern, oder schließen und öffnen Sie das Skriptprojekt erneut, um die Einstellung zu löschen.
Um ein laufendes Skript zu stoppen, verwenden Sie die Schaltfläche Stop , wählen Run » Stop im Hauptmenü oder verwenden die Tastenkombination Ctrl+F3.
Ein DelphiScript-Formular
Aufbauend auf dem oben erstellten HelloWorld-Projekt kann ein ähnliches Skript mit einer Formular-Unit erstellt werden.
Ein Skriptformular ist ein Dialogfenster, das verschiedene Steuerelemente wie Schaltflächen, Memofelder und Listenfelder enthalten kann. Es verfügt über Ereignishandler, die reagieren, wenn ein Steuerelement ein Ereignis erzeugt, beispielsweise wenn auf eine Schaltfläche geklickt wird.
Um das neue Skriptformular zu erstellen, klicken Sie im Projects panel mit der rechten Maustaste auf den Projektnamen, wählen die Option Add New to Project und dann Script Form. Das Skript kann über File » Save As in den Hauptmenüs gespeichert und umbenannt werden.
Nachdem ein neues Skriptprojekt erstellt wurde, fügen Sie dem Projekt ein neues Skript hinzu.
Um die Eigenschaftswerte des aktuell fokussierten Formulars oder seiner Komponenten anzuzeigen und zu bearbeiten, öffnen Sie das Object Inspector panel. Das Object Inspector panel wird verwendet, um die Eigenschaften des Formulars zu ändern und Code in die dem aktuellen Formular zugeordneten Ereignishandler einzufügen.

Die Fensterkonfiguration und Eigenschaften des Skriptformulars werden im Object Inspector panel dargestellt.
Beachten Sie, dass das Skriptformular unten im Dokument zwei Registerkarten bietet: die Registerkarten Code und Form .
Die Registerkarte Code enthält die Ereignishandler und Prozeduren wie oben gezeigt, während die Registerkarte Form den Dialog darstellt und Steuerelemente sowie zugehörige Ereignishandler enthält. Verwenden Sie die Registerkarten oder die Tastenkombination F12, um zwischen beiden zu wechseln.
Das Object Inspector panel ermöglicht es Ihnen, die Eigenschaften und Ereignisse von Komponenten im aktiven Skriptformular zu prüfen und zu bearbeiten. Wenn Sie im Design-Editor-Fenster auf dem aktiven Skriptformular auf eine einzelne Komponente klicken, wird diese Komponente ausgewählt und die zugehörigen Attribute werden im Object Inspector panel angezeigt. Alternativ können Sie das Dropdown-Feld oben im Panel verwenden, um aus einer Liste aller aktuell auf dem aktiven Formular platzierten Komponenten auszuwählen. Das Formular selbst ist ebenfalls enthalten.

Verwenden Sie das Object Inspector panel, um den Formulardialog und seine Aktion zu konfigurieren.
Die Informationen werden auf zwei Registerkarten angezeigt – Properties und Events:
- Die Registerkarte Properties des Panels listet alle Eigenschaftsattribute für die ausgewählte Komponente auf. Welche Attribute genau verfügbar sind, hängt vom jeweiligen Typ der aktuell geprüften Komponente ab. Eine Eigenschaft ist ein Merkmal eines Objekts, das entweder sein sichtbares Verhalten oder seine Operationen beeinflusst. Beispielsweise bestimmt die Eigenschaft Visible (in der Unterkategorie Behavior ), ob das Objekt auf dem Skriptformular, auf dem es platziert ist, angezeigt wird oder nicht. Die Eigenschaften einer Komponente können nach Bedarf geändert werden. Klicken Sie in das Feld rechts neben einer Eigenschaft und geben Sie den Wert entweder direkt ein, schalten Sie ein Kontrollkästchen um oder wählen Sie gegebenenfalls einen Eintrag aus einer Dropdown-Liste aus.
- Die Registerkarte Events des Panels enthält eine Liste aller Ereignisse, auf die die aktuell ausgewählte Komponente reagieren kann. Auch hier hängt die genaue Liste der verfügbaren Ereignisse vom jeweiligen Typ der aktuell geprüften Komponente ab. Wenn ein Ereignis eintritt, beispielsweise wenn auf eine Schaltfläche in einem Formular geklickt wird, führt das Skript die entsprechende Aktion aus, sofern im Code eine Behandlungsprozedur für das Ereignis definiert wurde. Diese Art von Prozedur wird als Ereignishandler bezeichnet.
Die Grundstruktur für einen Ereignishandler kann dem Code des Skriptdokuments direkt aus dem Object Inspector panel hinzugefügt werden. Wählen Sie einfach die Komponente aus, für die Sie ein Ereignis definieren möchten, wählen Sie die entsprechende Ereignisart und doppelklicken Sie dann in das Feld rechts neben dem Ereignis. Für das Ereignis wird ein Name erstellt und in der Definition des Namens für die Ereignisbehandlungsprozedur verwendet - FormName.EventName. Der Grundgerüst-Code für die Ereignisbehandlungsprozedur wird dann dem Hauptskriptcode hinzugefügt, der im Designbereich zur aktiven Registerkarte wird. Die „Ausfüllung“ der Ereignisbehandlungsprozedur kann anschließend programmiert werden, um die gewünschte Reaktion bereitzustellen, wenn das Ereignis eintritt und vom laufenden Skript erkannt wird.
Der untere Bereich des Panels bietet, sofern verfügbar, eine zusammenfassende Beschreibung der aktuell ausgewählten Eigenschaft oder des aktuell ausgewählten Ereignisses.
Für dieses Formularskript ändern Sie die Caption Eigenschaften des Formulars im Object Inspector panel von HelloWorldForm zu Hello World!. Diese Zeichenfolgen entsprechen denen, die im weiter unten gezeigten Beispielcode für Ereignishandler und Prozeduren verwendet werden.
Steuerelemente hinzufügen und konfigurieren
Nachdem die Grundform konfiguriert wurde, können dem Dialog nach Bedarf Steuerelemente hinzugefügt werden, indem auf das Tool Palette Panel zugegriffen wird. Das Tool Palette, das auf Delphis Visual Component Library basiert, ist eine Komponentenpalette, die eine große Auswahl an Fenster-Steuerelementen bietet, die als Komponentenkategorien organisiert sind (siehe die Seiten Scripting Graphical Components und Component Categories für weitere Details).

Die Abschnitte des Tool Palette Panels können über die Registerkarten der Bereichsüberschriften ein- und ausgeklappt werden.
Verwenden Sie die Steuerelemente oben im Panel, die Kategorienamen und das Kontextmenü, um die Darstellung der Steuerelemente im Panel zu konfigurieren: Kategorien ein-/ausklappen, die Darstellung der Palettenelemente ändern usw.
Für die Dialogversion des Projekts „Hello World“ gibt es zwei Schaltflächen auf dem Formular - Display und Close. Klicken Sie auf TButton im Bereich Standard des Tool Palette Panels.
Machen Sie dies zweimal, um zwei Schaltflächen auf dem Formular zu platzieren. Eine Schaltfläche wird verwendet, um eine „Hello World!“-Meldung in einem separaten Dialog anzuzeigen, und die zweite Schaltfläche wird verwendet, um den Hauptdialog zu schließen.
Alle Komponenten im Panel verfügen über zugehörige Eigenschaften, Methoden und Ereignisse, wobei:
-
Eine Property eine Eigenschaft eines Objekts ist, die entweder sein sichtbares Verhalten oder seine Operationen beeinflusst. Zum Beispiel bestimmt die Eigenschaft
Visible, ob ein Objekt auf einem Skriptformular sichtbar ist. - Eine Method eine Prozedur ist, die immer einem Objekt zugeordnet ist und das Verhalten dieses Objekts definiert.
- Ein Event eine Aktion oder ein Ereignis ist, das vom Skript erkannt wird. In einem Skript schreibt der Programmierer Code für jeden Event-Handler, der dafür ausgelegt ist, ein bestimmtes Ereignis wie einen Mausklick zu erfassen.
Die Eigenschaften und Ereignisse einer Komponente können nach dem Platzieren über das Object Inspector Panel eingesehen und geändert werden.
Über das Object Inspector Panel können die Konfigurationen der beiden Schaltflächen von ihren Standardnamen und -beschriftungen geändert werden.
Konfigurieren Sie den Namen der ersten Schaltfläche auf bDisplay und ihre Beschriftung auf Display. Konfigurieren Sie den Namen der zweiten Schaltfläche auf bClose und ihre Beschriftung auf Close. Dies dient dazu, dem unten dargestellten Beispielcode für Event-Handler zu entsprechen.

Wählen Sie eine Komponente aus und bearbeiten Sie ihre Eigenschaften im Object Inspector Panel.
Code für Event-Handler kann erstellt werden, indem direkt auf die Steuerelemente im Formular verwiesen wird. In diesem Beispiel löst die Schaltfläche Display einen ShowMessage Dialog über dem vorhandenen Formular aus, und die Aktion der Schaltfläche Close schließt dieses Formular.
Event-Handler-Code
Ein Doppelklick auf die Schaltfläche Display öffnet das Formular in der Codeansicht und erstellt den Grundcode für ihren Event-Handler. Alternativ wählen Sie die Schaltfläche und dann die Registerkarte Events im Object Inspector Panel. Ein Doppelklick auf das Ereignis OnClick im Panel öffnet die Codeansicht wie oben beschrieben. Innerhalb der Codeansicht kann die Anweisung ShowMessage wie in der folgenden Auflistung gezeigt in den Event-Handler aufgenommen werden.
Procedure THelloWorldForm.bDisplayClick(Sender: TObject);
Begin
ShowMessage('Hello World!');
End;
OnClick Ereignis erzeugt wird, das die Anweisung Close (form) anwendet:
Procedure THelloWorldForm.bCloseClick(Sender: TObject);
Begin
Close;
End;
Nachdem die Event-Handler definiert wurden, muss es im Skript eine Prozedur geben, die als Startpunkt dient, wenn der Dialog aus der Software aufgerufen wird. Diese wird am Ende des Codeskripts hinzugefügt.
Beachten Sie, dass der Formularname HelloWorldForm und der Prozedurname RunHelloWorld ist — es ist wichtig, innerhalb desselben Skripts eindeutige Formularnamen zu verwenden, um Namenskonflikte bei Formularen zu vermeiden.
Procedure RunHelloWorld;
Begin
HelloWorldForm.ShowModal;
End;
Das Skript kann gespeichert und dann über die Hauptmenüs ausgeführt werden (File» Run Script)), indem das Prozedurelement RunHelloWorld unter dem Eintrag HelloWorldDialog ausgeführt wird.
Alternativ kann die Prozedur dem Befehl/der Schaltfläche Run über das Menü Run » Set Startup Project Procedure zugewiesen werden.

Ausführen eines HelloWorld-Formularskripts, bei dem die Schaltfläche „Display“ des Formulars einen ShowMessage Dialog aktiviert.
Das Object Inspector Panel erleichtert das Ändern der Eigenschaften und Ereignisse einer Formulareinheit. Um beispielsweise die Position des Formulars im Arbeitsbereich zu ändern, verwenden Sie das Panel, um den Wert poScreenCenter für die Positionseigenschaft des Formulars zu ändern. Der Dialog wird nun beim Ausführen des Skripts in der Mitte des Desktop-Bildschirms platziert.
Aufrufen einer Prozedur
Wie oben erwähnt, hat jedes Skript (mit demselben Sprachsatz) innerhalb eines Projekts Zugriff auf globale Variablen und Prozeduren, sodass eine Prozedur in einem Skript eine andere Prozedur in einem anderen Skript des Projekts aufrufen kann.
Dies kann durch den zusätzlichen Codeabschnitt ShowAParametricMessage im Beispielprojekt HelloWorld demonstriert werden:
Procedure ShowAParametricMessage(S : String);
Var
DefaultMessage;
Begin
DefaultMessage := 'Hello World!';
If S = '' Then ShowMessage(DefaultMessage)
Else ShowMessage(S);
End;
Dadurch wird eine String-Variable 'S' eingerichtet, die an die Prozedur ShowAParametricMessage übergeben werden kann.
Der übergebene String wird mit der Dialogfunktion ShowMessage angezeigt, während eine einfache If-Then-Else-Methode dafür sorgt, dass eine Standardmeldung „Hello World!“ angezeigt wird, wenn der String leer ist.
Um dies in Aktion zu sehen, öffnen Sie das Beispielprojekt (HelloWorld.PrjScr) und fügen Sie die grau hervorgehobene Zeile in das Skript HelloWorldDialog ein (nicht in das Skript HelloWorld), wie unten gezeigt.
...
Procedure THelloWorldForm.bDisplayClick(Sender: TObject);
Begin
Showmessage('Hello World!');
End;
Procedure THelloWorldForm.bCloseClick(Sender: TObject);
Begin
ShowAParametricMessage('Goodbye World');
close;
End;
Procedure RunHelloWorld;
Begin
HelloWorldForm.ShowModal;
End;
...
Wenn das Skript HelloWorldDialog ausgeführt wird und auf die Schaltfläche Close geklickt wird, wird die globale Prozedur ShowAParametricMessage aus dem Skript HelloWorld aufgerufen.

Eine parametrische Prozedur im Skript HelloWorld wird aus dem Skript HelloWorldDialog aufgerufen.
Der Aufruf übergibt den Meldungs-String „Goodbye World“ an die Prozedur ShowAParametricMessage, sodass diese Meldung beim Klicken auf die Schaltfläche „Close“ angezeigt wird, bevor das Formular geschlossen wird.

Der oben gezeigte Skriptaufruf fügt eine angegebene Meldung in die Schließprozedur des Formulars HelloWoldDialog ein.
Wenn der übergebene String-Parameter leer ist, wird ShowAParametricMessage(''), die Standardmeldung „Hello World!“ angezeigt, wie in der Prozedur ShowAParametricMessage definiert.
Durchsuchen von Skriptbezeichnern mit dem Code Explorer Panel
Das Code Explorer Panel bietet eine visuelle Übersicht über alle Bezeichner (Variablen, Funktionen und Prozeduren), die im aktiven Skriptdokument verwendet werden.

Das Code Explorer Panel
Die im Panel angezeigten Bezeichnerinformationen sind unter den folgenden Ordnern der obersten Ebene gruppiert:
-
Procedures & Functions – enthält alle im aktiven Skriptdokument deklarierten Prozeduren und Funktionen. Für jede Prozedur/Funktion werden auch alle an die Prozedur/Funktion übergebenen Parameter oder ihre lokalen Variablen aufgeführt.
-
Variables – enthält alle im aktiven Skriptdokument deklarierten globalen Variablen.
Wenn lokale Variablen für eine Prozedur/Funktion deklariert sind, werden sie in einem Unterordner für Variablen unter dieser Prozedur/Funktion aufgeführt. Zur Unterscheidung der verschiedenen Bezeichner werden eindeutige Symbole verwendet:
|
Prozedur |
|
Funktion |
|
Prozedur-/Funktionsparameter |
|
Variable (lokal oder global) |
Ein Doppelklick auf einen Eintrag im Panel (oder das Auswählen und Drücken der Taste Enter) springt zum entsprechenden Codebereich im Designbereich.