Writing Scripts

 

Écriture de scripts

Il existe un certain nombre de concepts et de termes essentiels applicables à l’écriture de scripts :

  • Les processus sont des chaînes de commande que vous pouvez utiliser pour exécuter des commandes dans des scripts.
  • Les composants sont des objets de contrôle visuels du panneau Tool Palette panel que vous pouvez glisser-déposer sur un formulaire de script afin de manipuler la conception.
  • Un composant placé sur un formulaire de script possède des méthodes, des propriétés et des événements.
  • Les interfaces objet sont des interfaces objet spéciales que vous pouvez utiliser pour extraire et modifier des données dans les documents de conception à partir de vos scripts.

Langages de script

Le langage de script par défaut est défini sur DelphiScript (*.pas). Le moteur de script lui-même est écrit en Embarcadero Delphi, et le panneau Tool Palette est basé sur la VCL (Visual Component Library) de Delphi.

  • Vous pouvez ouvrir et exécuter des scripts existants écrits en VBScript et en JavaScript (JScript). Pour pouvoir créer de nouveaux scripts écrits en VBScript, vous devez activer l’option Legacy.Scripts.SupportOldLanguages dans la boîte de dialogue Advanced Settings dialog.

  • La documentation de l’API de script est disponible ici : Scripting API Objects. Veuillez noter que cette documentation a été mise à jour pour la dernière fois pour une ancienne version de Altium Designer. Bien que nombre des principes et approches restent identiques, gardez à l’esprit que les interfaces, objets, méthodes, propriétés et autres éléments ont changé depuis, et ne reflètent pas l’ensemble de ceux présents dans les versions plus récentes du logiciel.

Une unité DelphiScript

Un exercice de script simple et rapide peut être réalisé en créant d’abord un nouveau projet et un nouveau fichier de script. En supposant que le projet et le fichier de script soient définis sur le langage DelphiScript, un script simple « Hello World » peut être saisi comme ci-dessous.

Procedure ShowAMessage;
Var
 DefaultMessage;
Begin
 DefaultMessage := 'Hello World!';
 ShowMessage(DefaultMessage);
End;
Lorsqu’un document est modifié, un astérisque apparaît à côté du document de script, et l’icône du panneau Projects panel devient rouge. Lorsqu’une ligne de code du script est modifiée, un bloc rouge apparaît dans la marge gauche de la ligne, indiquant que la ligne a changé.

Dans la procédure, il existe une fonction DelphiScript standard ShowMessage qui ouvre une boîte de dialogue avec le message « Hello World », tel que défini par la variable DefaultMessage.

Comme toutes les variables sont de type variant dans les scripts, il n’est pas nécessaire de définir le type de la variable DefaultMessage dans le script.

Exécution du script

Pour exécuter l’un des scripts, sélectionnez File » Run Script dans les menus principaux, puis choisissez une procédure de script disponible dans la boîte de dialogue Select Item To Run. Lorsqu’une version est exécutée, une boîte de dialogue s’ouvre pour afficher le message.

Exécution d’une unité de script HelloWorld simple depuis le menu File » Run Script.
Exécution d’une unité de script HelloWorld simple depuis le menu File » Run Script.

Ce script comporte une procédure sans paramètres. Seules les procédures ou fonctions qui don't n’ont pas de paramètres apparaissent dans la boîte de dialogue Select Item To Run. Les procédures nécessitant des paramètres transmis sont appelées depuis le script lui-même (ou depuis un autre script), mais pas depuis un système externe tel que la boîte de dialogue Select Item To Run, où aucun paramètre n’est transmis.

Un script peut également être exécuté à l’aide de la commande Exécuter de l’éditeur, accessible via le bouton Run (), le raccourci clavier F9 , ou en sélectionnant Run » Run dans les menus principaux.

Outre la commande Exécuter elle-même, le menu déroulant Run  propose une série de commandes de contrôle et de débogage des scripts.Outre la commande Exécuter elle-même, le menu déroulant Run propose une série de commandes de contrôle et de débogage des scripts.

