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 TimerOpenDialogMainMenu
- Die
nicht-visuelle Komponente kann dazu verwendet werden, bestimmten Code in festgelegten Intervallen auszuführen, und sie ist für den Benutzer niemals sichtbar.Timer - Die
,Button undEdit sind visuelle Komponenten.Memo
Beide Komponententypen werden zur Entwurfszeit angezeigt, nicht-visuelle Komponenten sind jedoch zur Laufzeit nicht sichtbar. Komponenten aus dem
- Eigenschaften
- Ereignisse
- Methoden
Eine
Ein
Ein
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 LabelEditButton
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
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
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*.PAS.PAS.DFM
Bei der Arbeit mit einem Skriptformular und seinen Komponenten können alle Elementeigenschaften über das Caption
Ein neues Skriptformular erstellen
Wenn ein Skriptprojekt geöffnet ist, klicken Sie mit der rechten Maustaste auf ein Projekt im 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 ShowModalVisibleShowModal
Procedure RunDialog; Begin DialogForm.ShowModal; End;
Das ShowModalRunDialogDialogFormDialogForm.ShowModal
Das ModalResultmrOkmrCancelShowModal
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;
Wenn der Benutzer auf eine der beiden Schaltflächen in diesem Skriptformular klickt, wird das Dialogfeld geschlossen. Es ist nicht erforderlich, die CloseModalResult
Beachten Sie: Wenn Sie die ModalResultCancelCancelTrueSender.Cancel := TrueCancelButtonClick
Eingaben vom Benutzer entgegennehmen
Eine der gängigen Komponenten, die Benutzereingaben entgegennehmen können, ist die TEditTMaskEdit
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
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.
Das Projekt „HelloWorld“ aus dem Scripts\DelphiScript Scripts\General\
“
Das Beispielskript „ShowModal“ aus dem Scripts\DelphiScript Scripts\General\
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
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 OnClickOnEnterOnExitOnEnterOnExit
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
Komponentenereignisse
Um eine Liste der Ereignisse anzuzeigen, auf die eine Komponente reagieren kann, wählen Sie eine Komponente aus und öffnen Sie die
Wählen Sie beispielsweise die TButtonOnClickOnClick

Wenn eine Schaltfläche eine CloseCloseClickOnClickClose
Zusammenfassend lässt sich sagen: Wählen Sie eine Schaltflächenkomponente entweder im Formular oder mithilfe des OnClick
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 NilConstructorOpenSaveTOpenDialogTSaveDialog
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
Eigenschaft aufFormStyle .fsStayOnTop - Um das Standardverhalten eines Formulars festzulegen, setzen Sie die
auf einen der folgenden Werte;FormKind ,fkNone ,fkNormal oderfkServerPanel .fkModal - Wenn
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. WennfkModal dann wird das Formular als Server-Panel angezeigt. WennfkServerPanel , verhält sich das Formular wie ein normales, nicht-modales Formular.fkNormal - Um die Standard-Bildlaufleisten des Formulars zu entfernen, ändern Sie den Wert des
undHorzScrollBar .VertScrollBar - Um das Formular zu einem MDI-Frame oder MDI-Child zu machen, verwenden Sie die
Eigenschaft.FormStyle - Um den Rahmenstil des Formulars zu ändern, verwenden Sie die
undBorderIcons Eigenschaften (die Ergebnisse sind zur Laufzeit sichtbar).BorderStyle - Um das Symbol für das minimierte Formular zu ändern, verwenden Sie die
Eigenschaft.Icon - Um die Anfangsposition eines Formulars im Anwendungsfenster festzulegen, verwenden Sie die
Eigenschaft.Position - Um den Anfangszustand des Formulars festzulegen (z. B. minimiert, maximiert oder normal), verwenden Sie die
Eigenschaft.WindowState - Um den Arbeitsbereich des Formulars zur Laufzeit zu definieren, verwenden Sie die
undClientHeight Eigenschaften (beachten Sie, dassClientWidth undClientHeight den Bereich innerhalb des Formularrahmens darstellen;ClientWidth undHeight den gesamten Bereich des Formulars).Width - Um zur Laufzeit festzulegen, welches Steuerelement im Formular den anfänglichen Fokus hat, verwenden Sie die
Eigenschaft.ActiveControl - Um alle Tastaturereignisse an das Formular weiterzuleiten, unabhängig vom ausgewählten Steuerelement, verwenden Sie die
Eigenschaft.KeyPreview - Um ein bestimmtes Menü festzulegen, wenn ein Formular mehr als ein Menü enthält, verwenden Sie die
Eigenschaft.Menu
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 UpdateUpdate
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 CreatorScripts\Delphiscript Scripts\Pcb\PCB Logo Creator