Using VBScript Form Components

Verwendung von Komponenten in VBScript-Formularen

Obwohl Formulare und Komponenten auf der Visual Component Library (VCL) von Embarcadero Delphi™ basieren, wird der Delphi-basierte Tool Palette von Altium Designer weiterhin verwendet, um bei der Nutzung von VBScript Steuerelemente auf einem Formular zu platzieren. Außerdem werden Ereignishandler generiert und Code in der Sprache VBScript geschrieben, ungeachtet der Delphi-Ursprünge von Formularen und Komponenten in Altium Designer.

Überblick über Komponenten

Das Skriptsystem verarbeitet zwei Arten von Komponenten: visuelle und nicht visuelle Komponenten. Die visuellen Komponenten werden zum Aufbau der Benutzeroberfläche verwendet, und die nicht visuellen Komponenten werden für verschiedene Aufgaben eingesetzt, etwa für die Funktionen, die von den Komponenten Timer, OpenDialog und MainMenu bereitgestellt werden. Zum Beispiel wird die nicht visuelle Komponente Timer verwendet, um bestimmten Code in geplanten Intervallen zu aktivieren, und sie ist für einen Benutzer nie sichtbar. Die Komponenten Button, Edit und Memo sind visuelle Komponenten — sie sind für einen Benutzer sichtbar.

Beide Arten von Komponenten erscheinen zur Entwurfszeit, aber nicht visuelle Komponenten sind zur Laufzeit nicht sichtbar. Komponenten aus dem Bereich Tool Palette sind objektorientiert und besitzen die folgenden drei Elemente:

  • Eigenschaften
  • Ereignisse
  • Methoden

Eine property ist ein Merkmal eines Objekts, das entweder das sichtbare Verhalten oder die Operationen dieses Objekts beeinflusst. Zum Beispiel bestimmt die Eigenschaft Visible, ob dieses Objekt in einem Skriptformular sichtbar ist.

Ein event ist eine Aktion oder ein Ereignis, das vom Skript erkannt wird. In einem Skript schreibt der Programmierer Code für jeden Ereignishandler, der dafür ausgelegt ist, ein bestimmtes Ereignis zu erfassen, etwa einen Mausklick.

Eine method ist eine Prozedur, die immer einem Objekt zugeordnet ist und das Verhalten dieses Objekts definiert.

Alle Skriptformulare haben eine oder mehrere Komponenten. Komponenten zeigen normalerweise Informationen an oder ermöglichen einem Benutzer, eine Aktion auszuführen. Zum Beispiel wird ein Label verwendet, um statischen Text anzuzeigen, ein Edit-Feld wird verwendet, damit ein Benutzer Daten eingeben kann, und eine Schaltfläche kann verwendet werden, um Aktionen auszulösen.

Beliebige Kombinationen von Komponenten können auf einem Formular platziert werden, sodass ein Benutzer mit ihnen interagieren kann, wenn das Skript ausgeführt wird (Laufzeit). Es ist die Aufgabe des Skriptprogrammierers zu entscheiden, was passiert, wenn ein Benutzer auf eine Schaltfläche klickt oder den Text in einem Edit-Feld ändert.

Das Skriptsystem stellt eine Reihe von Komponenten zur Verfügung, um einfache oder komplexe Benutzeroberflächen für Skripte zu erstellen. Alle Komponenten, die auf einem Formular platziert werden können, befinden sich im Bereich Tool Palette.

Um eine Komponente auf einem Formular zu platzieren, suchen Sie ihr Symbol im Bereich Tool Palette und doppelklicken Sie darauf. Dadurch wird eine Komponente auf dem aktiven Formular an ihrer Standardposition mit Standardbreite und -höhe platziert. Die visuelle Darstellung der meisten Komponenten wird durch ihre zugeordneten Eigenschaften bestimmt.

Eine platzierte Komponente kann in ihrer Standardposition und mit ihrer Standardbreite und -höhe mit der Maus oder über den Bereich Object Inspector in der Größe geändert oder neu positioniert werden. Wenn eine Komponente auf ein Formular gezogen wird, generiert das Skriptsystem automatisch den grundlegenden Code, der zur Verwendung der Komponente erforderlich ist, und aktualisiert das Skriptformular. Damit die Komponente auf dem Formular funktioniert, müssen nur noch Eigenschaften festgelegt, Code in Ereignishandler eingefügt und bei Bedarf Methoden verwendet werden.

Entwurf von Skriptformularen

Ein Skriptformular ist dafür ausgelegt, innerhalb der Altium Designer-Umgebung mit einem Benutzer zu interagieren. Das Entwerfen von Skriptformularen ist der Kern der visuellen Entwicklung in Altium Designer.

Jede Komponente, die auf einem Skriptformular platziert wird, und jede festgelegte Eigenschaft wird in einer Datei gespeichert, die das Formular beschreibt (eine *.dfm-Datei), und steht in Beziehung zum zugehörigen Skriptcode (der *.vbs-Datei). Daher gibt es für jedes Skriptformular die *.vbs-Datei und die entsprechende *.dfm-Datei.