Lorsque la commande Run est sélectionnée pour la première fois, la boîte de dialogue Select Item to Run s’ouvre et vous permet de spécifier la procédure principale d’un script (ShowAMessage dans ce cas). Une fois définie, le script peut être relancé facilement depuis l’éditeur à l’aide de la commande Run . Utilisez Run » Set Project Startup Procedure pour modifier ce réglage vers une autre procédure, ou fermez puis rouvrez le projet de script pour effacer ce réglage.

Pour arrêter un script en cours d’exécution, utilisez le bouton Stop (), sélectionnez Run » Stop dans le menu principal, ou utilisez le raccourci Ctrl+F3.

Un formulaire DelphiScript

En développant le projet HelloWorld créé ci-dessus, un script similaire peut être créé à l’aide d’une unité de formulaire.

Un formulaire de script est une fenêtre de dialogue pouvant héberger divers contrôles tels que des boutons, des mémos et des zones de liste. Il possède des gestionnaires d’événements qui réagissent lorsqu’un contrôle génère un événement, par exemple lorsqu’un bouton est cliqué.

Pour créer le nouveau formulaire de script, cliquez avec le bouton droit sur le nom du projet dans le panneau Projects panel, choisissez l’option Add New to Project, puis sélectionnez Script Form. Le script peut être enregistré et renommé à l’aide de File » Save As dans les menus principaux.

Une fois le nouveau projet de script créé, ajoutez un nouveau script au projet. Une fois le nouveau projet de script créé, ajoutez un nouveau script au projet.

Le formulaire de script crée deux fichiers : un fichier *.dfm qui définit les éléments et les handles de la fenêtre du formulaire, et un fichier *.pas qui héberge les gestionnaires d’événements du formulaire ainsi que les procédures ou fonctions.

Pour afficher et modifier les valeurs de propriété du formulaire actuellement actif ou de ses composants, ouvrez le panneau Object Inspector. Le panneau Object Inspector sert à modifier les propriétés du formulaire et à insérer du code dans les gestionnaires d’événements associés au formulaire actif.

La configuration de la fenêtre et les propriétés du formulaire de script sont présentées dans le panneau Object Inspector.
La configuration de la fenêtre et les propriétés du formulaire de script sont présentées dans le panneau Object Inspector.

Notez que le formulaire de script propose deux onglets en bas du document : les onglets Code et Form .

L’onglet Code contient les gestionnaires d’événements et les procédures comme indiqué ci-dessus, tandis que l’onglet Form représente la boîte de dialogue et contient les contrôles ainsi que les gestionnaires d’événements associés. Utilisez les onglets ou le raccourci clavier F12 pour passer de l’un à l’autre.

Les termes « boîte de dialogue » et « formulaire de script » sont descriptivement équivalents dans ce guide. Le terme « formulaire » désigne la fenêtre en cours de conception en temps réel dans le système de script, tandis qu’une « boîte de dialogue » est un formulaire actif dans le logiciel qui attend une action de l’utilisateur et exécute une action lorsqu’un bouton de la boîte de dialogue ou un contrôle a été cliqué.

Le panneau Object Inspector vous permet d’examiner et de modifier les propriétés et les événements des composants du formulaire de script actif. Cliquer sur un composant unique du formulaire de script actif dans la fenêtre de l’éditeur de conception sélectionne ce composant et affiche dans le panneau Object Inspector les attributs qui lui sont associés. Vous pouvez également utiliser le champ déroulant en haut du panneau pour choisir dans une liste de tous les composants actuellement placés sur le formulaire actif. Le formulaire lui-même est également inclus.

Utilisez le panneau Object Inspector pour configurer la boîte de dialogue du formulaire et son action. 
Utilisez le panneau Object Inspector pour configurer la boîte de dialogue du formulaire et son action.

