Writing Scripts

 

Scrittura di script

Esistono numerosi concetti e termini essenziali che si applicano alla scrittura di script:

  • I processi sono stringhe di comando che è possibile usare per eseguire comandi negli script.
  • I componenti sono oggetti di controllo visivi nel pannello Tool Palette panel che è possibile trascinare e rilasciare in un modulo di script per manipolare il progetto.
  • Un componente posizionato in un modulo di script dispone di metodi, proprietà ed eventi.
  • Le interfacce oggetto sono interfacce oggetto speciali che è possibile usare per estrarre e modificare dati nei documenti di progetto dai propri script.

Linguaggi di scripting

Il linguaggio di scripting predefinito è impostato su DelphiScript (*.pas). Il motore di scripting stesso è scritto in Embarcadero Delphi e il pannello Tool Palette si basa sulla VCL (Visual Component Library) di Delphi.

  • È possibile aprire ed eseguire script esistenti scritti in VBScript e JavaScript (JScript). Per poter creare nuovi script scritti in VBScript, è necessario abilitare l'opzione Legacy.Scripts.SupportOldLanguages nella finestra di dialogo Advanced Settings dialog.

  • La documentazione per l'API di scripting è disponibile qui: Scripting API Objects. Si noti che questa documentazione è stata aggiornata l'ultima volta per una versione precedente di Altium Designer. Sebbene molti dei principi e degli approcci rimangano invariati, occorre tenere presente che interfacce, oggetti, metodi, proprietà e simili sono cambiati da allora e non riflettono l'intero insieme di quelli presenti nelle versioni successive del software.

Un'unità DelphiScript

Un esercizio di scripting rapido e di base può essere completato creando innanzitutto un nuovo progetto e un nuovo file di script. Supponendo che il progetto e il file di script siano impostati sul linguaggio DelphiScript, è possibile inserire un semplice script "Hello World" come mostrato di seguito.

Procedure ShowAMessage;
Var
 DefaultMessage;
Begin
 DefaultMessage := 'Hello World!';
 ShowMessage(DefaultMessage);
End;
Quando un documento viene modificato, accanto al documento di script compare un asterisco e l'icona nel pannello Projects panel diventa rossa. Quando una riga di codice dello script viene modificata, compare un blocco rosso nel margine sinistro della riga, a indicare che la riga è stata modificata.

All'interno della procedura è presente una funzione standard di DelphiScript ShowMessage che apre una finestra di dialogo con il messaggio "Hello World", come definito dalla variabile DefaultMessage.

Poiché negli script tutte le variabili sono di tipo variant, non è necessario definire il tipo della variabile DefaultMessage nello script.

Esecuzione dello script

Per eseguire uno degli script, selezionare File » Run Script dai menu principali, quindi scegliere una procedura di script disponibile dalla finestra di dialogo Select Item To Run. Quando viene eseguita una versione, si aprirà una finestra di dialogo per visualizzare il messaggio.

Esecuzione di una semplice unità di script HelloWorld dal menu File » Run Script.
Esecuzione di una semplice unità di script HelloWorld dal menu File » Run Script.

Questo script contiene una procedura senza parametri. Solo le procedure o funzioni che don't hanno parametri compaiono nella finestra di dialogo Select Item To Run. Le procedure che richiedono parametri passati vengono chiamate dall'interno dello script (o da un altro script), ma non da un sistema esterno come la finestra di dialogo Select Item To Run, dove i parametri non vengono passati.

Uno script può anche essere eseguito usando il comando Run dell'editor, accessibile tramite il pulsante Run (), il tasto di scelta rapida F9 oppure selezionando Run » Run dai menu principali.

Insieme al comando Run stesso, il menu a discesa Run  offre una gamma di comandi per il controllo e il debug degli script.Insieme al comando Run stesso, il menu a discesa Run offre una gamma di comandi per il controllo e il debug degli script.

Quando il comando Run viene selezionato per la prima volta, si aprirà la finestra di dialogo Select Item to Run che consente di specificare la procedura principale di uno script (ShowAMessage in questo caso). Una volta impostata, lo script può essere eseguito facilmente più volte dall'editor usando il comando Run . Usare Run » Set Project Startup Procedure per modificare l'impostazione scegliendo una procedura diversa, oppure chiudere e riaprire il progetto di script per cancellare l'impostazione.

