Formulare & Komponenten

Übersicht über grafische Komponenten

Das Skriptsystem unterstützt zwei Arten von Komponenten: visuelle und nicht-visuelle Komponenten.

Visuelle Komponenten dienen zum Aufbau der Benutzeroberfläche, während die nicht-visuellen Komponenten für verschiedene Aufgaben verwendet werden, wie zum Beispiel Timer, OpenDialog und MainMenu Komponenten.

  • Die Timer nicht-visuelle Komponente kann dazu verwendet werden, bestimmten Code in festgelegten Intervallen auszuführen, und sie ist für den Benutzer niemals sichtbar.
  • Die Button, Edit und Memo sind visuelle Komponenten.

Beide Komponententypen werden zur Entwurfszeit angezeigt, nicht-visuelle Komponenten sind jedoch zur Laufzeit nicht sichtbar. Komponenten aus dem Tool Palette Bedienfelds sind objektorientiert und verfügen über 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. Beispielsweise bestimmt die Eigenschaft „Visible“, ob dieses Objekt auf einem Skriptformular sichtbar ist oder nicht.

Ein Event ist eine Aktion oder ein Vorgang, der vom Skript erkannt wird. In einem Skript schreibt der Programmierer für jeden Ereignis-Handler Code, der darauf ausgelegt ist, ein bestimmtes Ereignis wie beispielsweise einen Mausklick zu erfassen.

Ein Method ist eine Prozedur, die immer mit einem Objekt verknüpft ist und das Verhalten eines Objekts definiert.

Alle Skriptformulare verfügen über eine oder mehrere Komponenten. Komponenten zeigen in der Regel Informationen an oder ermöglichen es dem Benutzer, eine Aktion auszuführen. Beispielsweise wird ein Label dient zur Anzeige von statischem Text, ein Edit Feld dient dazu, einem Benutzer die Eingabe von Daten zu ermöglichen, ein Button kann zum Auslösen von Aktionen verwendet werden.

Auf einem Formular kann eine beliebige Kombination von Komponenten platziert werden, und während das Skript läuft, kann ein Benutzer mit jeder Komponente auf dem Formular interagieren. Es ist Aufgabe des Programmierers zu entscheiden, was geschieht, wenn ein Benutzer auf eine Schaltfläche klickt oder den Text in einem Edit Eingabefeld ändert.

Das Skriptsystem stellt eine Reihe von Komponenten bereit, mit denen sich komplexe Benutzeroberflächen für Skripte erstellen lassen. Um eine Komponente in ein Formular einzufügen, suchen Sie das entsprechende Symbol imFenster „Werkzeugpalette“ und doppelklicken Sie darauf. Dadurch wird die Komponente in das aktive Formular eingefügt. Die visuelle Darstellung der meisten Komponenten wird über ihre Eigenschaften festgelegt. Eine Komponente wird zunächst an einer Standardposition auf dem Formular platziert, kann jedoch nach Bedarf neu positioniert (verschoben) und in der Größe angepasst (gestreckt) werden. Sie können Größe und Position auch später über das Object Inspector Bedienfeld ändern.

Wenn eine Komponente auf ein Formular gezogen wird, generiert das Skriptsystem automatisch den für die Verwendung der Komponente erforderlichen Code und aktualisiert das Skriptformular. Es müssen lediglich die Eigenschaften festgelegt und der Code für den Ereignis-Handler implementiert werden, um die gewünschten Methoden zu nutzen und die Komponente auf dem Formular funktionsfähig zu machen.

Entwerfen von Skriptformularen

Ein Skriptformular dient dazu, innerhalb der Umgebung mit dem Benutzer zu interagieren. Das Entwerfen von Skriptformularen bildet den Kern der visuellen Entwicklung.

In der Praxis werden alle Komponenten auf einem Skriptformular platziert, und jede festgelegte Eigenschaft wird in einer Datei gespeichert, die das Formular beschreibt (eine *.DFM Datei), die mit dem zugehörigen Skriptcode (der *.PAS Datei). Für jedes Skriptformular gibt es die .PAS Datei und die dazugehörige .DFM Datei.