Les informations sont affichées sur deux onglets – Properties et Events :

  • L’onglet Properties du panneau répertorie tous les attributs de propriété du composant sélectionné. La liste exacte des attributs disponibles dépend du type particulier de composant actuellement inspecté. Une propriété est une caractéristique d’un objet qui influence soit son comportement visible, soit son fonctionnement. Par exemple, la propriété Visible (dans la sous-catégorie Behavior ) détermine si l’objet est affiché ou non sur le formulaire de script sur lequel il est placé. Les propriétés d’un composant peuvent être modifiées selon les besoins. Cliquez dans le champ à droite d’une propriété, puis saisissez directement une valeur, cochez/décochez une case ou sélectionnez une entrée dans une liste déroulante, selon le cas.
  • L’onglet Events du panneau fournit une liste de tous les événements auxquels le composant actuellement sélectionné peut réagir. Là encore, la liste exacte des événements disponibles dépend du type particulier de composant actuellement inspecté. Lorsqu’un événement se produit, par exemple lorsqu’un bouton d’un formulaire est cliqué, le script exécute l’action appropriée, à condition qu’une procédure de gestion de cet événement ait été définie dans le code. Ce type de procédure est appelé gestionnaire d’événement.

La structure de base d’un gestionnaire d’événement peut être ajoutée au code du document de script depuis le panneau Object Inspector. Sélectionnez simplement le composant pour lequel vous souhaitez définir un événement, choisissez le type d’événement concerné, puis double-cliquez dans le champ à droite de l’événement. Un nom est créé pour l’événement et utilisé dans la définition du nom de la procédure de gestion d’événement - FormName.EventName. Le code squelette de la procédure de gestion d’événement est alors ajouté au code principal du script, qui devient l’onglet actif dans l’espace de conception. Le contenu de la procédure de gestion d’événement peut ensuite être codé afin de fournir la réponse souhaitée lorsque l’événement se produit et est détecté par le script en cours d’exécution.

La section inférieure du panneau fournit, lorsqu’elle est disponible, une description récapitulative de la propriété ou de l’événement actuellement sélectionné.

Plusieurs composants peuvent être sélectionnés et modifiés simultanément. Les propriétés/événements communs à tous les composants de la sélection seront affichés dans le panneau. Les propriétés/événements dont les valeurs diffèrent d’un composant à l’autre apparaîtront vides. Modifiez simplement les propriétés et/ou événements selon vos besoins : les changements effectués seront immédiatement appliqués à chaque composant de la sélection. Par exemple, vous pouvez souhaiter modifier la police utilisée sur plusieurs boutons. Sélectionnez tous les boutons et modifiez selon vos besoins les propriétés répertoriées dans la catégorie Font : tous les boutons seront mis à jour pour afficher leur texte avec la même police.

Pour ce script de formulaire, modifiez les propriétés Caption du formulaire dans le panneau Object Inspector de HelloWorldForm à Hello World!. Ces chaînes correspondent à celles utilisées dans l’exemple de gestionnaire d’événement et dans le code de procédure présenté plus bas.

Pour des informations plus détaillées sur les composants et leurs propriétés, méthodes et événements, reportez-vous à la page Component Categories.

Ajouter et configurer des contrôles

Une fois la forme de base configurée, des contrôles peuvent être ajoutés à la boîte de dialogue selon les besoins en accédant au panneau Tool Palette. Le Tool Palette, basé sur la Visual Component Library de Delphi, est une palette de composants qui offre un large éventail de contrôles de fenêtre organisés en catégories de composants (voir les pages  Scripting Graphical Components et Component Categories pour plus de détails).

Les sections du panneau  Tool Palette peuvent être développées et réduites à l’aide des onglets d’en-tête de région.
Les sections du panneau Tool Palette peuvent être développées et réduites à l’aide des onglets d’en-tête de région.

Utilisez les contrôles en haut du panneau, les noms de catégories et le menu contextuel accessible par clic droit pour configurer la présentation des contrôles dans le panneau : développer/réduire les catégories, modifier la présentation des éléments de la palette, etc.

Tous les composants utilisés dans le panneau dérivent de TComponent dans la Visual Component Library de Borland Delphi.

Pour la version boîte de dialogue du projet « Hello World », il y a deux boutons sur la forme : Display et Close. Cliquez sur TButton dans la région Standard du panneau Tool Palette.

Faites-le deux fois pour placer deux boutons sur la forme. Un bouton sera utilisé pour afficher un message « Hello World! » dans une boîte de dialogue distincte, et le second bouton servira à fermer la boîte de dialogue principale.