Bei der Arbeit mit einem Skriptformular und seinen Komponenten kann auf dessen Eigenschaften über den Bereich Object Inspector zugegriffen und sie können dort geändert werden. Mehr als eine Komponente kann ausgewählt werden, indem Sie bei gedrückter Umschalttaste auf die Komponenten klicken oder ein Auswahlrechteck um die Komponenten auf dem Skriptformular ziehen. Ein Skriptformular hat einen Titel, der der Eigenschaft Caption im Bereich Object Inspector zugeordnet ist.

Erstellen eines neuen Skriptformulars

Wenn ein Skriptprojekt geöffnet ist, klicken Sie im Bereich Projects mit der rechten Maustaste auf das Projekt und wählen Sie dann in den Kontextmenüs die Einträge Add New to Project und anschließend VB Script Form. Ein neues Skriptformular wird mit dem Standardnamen EditScript1.vbs erstellt. Alternativ wählen Sie in einem *.PrjPCB-Projekt den Befehl File » New » Script Files » VB Script Form.

Anzeigen eines Skriptformulars

Ein Skript muss eine Routine enthalten, die das Formular anzeigt, wenn das Skriptformular in Altium Designer ausgeführt wird. Innerhalb dieser Routine wird die Methode ShowModal für das Formular aufgerufen. Die Eigenschaft Visible des Formulars muss auf false (deaktiviert) gesetzt sein, damit die Methode ShowModal des Skriptformulars korrekt funktioniert.

ShowModal-Beispiel

Sub RunDialog
  DialogForm.ShowModal
End Sub

Das obige Beispiel ShowModal ist eine einfache Möglichkeit, das Skriptformular anzuzeigen, wenn der Dialog RunDialog aus dem Skript aufgerufen wird. Beachten Sie, dass den Komponenten des Objekts DialogForm Werte zugewiesen werden können, bevor die Methode DialogForm.ShowModal aufgerufen wird.

Das unten gezeigte Beispiel ModalResult ist komplexer. Seine späteren Methoden werden für Schaltflächen im Skriptformular verwendet. Die Skriptmethoden bewirken, dass der Dialog beendet wird, wenn ein Benutzer entweder auf die Schaltfläche OK oder Cancel klickt; dadurch gibt die Methode ShowModal entsprechend mrOk bzw. mrCancel zurück.

ModalResult Example

sub bOKButtonClick(Sender)
  ModalResult := mrOK
end sub
 
sub bCancelButtonClick(Sender)
  ModalResult := mrCancel
end sub
 
sub RunShowModalExample
  'Form Visible property must be false for ShowModal to work properly.
  If Form.ShowModal = mrOk     Then ShowMessage("mrOk")
  If Form.ShowModal = mrCancel Then ShowMessage("mrCancel")
end sub

Dasselbe wie oben könnte erreicht werden, indem der Wert ModalResult für die Schaltfläche OK auf mrOk und für die Schaltfläche Cancel in deren Ereignishandlern auf mrCancel gesetzt wird. Wenn ein Benutzer auf eine der beiden Schaltflächen klickt, wird das Dialogfeld geschlossen. Es ist nicht erforderlich, die Methode Close aufzurufen, denn wenn die Methode ModalResult gesetzt wurde, schließt die Skript-Engine das Skriptformular automatisch.

Beachten Sie, dass Sie, um das ModalResult des Formulars auf „Abbrechen“ zu setzen, wenn ein Benutzer die Taste Esc drückt, die Cancel-Eigenschaft der Schaltfläche Cancel im Bereich Object Inspector auf true (aktiviert) setzen oder Sender.Cancel := True in den Ereignishandler CancelButtonClick der Schaltfläche des Formulars einfügen.

Benutzereingaben annehmen

Eine der gängigen Komponenten, die Eingaben von einem Benutzer annehmen können, ist die Komponente EditBox. Diese Komponente EditBox besitzt ein Textfeld, in das ein Benutzer eine Zeichenfolge eingeben kann. Es gibt auch andere Komponenten, die Text annehmen können, etwa die Masked-Edit-Komponente, also eine Edit-Komponente mit einer Eingabemaske für das Textfeld. Die Maske steuert bzw. filtert die Eingabe und wird in einer Parameterzeichenfolge gespeichert.

Das folgende Beispiel veranschaulicht, was geschieht, wenn ein Benutzer auf die Schaltfläche klickt, nachdem er Text in das Edit-Feld eingegeben hat. Beachten Sie, dass der Ereignishandler mit einer Warnmeldung reagiert, wenn ein Benutzer keinen Text in die Edit-Komponente eingegeben hat

sub TScriptForm.ButtonClick(Sender)
  If Edit1.Text = "" Then
  ShowMessage("Warning - empty input!")
  Exit
  End
  ' do something else for the input
End sub