Per arrestare uno script in esecuzione, usare il pulsante Stop (), selezionare Run » Stop dal menu principale oppure usare la scorciatoia Ctrl+F3.

Un modulo DelphiScript

Espandendo il progetto HelloWorld creato sopra, è possibile creare uno script simile usando un'unità modulo.

Un modulo di script è una finestra di dialogo che può ospitare una gamma di controlli come pulsanti, memo e caselle di elenco. Dispone di gestori eventi che rispondono quando un controllo genera un evento, ad esempio quando si fa clic su un pulsante.

Per creare il nuovo modulo di script, fare clic con il pulsante destro sul nome del progetto nel pannello Projects panel, scegliere l'opzione Add New to Project e selezionare Script Form. Lo script può essere salvato e rinominato usando File » Save As dai menu principali.

Una volta creato un nuovo progetto di script, aggiungere un nuovo script al progetto. Una volta creato un nuovo progetto di script, aggiungere un nuovo script al progetto.

Il modulo di script crea due file: un file *.dfm che definisce gli elementi e gli handle della finestra del modulo e un file *.pas che ospita i gestori eventi del modulo e le procedure o funzioni.

Per visualizzare e modificare i valori delle proprietà del modulo attualmente attivo o dei suoi componenti, aprire il pannello Object Inspector. Il pannello Object Inspector viene usato per modificare le proprietà del modulo e inserire codice nei gestori eventi associati al modulo corrente.

La configurazione della finestra e le proprietà del modulo di script sono illustrate nel pannello Object Inspector.
La configurazione della finestra e le proprietà del modulo di script sono illustrate nel pannello Object Inspector.

Si noti che il modulo di script offre due schede nella parte inferiore del documento: le schede Code e Form .

La scheda Code contiene i gestori eventi e le procedure come mostrato sopra, mentre la scheda Form rappresenta la finestra di dialogo e contiene i controlli e i relativi gestori eventi. Usare le schede o il tasto di scelta rapida F12 per passare dall'una all'altra.

I termini "dialog" e "script form" sono descrittivamente equivalenti in questa guida. Il termine "form" si riferisce alla finestra che viene progettata in tempo reale nel sistema di scripting, mentre un "dialog" è un modulo attivo nel software che attende il feedback dell'utente ed esegue un'azione quando si fa clic su un pulsante della finestra di dialogo o su un controllo.

Il pannello Object Inspector consente di esaminare e modificare le proprietà e gli eventi dei componenti nel modulo di script attivo. Facendo clic su un singolo componente nel modulo di script attivo nella finestra dell'editor di progettazione, il componente verrà selezionato e nel pannello Object Inspector verranno visualizzati gli attributi associati. In alternativa, usare il campo a discesa nella parte superiore del pannello per scegliere da un elenco di tutti i componenti attualmente posizionati nel modulo attivo. È incluso anche il modulo stesso.

Usare il pannello Object Inspector per configurare la finestra di dialogo del modulo e la relativa azione. 
Usare il pannello Object Inspector per configurare la finestra di dialogo del modulo e la relativa azione.

Le informazioni sono visualizzate in due schede – Properties e Events:

  • La scheda Properties del pannello elenca tutti gli attributi di proprietà del componente selezionato. L'elenco esatto degli attributi disponibili dipenderà dal particolare tipo di componente attualmente in esame. Una proprietà è una caratteristica di un oggetto che ne influenza il comportamento visibile oppure le operazioni. Ad esempio, la proprietà Visible (nella sottocategoria Behavior ) determina se l'oggetto viene o meno visualizzato nel modulo di script su cui è posizionato. Le proprietà di un componente possono essere modificate secondo necessità. Fare clic all'interno del campo a destra di una proprietà e digitare direttamente, attivare/disattivare una casella di controllo oppure selezionare una voce da un elenco a discesa, a seconda dei casi.
  • La scheda Events del pannello fornisce un elenco di tutti gli eventi a cui il componente attualmente selezionato può reagire. Anche in questo caso, l'elenco esatto degli eventi disponibili dipenderà dal particolare tipo di componente attualmente in esame. Quando si verifica un evento, ad esempio il clic su un pulsante di un modulo, lo script eseguirà l'azione appropriata, a condizione che nel codice sia stata definita una procedura di gestione per l'evento. Questo tipo di procedura è chiamato gestore eventi.