Les composants peuvent être placés sur une forme de script en double-cliquant sur le composant dans le panneau Tool Palette, ou en cliquant une fois sur le composant puis sur la forme à l’endroit où vous souhaitez qu’il apparaisse.

Tous les composants du panneau possèdent des propriétés, des méthodes et des événements associés, où :

  • Une Property est une caractéristique d’un objet qui influence soit son comportement visible, soit son fonctionnement. Par exemple, la propriété Visible détermine si un objet peut être vu sur une forme de script.
  • Une Method est une procédure toujours associée à un objet et qui définit le comportement de cet objet.
  • Un Event est une action ou une occurrence détectée par le script. Dans un script, le programmeur écrit du code pour chaque gestionnaire d’événement, conçu pour capturer un événement spécifique tel qu’un clic de souris.

Les propriétés et événements d’un composant peuvent être examinés et modifiés après son placement à l’aide du panneau Object Inspector.

À l’aide du panneau Object Inspector, les configurations des deux boutons peuvent être modifiées à partir de leurs noms et légendes par défaut.

Configurez le nom du premier bouton sur bDisplay et sa légende sur Display. Configurez le nom du second bouton sur bClose et sa légende sur Close. Cela permet de correspondre à l’exemple de code de gestionnaire d’événement présenté ci-dessous.

Sélectionnez un composant et modifiez ses propriétés dans le panneau Object Inspector.
Sélectionnez un composant et modifiez ses propriétés dans le panneau Object Inspector.

La zone de commentaires en bas du panneau Object Inspector fournit une description de la propriété mise en surbrillance.

Le code du gestionnaire d’événement peut être construit en référençant directement les contrôles de la forme. Dans cet exemple, le bouton Display déclenchera une boîte de dialogue ShowMessage au-dessus de la forme existante, et l’action du bouton Close fermera cette forme.

Code du gestionnaire d’événement

Un double-clic sur le bouton Display ouvrira la forme en vue Code et créera le squelette de code pour son gestionnaire d’événement. Sinon, sélectionnez le bouton puis l’onglet Events dans le panneau Object Inspector. Un double-clic sur l’événement OnClick dans le panneau ouvrira la vue Code comme ci-dessus. Dans la vue Code, l’instruction ShowMessage peut être incluse dans le gestionnaire d’événement comme indiqué dans la liste ci-dessous.

Procedure THelloWorldForm.bDisplayClick(Sender: TObject);
Begin
 ShowMessage('Hello World!');
End;
Pour afficher les gestionnaires d’événement prédéfinis pour n’importe quel composant de votre forme de script, sélectionnez le composant, puis cliquez sur l’onglet Events dans le panneau Object Inspector.
De même, le gestionnaire d’événement du bouton Fermer peut être défini en générant un événement OnClick qui applique l’instruction Close (form) :
Procedure THelloWorldForm.bCloseClick(Sender: TObject);
Begin
 Close;
End;

Une fois les gestionnaires d’événement définis, il doit y avoir une procédure dans le script qui servira de point de départ lors de l’appel de la boîte de dialogue depuis le logiciel. Celle-ci est ajoutée à la fin du script de code.

Notez que le nom de la forme est HelloWorldForm et que le nom de la procédure est RunHelloWorld — il est important d’avoir des noms de forme uniques dans un même script afin d’éviter les conflits de noms de forme.

Procedure RunHelloWorld;
Begin
 HelloWorldForm.ShowModal;
End;

Le script peut être enregistré puis exécuté depuis les menus principaux (File» Run Script) en exécutant l’élément de procédure RunHelloWorld sous l’entrée HelloWorldDialog.

Sinon, la procédure peut être affectée à la commande/bouton Run () via le menu Run » Set Startup Project Procedure.

Exécution d’un script de forme HelloWorld, où le bouton Display de la forme active une boîte de dialogue ShowMessage.
Exécution d’un script de forme HelloWorld, où le bouton Display de la forme active une boîte de dialogue ShowMessage.