Beachten Sie, dass ein Benutzer den Eingabefokus auf dem Formular mit der Taste Tab oder durch Klicken auf ein anderes Formularsteuerelement verschieben kann.

Auf Ereignisse reagieren

Wenn ein Formular oder eine Komponente von einem Benutzer ausgewählt wird, sendet Altium Designer eine Nachricht an das Skriptsystem, das auf die Ereignisbenachrichtigung reagiert, indem es die entsprechende Ereignishandler-Methode aufruft.

Ereignishandler schreiben

Ein Skript muss möglicherweise auf Ereignisse reagieren, die bei einer Komponente zur Laufzeit auftreten können. Ein Ereignis ist eine Verknüpfung zwischen einem Vorgang in Altium Designer, etwa dem Klicken auf eine Schaltfläche, und einem Codestück, das auf diesen Vorgang reagiert. Der reagierende Code ist ein Ereignishandler, der Eigenschaftswerte ändert und Methoden aufruft.

Neben den Eigenschaften einer Komponente besitzt jede auch eine Reihe von Ereignisnamen. Ein Skriptprogrammierer entscheidet, wie auf die Aktionen eines Benutzers in Altium Designer reagiert werden soll. Wenn ein Benutzer beispielsweise auf eine Schaltfläche in einem Formular klickt, sendet Altium Designer eine Nachricht an das Skript, und das Skript reagiert auf dieses neue Ereignis — wenn für eine Schaltfläche das Ereignis OnClick angegeben ist, wird es ausgeführt.

Alle diese Komponenten besitzen außerdem ein Ereignis für das Erhalten und Verlieren des Fokus. Wenn jedoch kein Code für OnEnter und OnExit angegeben ist (OnEnter - das Steuerelement hat den Fokus; OnExit - das Steuerelement verliert den Fokus), wird das Ereignis vom Skript ignoriert.

Komponenteneigenschaften

Um eine Liste der Eigenschaften einer Komponente anzuzeigen, wählen Sie eine Komponente aus und aktivieren Sie die Registerkarte Properties im Bereich Object Inspector.

Komponentenereignisse

Um eine Liste der Ereignisse anzuzeigen, auf die eine Komponente reagieren kann, wählen Sie eine Komponente aus und aktivieren Sie die Registerkarte Events im Bereich Object Inspector. Um eine Ereignisbehandlungsprozedur zu erstellen, auf die eine Komponente reagieren soll, wählen Sie ein geeignetes Ereignis aus und doppelklicken Sie auf dessen Namen.

Wählen Sie beispielsweise die Komponente Button1 aus dem Bereich Tool Palette, platzieren Sie sie auf dem Skriptformular und doppelklicken Sie neben den Ereignisnamen OnClick. Das Skriptsystem wechselt dann zurück zum Code-Editor, wo der Gerüstcode für das Ereignis OnClick erstellt wurde. Wenn eine Schaltfläche in ihrem Ereignishandler CloseClick eine Methode Close besitzt, erfasst ihr Ereignishandler beim Klicken auf die Schaltfläche das OnClick-Ereignis, und der Code innerhalb des Ereignishandlers wird ausgeführt. Das heißt, die Methode Close schließt das Skriptformular.

Zusammengefasst wird ein Ereignishandler in einem Skript erstellt, indem eine Komponente auf dem Formular oder im Bereich Object Inspector ausgewählt und dann rechts neben dem gewünschten Ereignis (z. B. OnClick) auf der Registerkarte Events des Inspectors doppelt geklickt wird — das entsprechende Codegerüst erscheint dann im Skript.

Alternativ fügt das Skriptsystem durch Doppelklicken auf eine Schaltfläche einen Handler für ein Ereignis OnClick hinzu. Andere Komponententypen haben völlig andere Standardaktionen.

Komponentenmethoden

Eine Liste der Methoden einer Komponente finden Sie in der Component Reference; ausführlichere Informationen finden Sie in der Embarcadero-Delphi-Dokumentation.

Komponenten zur Laufzeit erstellen

Komponenten können in einem Skript direkt erstellt und zerstört werden. Normalerweise muss das Handle des Formulars nicht übergeben werden, da das Skriptformular dies automatisch übernimmt — übergeben Sie stattdessen einen Parameter vom Typ Nil an den Konstruktor der Komponente.

Zum Beispiel können die Dialoge Open und Save erstellt und wieder zerstört werden (die Klassen TOpenDialog und TSaveDialog als Teil der Delphi RTL).

AI-LocalizedAI-localized
If you find an issue, select the text/image and pressCtrl + Enterto send us your feedback.
Feature Availability

The features available to you depend on which Altium solution you have – Altium Develop, an edition of Altium Agile (Agile Teams or Agile Enterprise), or Altium Designer (on active term).

If you don’t see a discussed feature in your software, contact Altium Sales to find out more.

Legacy Documentation

Altium Designer documentation is no longer versioned. If you need to access documentation for older versions of Altium Designer, visit the Legacy Documentation section of the Other Installers page.

Inhalt