Bei der Arbeit mit einem Skriptformular und seinen Komponenten können alle Elementeigenschaften über das Object Inspector Bedienfelds eingesehen und geändert werden. Sie können mehrere Komponenten auswählen, indem Sie bei gedrückter Umschalttaste auf die Komponenten klicken oder ein Auswahlrechteck um die Komponenten auf dem Formular ziehen. Ein Skriptformular hat einen Titel (die Caption Eigenschaft im Object Inspector Panel).

Ein neues Skriptformular erstellen

Wenn ein Skriptprojekt geöffnet ist, klicken Sie mit der rechten Maustaste auf ein Projekt im Projects Bedienfeld, klicken Sie im Add New to Project Element im Kontextmenü und wählen Sie ein Delphi Script Form Eintrag aus. Es öffnet sich ein neues Skriptformular mit dem Standardnamen EditScript1.pas.

Anzeigen eines Skriptformulars

Ein Skript muss eine Prozedur enthalten, die das Formular anzeigt, wenn das Skriptformular ausgeführt wird. Innerhalb dieser Prozedur kann die ShowModal Methode für das Formular aufgerufen werden. Die Visible Eigenschaft des Formulars muss auf „false“ gesetzt sein, damit die ShowModal Methode des Skriptformulars korrekt funktionieren soll.

ShowModal example:

Procedure RunDialog;
Begin
  DialogForm.ShowModal;
End;

Das ShowModal Beispiel zeigt einen sehr einfachen Ansatz, um das Skriptformular anzuzeigen, wenn die RunDialog Prozedur aufgerufen wird. Beachten Sie, dass den Komponenten des DialogForm Objekts zugewiesen werden können, bevor die DialogForm.ShowModal Methode aufgerufen wird.

Das ModalResult unten gezeigte Beispiel für eine Eigenschaft ist etwas komplexer. Die folgenden Methoden im Skript werden für Schaltflächen auf einem Skriptformular verwendet. Die Methoden bewirken, dass der Dialog beendet wird, wenn der Benutzer entweder auf die OK oder Cancel Schaltfläche klickt, was mrOk oder mrCancel jeweils aus der ShowModal Methode zurückgibt.

ModalResult Example:

Procedure TForm.OKButtonClick(Sender: TObject);
Begin
  ModalResult := mrOK;
End;

Procedure TForm.CancelButtonClick(Sender: TObject);
Begin
  ModalResult := mrCancel;
End;

Procedure RunShowModalExample;
Begin
  // Form's Visible property must be false for ShowModal to work correctly.
  If Form.ShowModal = mrOk Then ShowMessage('mrOk');
  If Form.ShowModal = mrCancel Then ShowMessage('mrCancel');
End;
Sie könnten auch den ModalResult Wert auf mrOk für die OK Schaltfläche und mrCancel für die Cancel Schaltfläche in deren Ereignisbehandlungsroutinen festlegen, um das gleiche Ergebnis wie oben zu erzielen.

Wenn der Benutzer auf eine der beiden Schaltflächen in diesem Skriptformular klickt, wird das Dialogfeld geschlossen. Es ist nicht erforderlich, die Close Methode aufrufen, da die ModalResult Methode festgelegt ist, schließt die Skript-Engine das Skriptformular automatisch.

Beachten Sie: Wenn Sie die ModalResult auf Cancel auf den Zeitpunkt, zu dem ein Benutzer die Esc Taste drückt, verwenden Sie das Object Inspector Panel verwenden, um die Cancel Eigenschaft der Schaltfläche „Abbrechen“ auf Trueoder fügen Sie Sender.Cancel := True in den Ereignisbehandler der Schaltfläche CancelButtonClick Ereignisbehandler des Formulars ein.

Eingaben vom Benutzer entgegennehmen