Le panneau Object Inspector permet de modifier facilement les propriétés et événements d’une unité de forme. Par exemple, pour changer la position de la forme dans l’espace de travail, utilisez le panneau pour modifier la valeur poScreenCenter de la propriété de position de la forme. La boîte de dialogue sera alors placée au centre de l’écran du bureau lorsque le script sera exécuté.

Une version de référence des scripts du projet Hello World se trouve dans le dossier Scripts\Delphiscript Scripts\General de la collection de scripts downloadable. Gardez à l’esprit qu’il s’agit de conceptions de référence héritées et qu’elles ne sont pas mises à jour.

Appel d’une procédure

Comme indiqué ci-dessus, tout script (utilisant le même langage) au sein d’un projet a accès aux variables globales et aux procédures ; ainsi, une procédure dans un script peut appeler une autre procédure dans un script différent du projet.

Cela peut être démontré par la section de code supplémentaire ShowAParametricMessage dans le projet d’exemple HelloWorld :

Procedure ShowAParametricMessage(S : String);
Var
    DefaultMessage;
Begin
    DefaultMessage := 'Hello World!';

    If S = '' Then ShowMessage(DefaultMessage)
              Else ShowMessage(S);
End;

Cela établit une variable chaîne « S » qui peut être transmise à la procédure ShowAParametricMessage.

La chaîne transmise sera affichée à l’aide de la fonction de boîte de dialogue ShowMessage, tandis qu’une simple méthode If-Then-Else provoque l’affichage d’un message « Hello World! » par défaut si la chaîne est vide.

Pour voir cela en action, ouvrez le projet d’exemple (HelloWorld.PrjScr) et ajoutez la ligne surlignée en gris dans le script HelloWorldDialog (et non dans le script HelloWorld), comme indiqué ci-dessous.

...
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;
...

Lorsque le script HelloWorldDialog est exécuté et que le bouton Close est cliqué, la procédure globale ShowAParametricMessage est appelée depuis le script HelloWorld.

Une procédure paramétrique du script HelloWorld est appelée depuis le script HelloWorldDialog.
Une procédure paramétrique du script HelloWorld est appelée depuis le script HelloWorldDialog.

L’appel transmet la chaîne de message « Goodbye World » à la procédure ShowAParametricMessage, de sorte que ce message s’affiche lorsque le bouton Fermer est cliqué, avant la fermeture de la forme.

L’appel de script présenté ci-dessus insère un message spécifié dans la procédure de fermeture de la forme HelloWoldDialog.
L’appel de script présenté ci-dessus insère un message spécifié dans la procédure de fermeture de la forme HelloWoldDialog.

Si le paramètre de chaîne transmis est vide, ShowAParametricMessage(''), le message « Hello World! » par défaut s’affiche comme défini dans la procédure ShowAParametricMessage.

Pour une liste des raccourcis clavier qui aident à rationaliser le processus d’écriture et de débogage des scripts, reportez-vous à la page Script Editor Tools.

Parcourir les identifiants de script à l’aide du panneau Code Explorer

Le panneau Code Explorer fournit un résumé visuel de tous les identifiants (variables, fonctions et procédures) utilisés dans le document de script actif.

Le panneau Code Explorer
Le panneau Code Explorer

Les informations sur les identifiants qui apparaissent dans le panneau sont regroupées dans les dossiers de niveau supérieur suivants :

  • Procedures & Functions – inclut toutes les procédures et fonctions déclarées dans le document de script actif. Pour chaque procédure/fonction, tous les paramètres transmis à la procédure/fonction ou les variables qui lui sont locales sont également répertoriés.

  • Variables – inclut toutes les variables globales déclarées dans le document de script actif.

Si des variables locales sont déclarées pour une procédure/fonction, elles apparaîtront dans un sous-dossier de variables, sous cette procédure/fonction. Des icônes distinctes sont utilisées pour différencier les divers identifiants :

Procédure

Fonction

Paramètre de procédure/fonction

Variable (locale ou globale)

Un double-clic sur une entrée dans le panneau (ou sa sélection puis l’appui sur la touche Enter) permet d’accéder à la zone de code correspondante dans l’espace de conception.

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.

Contenu