La struttura di base per un gestore eventi può essere aggiunta al codice del documento di script dall'interno del pannello Object Inspector. È sufficiente selezionare il componente per cui si desidera definire un evento, scegliere il particolare tipo di evento e quindi fare doppio clic all'interno del campo a destra dell'evento. Viene creato un nome per l'evento e utilizzato nella definizione del nome della procedura di gestione dell'evento - FormName.EventName. Il codice scheletro per la procedura di gestione dell'evento viene quindi aggiunto al codice principale dello script, che diventa la scheda attiva nello spazio di progettazione. Il "contenuto" della procedura di gestione dell'evento può quindi essere codificato per fornire la risposta desiderata quando l'evento si verifica e viene rilevato dallo script in esecuzione.

La sezione inferiore del pannello fornisce una descrizione riepilogativa della proprietà o dell'evento attualmente selezionato, ove disponibile.

È possibile selezionare e modificare simultaneamente più componenti. Nel pannello verranno visualizzate le proprietà/gli eventi comuni a tutti i componenti selezionati. Le proprietà/gli eventi che hanno valori diversi tra i componenti verranno visualizzati come vuoti. È sufficiente modificare le proprietà e/o gli eventi secondo necessità: le modifiche apportate verranno trasferite immediatamente a ciascun componente della selezione. Ad esempio, si potrebbe voler cambiare il carattere usato su più pulsanti con un font specifico. Selezionare tutti i pulsanti e modificare secondo necessità le proprietà elencate nella categoria Font: tutti i pulsanti verranno aggiornati per visualizzare il testo usando lo stesso font.

Per questo script di modulo, modificare le proprietà Caption del modulo nel pannello Object Inspector da HelloWorldForm a Hello World!. Queste stringhe corrispondono a quelle usate nell'esempio di gestore eventi e nel codice della procedura mostrati più avanti.

Per informazioni più dettagliate sui componenti e sulle relative proprietà, metodi ed eventi, fare riferimento alla pagina Component Categories.

Aggiungere e configurare i controlli

Con il modulo di base configurato, è possibile aggiungere i controlli alla finestra di dialogo secondo necessità accedendo al pannello Tool Palette. Il Tool Palette, basato sulla Visual Component Library di Delphi, è una tavolozza di componenti che offre un’ampia gamma di controlli per finestre organizzati in categorie di componenti (vedere le pagine Scripting Graphical Components e Component Categories per maggiori dettagli).

Le sezioni del pannello  Tool Palette possono essere espanse e compresse utilizzando le schede di intestazione delle aree.
Le sezioni del pannello Tool Palette possono essere espanse e compresse utilizzando le schede di intestazione delle aree.

Utilizzare i controlli nella parte superiore del pannello, i nomi delle categorie e il menu del tasto destro per configurare la presentazione dei controlli nel pannello: espandere/comprimere le categorie, modificare la presentazione degli elementi della tavolozza e così via.

Tutti i componenti utilizzati nel pannello derivano da TComponent nella Borland Delphi Visual Component Library.

Per la versione finestra di dialogo del progetto 'Hello World', nel modulo sono presenti due pulsanti: Display e Close. Fare clic su TButton nell’area Standard del pannello Tool Palette.

Ripetere questa operazione due volte per posizionare due pulsanti sul modulo. Un pulsante verrà utilizzato per visualizzare un messaggio 'Hello World!' in una finestra di dialogo separata, mentre il secondo pulsante verrà utilizzato per chiudere la finestra di dialogo principale.

I componenti possono essere posizionati in un modulo script facendo doppio clic sul componente nel pannello Tool Palette, oppure facendo clic una volta sul componente e poi facendo clic sul modulo nel punto in cui si desidera che il componente appaia.