Eine der gängigen Komponenten, die Benutzereingaben entgegennehmen können, ist die TEdit Komponente. Diese Komponente verfügt über ein Feld, in das der Benutzer eine Zeichenfolge eingeben kann. Beachten Sie, dass es weitere Delphi-Komponenten gibt, wie beispielsweise TMaskEdit, bei der es sich um eine Edit-Komponente mit einer in einer Zeichenkette gespeicherten Eingabemaske handelt – diese steuert oder filtert die Eingabe.

Das folgende Beispiel veranschaulicht den Ablauf, wenn der Benutzer auf die Schaltfläche klickt, nachdem er etwas in das Eingabefeld eingegeben hat. Hat der Benutzer nichts in die Edit-Komponente eingegeben (leer), gibt der Ereignisbehandler eine Warnmeldung aus.

Procedure TScriptForm.ButtonClick(Sender : TObject);
Begin
  If Edit1.Text = '' Then
  Begin
    ShowMessage('Warning - empty input!');
    Exit;
  End;
  // do something else for the input
End;

Beachten Sie, dass ein Benutzer den Eingabefokus des Dialogfelds mithilfe der Tab Taste oder durch Klicken auf ein anderes Steuerelement im Formular den Eingabefokus des Dialogs ändern kann.

Reagieren auf Ereignisse

Wenn auf eine Schaltfläche in einem Formular oder auf eine Komponente geklickt wird, reagiert das Skriptsystem, indem es eine Ereignisbenachrichtigung von Altium Designer empfängt und die entsprechende Ereignisbehandlungsmethode aufruft.

See also
Das Projekt „HelloWorld“ aus dem Scripts\DelphiScript Scripts\General\ Ordner der Skriptsammlung. „
“ Das Beispielskript „ShowModal“ aus dem Scripts\DelphiScript Scripts\General\ Ordner der Skriptsammlung.

Erstellen von Ereignisbehandlungsroutinen

Jede Komponente in einem Formularskript verfügt über eine Reihe von Ereignisnamen, die von Skript-Ereignisbehandlungsmethoden verwendet werden, um festzulegen, wie das Skript auf Benutzeraktionen in Altium Designer reagiert. 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 das OnClick Ereignis für eine Schaltfläche festgelegt ist, wird es ausgeführt.

Der Code zur Reaktion auf Ereignisse ist normalerweise in DelphiScript-Ereignisbehandlungsroutinen enthalten, und alle Komponenten verfügen über eine Reihe von Ereignissen, auf die sie reagieren können. Beispielsweise haben alle anklickbaren Komponenten ein OnClick Ereignis, das ausgelöst wird, wenn ein Benutzer auf eine Komponente klickt. Alle derartigen Komponenten verfügen zudem über ein Ereignis für das Erhalten und Verlieren des Fokus. Wenn jedoch der Code für OnEnter und OnExit nicht festgelegt wurde (OnEnter - das Steuerelement den Fokus erhalten hat; OnExit – das Steuerelement hat den Fokus verloren), wird das Ereignis von einem Skript ignoriert.

Zusammenfassend lässt sich sagen, dass ein Ereignis eine Verbindung zwischen einem Vorgang in Altium Designer – beispielsweise dem Klicken auf eine Schaltfläche – und einem Codeabschnitt darstellt, der auf diesen Vorgang reagiert. Der reagierende Code ist ein Ereignis-Handler. Dieser Code ändert Eigenschaftswerte und ruft Methoden auf.

Eigenschaften einer Komponente

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

Komponentenereignisse

Um eine Liste der Ereignisse anzuzeigen, auf die eine Komponente reagieren kann, wählen Sie eine Komponente aus und öffnen Sie die Events Registerkarte im Object Inspector Bedienfeld. Um eine Ereignisbehandlungsroutine zu erstellen, wählen Sie das Ereignis aus, auf das die Komponente reagieren soll, und doppelklicken Sie auf den Ereignisnamen – das Skriptsystem fügt automatisch den Rahmencode für den Ereignis-Handler ein.

