Formulaires et composants
Présentation des composants graphiques
Le système de script gère deux types de composants : les composants visuels et les composants non visuels.
Les composants visuels servent à construire l'interface utilisateur, tandis que les composants non visuels sont utilisés pour différentes tâches, telles que TimerOpenDialogMainMenu
- Le
composant non visuel peut être utilisé pour déclencher un code spécifique à intervalles réguliers ; il n’est jamais visible par l’utilisateur.Timer - La
,Button etEdit sont des composants visuels.Memo
Les deux types de composants apparaissent lors de la conception, mais les composants non visuels ne sont pas visibles lors de l'exécution. Les composants du
- Propriétés
- Événements
- Méthodes
Une
Un
Un
Tous les formulaires de script comportent un ou plusieurs composants. Les composants affichent généralement des informations ou permettent à l’utilisateur d’effectuer une action. Par exemple, un LabelEditButton
N'importe quelle combinaison de composants peut être placée sur un formulaire, et pendant l'exécution du script, l'utilisateur peut interagir avec n'importe quel composant du formulaire. C'est au programmeur de décider ce qui se passe lorsqu'un utilisateur clique sur un bouton ou modifie le texte d'une Edit
Le système de script fournit un certain nombre de composants pouvant être utilisés pour créer des interfaces utilisateur complexes pour les scripts. Pour placer un composant sur un formulaire, repérez son icône dans lepanneau « Palette d’outils » et double-cliquez dessus. Cette action place le composant sur le formulaire actif. La représentation visuelle de la plupart des composants est définie par leurs propriétés. Un composant est initialement placé à un emplacement par défaut sur le formulaire, mais il peut être repositionné (glissé) et redimensionné (étiré) selon les besoins. Vous pouvez également modifier sa taille et sa position ultérieurement à l’aide du
Lorsqu’un composant est déposé sur un formulaire, le système de script génère automatiquement le code nécessaire à son utilisation et met à jour le formulaire de script. Il suffit de définir les propriétés et d’implémenter le code du gestionnaire d’événements pour utiliser les méthodes souhaitées et faire fonctionner le composant sur le formulaire.
Conception de formulaires de script
Un formulaire de script est conçu pour interagir avec l’utilisateur au sein de l’environnement. La conception de formulaires de script est au cœur du développement visuel.
En pratique, tous les composants sont placés sur un formulaire de script, et chaque propriété définie est stockée dans un fichier décrivant le formulaire (un *.DFM*.PAS.PAS.DFM
Lorsque vous travaillez avec un formulaire de script et ses composants, toutes les propriétés des éléments peuvent être consultées et modifiées à l’aide du Caption
Création d’un nouveau formulaire de script
Une fois un projet de script ouvert, cliquez avec le bouton droit sur un projet dans le EditScript1.pas
Affichage d’un formulaire de script
Un script doit comporter une procédure qui affiche le formulaire lorsque celui-ci est exécuté. Au sein de cette procédure, la ShowModalVisibleShowModal
Procedure RunDialog; Begin DialogForm.ShowModal; End;
L' ShowModalRunDialogDialogFormDialogForm.ShowModal
L’ 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;
Lorsque l’utilisateur clique sur l’un ou l’autre des boutons de ce formulaire de script, la boîte de dialogue se ferme. Il n’est pas nécessaire d’appeler la CloseModalResult
Notez que si vous souhaitez définir la propriété ModalResultCancelCancelTrueSender.Cancel := TrueCancelButtonClick
Accepter les entrées de l’utilisateur
L'un des composants courants permettant d'accepter les entrées de l'utilisateur est le TEditTMaskEdit
L'exemple ci-dessous illustre le processus qui se déroule lorsque l'utilisateur clique sur le bouton après avoir saisi quelque chose dans la zone d'édition. Si l'utilisateur n'a rien saisi dans le composant d'édition (champ vide), le gestionnaire d'événements affiche un message d'avertissement.
Procedure TScriptForm.ButtonClick(Sender : TObject); Begin If Edit1.Text = '' Then Begin ShowMessage('Warning - empty input!'); Exit; End; // do something else for the input End;
Notez qu’un utilisateur peut déplacer le focus de la boîte de dialogue à l’aide de la
Réponse aux événements
Lorsqu’un bouton d’un formulaire ou d’un composant est cliqué, le système de script réagit en recevant une notification d’événement d’Altium Designer et en appelant la méthode de gestion d’événement appropriée.
Le projet HelloWorld situé dans le Scripts\DelphiScript Scripts\General\
Le script d'exemple ShowModal situé dans le Scripts\DelphiScript Scripts\General\
Écriture de gestionnaires d’événements
Chaque composant d’un script de formulaire dispose d’un ensemble de noms d’événements, qui sont utilisés par les gestionnaires d’événements du script pour déterminer comment celui-ci réagira aux actions de l’utilisateur dans Altium Designer. Par exemple, lorsqu’un utilisateur clique sur un bouton d’un formulaire, Altium Designer envoie un message au script et celui-ci réagit à ce nouvel événement. Si l’ OnClick
Le code permettant de répondre aux événements est généralement contenu dans les gestionnaires d’événements DelphiScript, et tous les composants disposent d’un ensemble d’événements auxquels ils peuvent réagir. Par exemple, tous les composants cliquables disposent d’un OnClickOnEnterOnExitOnEnterOnExit
En résumé, un événement est un lien entre un événement dans Altium Designer, tel que le clic sur un bouton, et un fragment de code qui répond à cet événement. Le code de réponse est un gestionnaire d’événements. Ce code modifie les valeurs des propriétés et appelle des méthodes.
Propriétés d’un composant
Pour afficher la liste des propriétés d’un composant, sélectionnez-le puis ouvrez l’
Événements du composant
Pour afficher la liste des événements auxquels un composant peut réagir, sélectionnez un composant et ouvrez l'
Par exemple, sélectionnez le TButtonOnClickOnClick

Si un bouton possède une CloseCloseClickOnClickClose
En résumé, sélectionnez un composant « bouton » soit directement dans le formulaire, soit à l’aide du OnClick
Méthodes des composants
Pour consulter la liste des méthodes d’un composant, reportez-vous au document « Référence des composants ».
Déposer des composants sur un formulaire de script
Pour utiliser les composants du panneau « Palette d’outils » dans un script, un formulaire de script doit exister avant que les composants puissent y être déposés. Normalement, lorsque des composants sont déposés sur un formulaire de script, ces objets n’ont pas besoin d’être créés ou détruits : le formulaire de script s’en charge automatiquement.
Le système de script génère également automatiquement le code nécessaire à l’utilisation d’un composant et met à jour le formulaire de script. Il suffit ensuite de définir les propriétés, d’insérer du code dans les gestionnaires d’événements et d’utiliser les méthodes requises pour mettre en œuvre un formulaire de script fonctionnel.
Création de composants dans un script
Les composants peuvent être directement créés ou détruits dans un script en passant un NilConstructorOpenSaveTOpenDialogTSaveDialog
Personnalisation des formulaires de script
Les points essentiels à retenir pour personnaliser les formulaires de script sont les suivants :
- Pour forcer un formulaire à rester au premier plan par rapport aux autres panneaux ouverts, définissez la
propriété surFormStyle .fsStayOnTop - Pour définir le comportement par défaut d'un formulaire, définissez la
sur l’une des valeurs suivantes :FormKind ,fkNone ,fkNormal oufkServerPanel .fkModal - Si
est fermé, alors le formulaire sera un formulaire modal — c’est-à-dire qu’il attendra une action de l’utilisateur avant de poursuivre, par exemple la fermeture du formulaire. SifkModal alors le formulaire s’affichera sous la forme d’un panneau serveur. SifkServerPanel alors le formulaire se comporte comme un formulaire normal non modal.fkNormal - Pour supprimer les barres de défilement par défaut du formulaire, modifiez la valeur de l’attribut
etHorzScrollBar .VertScrollBar - Pour faire du formulaire un cadre MDI ou un enfant MDI, utilisez la
.FormStyle - Pour modifier le style de bordure du formulaire, utilisez la
etBorderIcons (les résultats sont visibles à l'exécution).BorderStyle - Pour modifier l'icône du formulaire minimisé, utilisez la
propriété.Icon - Pour spécifier la position initiale d'un formulaire dans la fenêtre de l'application, utilisez la
propriété.Position - Pour définir l'état initial du formulaire (par exemple, minimisé, maximisé ou normal), utilisez la
propriété.WindowState - Pour définir la zone de travail du formulaire lors de l'exécution, utilisez la
etClientHeight (notez queClientWidth etClientHeight représentent la zone située à l'intérieur des bordures du formulaire ;ClientWidth tandis queHeight représentent la zone entière du formulaire).Width - Pour spécifier quel contrôle a le focus initial dans le formulaire lors de l'exécution, utilisez la
propriété.ActiveControl - Pour transmettre tous les événements clavier au formulaire, quel que soit le contrôle sélectionné, utilisez la
propriété.KeyPreview - Pour spécifier un menu particulier, si un formulaire contient plusieurs menus, utilisez la
propriété.Menu
Actualisation des formulaires et composants de script
Lorsque l'affichage d'un formulaire de script n'est plus à jour, par exemple lorsque les contrôles ne sont pas mis à jour ou redessinés, ceux-ci peuvent sembler figés ou corrompus — cela peut être dû à un traitement en arrière-plan intensif effectué par ce script.
La 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;
L'extrait de code ci-dessus est tiré du PCB Logo CreatorScripts\Delphiscript Scripts\Pcb\PCB Logo Creator