Tutti i componenti nel pannello hanno Proprietà, Metodi ed Eventi associati, dove:

  • Una Property è una caratteristica di un oggetto che influenza il suo comportamento visibile oppure le sue operazioni. Ad esempio, la proprietà Visible determina se un oggetto può essere visto in un modulo script.
  • Un Method è una procedura sempre associata a un oggetto e definisce il comportamento di quell’oggetto.
  • Un Event è un’azione o un’occorrenza rilevata dallo script. In uno script, il programmatore scrive codice per ciascun gestore eventi progettato per intercettare un evento specifico, come un clic del mouse.

Le proprietà e gli eventi di un componente possono essere esaminati e modificati dopo il posizionamento utilizzando il pannello Object Inspector.

Utilizzando il pannello Object Inspector, le configurazioni dei due pulsanti possono essere modificate rispetto ai nomi e alle didascalie predefiniti.

Configurare il nome del primo pulsante come bDisplay e la relativa didascalia come Display. Configurare il nome del secondo pulsante come bClose e la relativa didascalia come Close. Questo per corrispondere al codice di esempio del gestore eventi presentato di seguito.

Selezionare un componente e modificarne le proprietà nel pannello Object Inspector.
Selezionare un componente e modificarne le proprietà nel pannello Object Inspector.

Il riquadro dei commenti nella parte inferiore del pannello Object Inspector fornisce una descrizione della proprietà evidenziata.

Il codice del gestore eventi può essere costruito facendo riferimento direttamente ai controlli presenti nel modulo. In questo esempio, il pulsante Display avvierà una finestra di dialogo ShowMessage sopra il modulo esistente, mentre l’azione del pulsante Close chiuderà questo modulo.

Codice del gestore eventi

Facendo doppio clic sul pulsante Display si aprirà il modulo nella vista Codice e verrà creato il codice scheletro per il relativo gestore eventi. In alternativa, selezionare il pulsante e quindi la scheda Events nel pannello Object Inspector. Facendo doppio clic sull’evento OnClick nel pannello si aprirà la vista codice come sopra. All’interno della vista Codice, l’istruzione ShowMessage può essere inclusa nel gestore eventi come mostrato nell’elenco seguente.

Procedure THelloWorldForm.bDisplayClick(Sender: TObject);
Begin
 ShowMessage('Hello World!');
End;
Per visualizzare i gestori eventi predefiniti per qualsiasi componente nel modulo script, selezionare il componente, quindi fare clic sulla scheda Events nel pannello Object Inspector.
Allo stesso modo, il gestore eventi per il pulsante Close può essere definito generando un evento OnClick che applica l’istruzione Close (form):
Procedure THelloWorldForm.bCloseClick(Sender: TObject);
Begin
 Close;
End;

Con i gestori eventi definiti, è necessaria una procedura nello script da utilizzare come punto di partenza quando si richiama la finestra di dialogo dal software. Questa viene aggiunta alla fine dello script di codice.

Si noti che il nome del modulo è HelloWorldForm e il nome della procedura è RunHelloWorld: è importante avere nomi di modulo univoci nello stesso script per evitare conflitti tra nomi di modulo.

Procedure RunHelloWorld;
Begin
 HelloWorldForm.ShowModal;
End;

Lo script può essere salvato e quindi eseguito dai menu principali (File» Run Script) eseguendo l’elemento procedura RunHelloWorld sotto la voce HelloWorldDialog.

In alternativa, la procedura può essere assegnata al comando/pulsante Run () tramite il menu Run » Set Startup Project Procedure.

Esecuzione di uno script del modulo HelloWorld, in cui il pulsante Display del modulo attiva una finestra di dialogo ShowMessage.
Esecuzione di uno script del modulo HelloWorld, in cui il pulsante Display del modulo attiva una finestra di dialogo ShowMessage.

Il pannello Object Inspector semplifica la modifica delle proprietà e degli eventi di un’unità modulo. Ad esempio, per modificare la posizione del modulo nell’area di lavoro, utilizzare il pannello per modificare il valore poScreenCenter della proprietà di posizione del modulo. La finestra di dialogo verrà ora posizionata al centro dello schermo del desktop quando lo script viene eseguito.

Una versione di riferimento degli script del progetto Hello World è disponibile nella cartella Scripts\Delphiscript Scripts\General della raccolta di script downloadable. Tenere presente che si tratta di progetti di riferimento legacy e non vengono aggiornati.