Wählen Sie beispielsweise die TButton Komponente aus dem Tool Palette Bedienfeld aus und ziehen Sie sie auf das Skriptformular; doppelklicken Sie anschließend neben den OnClick Ereignisnamen im Object Inspector Bedienfeld. Das Skriptsystem rückt den Code-Editor in den Vordergrund und erstellt den Grundgerüstcode für das OnClick Ereignis wird erstellt.

Wenn eine Schaltfläche eine Close Methode im CloseClick Ereignisbehandler hat – wird beim Klicken auf die Schaltfläche das Schaltflächen-Ereignis den OnClick Ereignis ab, wodurch der Code innerhalb des Ereignisbehandlers ausgeführt wird. Folglich Close Methode das Skriptformular.

Zusammenfassend lässt sich sagen: Wählen Sie eine Schaltflächenkomponente entweder im Formular oder mithilfe des Object Inspector Bedienfelds, wählen Sie die Events Seite aus und doppelklicken Sie auf die rechte Seite des OnClick Ereignis, woraufhin ein neuer Ereignis-Handler im Skript erscheint. Alternativ können Sie auch auf die Schaltfläche selbst doppelklicken; das Skriptsystem fügt dann einen Handler für dieses OnClick Ereignis hinzu. Beachten Sie, dass andere Komponententypen andere Standardaktionen haben.

Komponentenmethoden

Eine Liste der Methoden für eine Komponente finden Sie im Dokument „Komponentenreferenz “.

Komponenten auf ein Skriptformular ziehen

Um Komponenten aus dem Fenster „Werkzeugpalette“ in einem Skript zu verwenden, muss ein Skriptformular vorhanden sein, bevor Komponenten auf das Formular gezogen werden können. Wenn Komponenten auf ein Skriptformular gezogen werden, müssen diese Objekte in der Regel nicht erstellt oder gelöscht werden – das Skriptformular übernimmt dies automatisch.

Das Skriptsystem generiert außerdem automatisch den für die Verwendung einer Komponente erforderlichen Code und aktualisiert das Skriptformular. Anschließend müssen lediglich die Eigenschaften festgelegt, Code in Ereignisbehandler eingefügt und die erforderlichen Methoden verwendet werden, um ein funktionsfähiges Skriptformular zu implementieren.

Erstellen von Komponenten in einem Skript

Komponenten können in einem Skript direkt erstellt oder gelöscht werden, indem ein Nil Parameters an die Constructor einer Komponente übergeben. Normalerweise müssen Sie das Handle des Formulars nicht übergeben, da das Skriptformular dies automatisch übernimmt. Sie können beispielsweise Open sowie Save Dialogfelder (TOpenDialog sowie TSaveDialog Klassen aus dem Embarcadero Delphi RTL).

Anpassen von Skriptformularen

Die wichtigsten Punkte beim Anpassen von Skriptformularen sind:

  • Um zu erzwingen, dass ein Formular über anderen geöffneten Fenstern angezeigt wird, setzen Sie die FormStyle Eigenschaft auf fsStayOnTop.
  • Um das Standardverhalten eines Formulars festzulegen, setzen Sie die FormKind auf einen der folgenden Werte; fkNone, fkNormal, fkServerPanel oder fkModal.
  • Wenn fkModal geschlossen ist, handelt es sich um ein modales Formular – das heißt, es wartet auf eine Benutzereingabe, bevor es fortfährt, beispielsweise das Schließen des Formulars. Wenn fkServerPanel dann wird das Formular als Server-Panel angezeigt. Wenn fkNormal , verhält sich das Formular wie ein normales, nicht-modales Formular.
  • Um die Standard-Bildlaufleisten des Formulars zu entfernen, ändern Sie den Wert des HorzScrollBar und VertScrollBar .
  • Um das Formular zu einem MDI-Frame oder MDI-Child zu machen, verwenden Sie die FormStyle Eigenschaft.
  • Um den Rahmenstil des Formulars zu ändern, verwenden Sie die BorderIcons und BorderStyle Eigenschaften (die Ergebnisse sind zur Laufzeit sichtbar).
  • Um das Symbol für das minimierte Formular zu ändern, verwenden Sie die Icon Eigenschaft.
  • Um die Anfangsposition eines Formulars im Anwendungsfenster festzulegen, verwenden Sie die Position Eigenschaft.
  • Um den Anfangszustand des Formulars festzulegen (z. B. minimiert, maximiert oder normal), verwenden Sie die WindowState Eigenschaft.
  • Um den Arbeitsbereich des Formulars zur Laufzeit zu definieren, verwenden Sie die ClientHeight und ClientWidth Eigenschaften (beachten Sie, dass ClientHeight und ClientWidth den Bereich innerhalb des Formularrahmens darstellen; Height und Width den gesamten Bereich des Formulars).
  • Um zur Laufzeit festzulegen, welches Steuerelement im Formular den anfänglichen Fokus hat, verwenden Sie die ActiveControl Eigenschaft.
  • Um alle Tastaturereignisse an das Formular weiterzuleiten, unabhängig vom ausgewählten Steuerelement, verwenden Sie die KeyPreview Eigenschaft.
  • Um ein bestimmtes Menü festzulegen, wenn ein Formular mehr als ein Menü enthält, verwenden Sie die Menu Eigenschaft.