Chiamata di una procedura

Come accennato in precedenza, qualsiasi script (che utilizza lo stesso insieme di linguaggi) all’interno di un progetto ha accesso a variabili e procedure globali, quindi una procedura in uno script può chiamare un’altra procedura in uno script diverso del progetto.

Questo può essere dimostrato dalla sezione di codice aggiuntiva ShowAParametricMessage nel progetto di esempio HelloWorld:

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

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

Questo stabilisce una variabile stringa 'S' che può essere passata alla procedura ShowAParametricMessage.

La stringa passata verrà visualizzata utilizzando la funzione di finestra di dialogo ShowMessage, mentre un semplice metodo If-Then-Else fa sì che venga visualizzato un messaggio predefinito 'Hello World!' se la stringa è vuota.

Per vedere questo comportamento in azione, aprire il progetto di esempio (HelloWorld.PrjScr) e aggiungere la riga evidenziata in grigio nello script HelloWorldDialog (non nello script HelloWorld), come mostrato di seguito.

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

Quando viene eseguito lo script HelloWorldDialog e si fa clic sul pulsante Close , viene chiamata la procedura globale ShowAParametricMessage dallo script HelloWorld.

Una procedura parametrica nello script HelloWorld viene chiamata dallo script HelloWorldDialog.
Una procedura parametrica nello script HelloWorld viene chiamata dallo script HelloWorldDialog.

La chiamata passa la stringa di messaggio 'Goodbye World' alla procedura ShowAParametricMessage, quindi questo messaggio viene visualizzato quando si fa clic sul pulsante Close, prima della chiusura del modulo.

La chiamata di script mostrata sopra inserisce un messaggio specificato nella procedura di chiusura del modulo HelloWoldDialog.
La chiamata di script mostrata sopra inserisce un messaggio specificato nella procedura di chiusura del modulo HelloWoldDialog.

Se il parametro stringa passato è vuoto, ShowAParametricMessage(''), viene visualizzato il messaggio predefinito 'Hello World!' come definito nella procedura ShowAParametricMessage.

Per un elenco delle scorciatoie da tastiera che aiutano a semplificare il processo di scrittura e debug degli script, fare riferimento alla pagina Script Editor Tools.

Esplorazione degli identificatori di script tramite il pannello Code Explorer

Il pannello Code Explorer fornisce un riepilogo visivo di tutti gli identificatori (variabili, funzioni e procedure) utilizzati nel documento script attivo.

Il pannello Code Explorer
Il pannello Code Explorer

Le informazioni sugli identificatori che appaiono nel pannello sono raggruppate nelle seguenti cartelle di livello superiore:

  • Procedures & Functions – include tutte le procedure e funzioni dichiarate nel documento script attivo. Per ciascuna procedura/funzione, vengono inoltre elencati eventuali parametri passati alla procedura/funzione o variabili locali ad essa associate.

  • Variables – include tutte le variabili globali dichiarate nel documento script attivo.

Se per una procedura/funzione vengono dichiarate variabili locali, queste appariranno elencate in una sottocartella delle variabili, sotto quella procedura/funzione. Vengono utilizzate icone univoche per distinguere i vari identificatori:

Procedura

Funzione

Parametro di procedura/funzione

Variabile (locale o globale)

Facendo doppio clic su una voce nel pannello (oppure selezionandola e premendo il tasto Enter) si passerà all’area di codice corrispondente nello spazio di progettazione.

AI-LocalizedLocalizzato tramite A
Se trovi un problema, seleziona il testo/l’immagine e premi Ctrl + Invio per inviarci il tuo feedback.
Disponibilità delle funzionalità

Le funzionalità disponibili dipendono dalla soluzione Altium in uso – Altium Develop, un’edizione di Altium Agile (Agile Teams o Agile Enterprise), oppure Altium Designer (con licenza attiva).

Se non vedi nel tuo software una funzionalità descritta,  contatta il team vendite di Altium per saperne di più.

Documentazione legacy

La documentazione di Altium Designer non è più suddivisa per versione. Se è necessario accedere alla documentazione delle versioni precedenti di Altium Designer, visitare la sezione Documentazione legacy della pagina Altri programmi di installazione.

Contenuto