Aktualisieren von Skriptformularen und Komponenten

Wenn die Oberfläche eines Skriptformulars veraltet ist – beispielsweise weil die Steuerelemente nicht aktualisiert oder neu gezeichnet werden –, können die Steuerelemente eingefroren oder beschädigt aussehen; dies kann auf intensive Hintergrundverarbeitung durch dieses Skript zurückzuführen sein.

Die Update Methode des Skriptformulars sowie viele Skriptkomponenten aus dem Tool Palette Bedienfelds bieten eine Möglichkeit, den grafischen Inhalt des Formulars oder bestimmter Steuerelemente zu aktualisieren. Die Zeilen, die die Update Methode enthalten, sind im folgenden Beispiel grau hervorgehoben.

StatusBar component and its Update method Example:

Procedure TConverterForm.loadbuttonClick(Sender: TObject);
Begin
 If OpenPictureDialog1.Execute then
 Begin
 XPProgressBar1.Position := 0;
 XStatusBar1.SimpleText  := '  Loading...';
 XStatusBar1.Update;
 
 // loading a monochrome bitmap only
 Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
 
 // Check if image is monochrome, otherwise prompt a warning
 If Image1.Picture.Bitmap.PixelFormat > pf1bit Then
 Begin
 ShowWarning('The image is not a monochrome!');
 Close;
 End;
 
 lImageSize.Caption := IntToStr(Image1.Picture.Width) + ' x ' +
 IntToStr(Image1.Picture.Height) + ' mils';
 
 convertbutton.Enabled  := True;
 LoadButton.Enabled     := False;
 XStatusBar1.SimpleText := '  Ready...';
 XStatusBar1.Update;
 End;
End;

Der obige Codeausschnitt stammt aus dem PCB Logo Creator Skriptprojekt, das sich im Scripts\Delphiscript Scripts\Pcb\PCB Logo Creator Ordner der herunterladbaren Skriptsammlung zu finden ist.

AI-LocalizedKI-lokalisiert
Wenn Sie ein Problem feststellen, wählen Sie den Text/das Bild aus und drücken SieCtrl + Enter, um uns Ihr Feedback zu senden.
Funktionsverfügbarkeit

Die Ihnen zur Verfügung stehenden Funktionen hängen davon ab, über welche Altium-Lösung Sie verfügen – Altium Develop, Altium Agile Teams, Altium Agile Enterprise oder Altium Designer (mit aktivem Laufzeitvertrag).

Wenn Sie eine dokumentierte Funktion in Ihrer tatsächlich verwendeten Software nicht sehen, wenden Sie sich an den Altium-Vertrieb, um mehr zu erfahren.

Legacy-Dokumentation

Die Dokumentation von Altium Designer wird nicht mehr versioniert. Wenn Sie auf Dokumentation für ältere Versionen von Altium Designer zugreifen müssen, besuchen Sie den Abschnitt Legacy-Dokumentation auf der Seite Andere Installer.

Inhalt