Moduli e componenti

Panoramica dei componenti grafici

Il sistema di scripting gestisce due tipi di componenti: componenti visivi e non visivi.

I componenti visivi servono a costruire l’interfaccia utente, mentre quelli non visivi vengono utilizzati per diverse attività, come ad esempio Timer, OpenDialog e MainMenu .

  • Il Timer componente non visivo può essere utilizzato per attivare codice specifico a intervalli prestabiliti e non è mai visibile all’utente.
  • La Button, Edit e Memo sono componenti visivi.

Entrambe le tipologie di componenti compaiono in fase di progettazione, ma i componenti non visivi non sono visibili in fase di esecuzione. I componenti del Tool Palette pannello sono orientati agli oggetti e presentano le tre voci seguenti:

  • Proprietà
  • Eventi
  • Metodi

Una Property è una caratteristica di un oggetto che influenza il comportamento visibile o le operazioni di tale oggetto. Ad esempio, la proprietà Visible determina se l'oggetto è visibile o meno in un modulo script.

Un Event è un'azione o un evento rilevato dallo script. In uno script, il programmatore scrive il codice per ciascun gestore di eventi progettato per intercettare un evento specifico, come ad esempio un clic del mouse.

Una Method è una procedura sempre associata a un oggetto e definisce il comportamento di quest'ultimo.

Tutti i moduli di script hanno uno o più componenti. I componenti solitamente visualizzano informazioni o consentono all’utente di eseguire un’azione. Ad esempio, un Label viene utilizzato per visualizzare testo statico, una Edit casella viene utilizzata per consentire all’utente di inserire dei dati, un Button può essere utilizzato per avviare azioni.

Su un modulo è possibile inserire qualsiasi combinazione di componenti e, mentre lo script è in esecuzione, l’utente può interagire con qualsiasi componente presente sul modulo. Spetta al programmatore decidere cosa succede quando un utente fa clic su un pulsante o modifica il testo in una Edit casella.

Il sistema di scripting fornisce una serie di componenti che possono essere utilizzati per creare interfacce utente complesse per gli script. Per inserire un componente in un modulo, individuare la relativa icona nelpannello «Tavolozza degli strumenti» e fare doppio clic su di essa. Questa azione inserisce il componente nel modulo attivo. La rappresentazione visiva della maggior parte dei componenti viene impostata tramite le relative proprietà. Inizialmente un componente viene posizionato in una posizione predefinita sul modulo, ma può essere riposizionato (trascinato) e ridimensionato (allungato) secondo necessità. È inoltre possibile modificare le dimensioni e la posizione in un secondo momento utilizzando il Object Inspector pannello.

Quando un componente viene trascinato su un modulo, il sistema di scripting genera automaticamente il codice necessario per utilizzarlo e aggiorna il modulo dello script. Per far funzionare il componente sul modulo, è sufficiente impostare le proprietà e implementare il codice del gestore di eventi in modo da utilizzare i metodi desiderati.

Progettazione dei moduli di script

Un modulo di script è progettato per interagire con l’utente all’interno dell’ambiente. La progettazione dei moduli di script costituisce il fulcro dello sviluppo visivo.

In pratica, tutti i componenti vengono posizionati su un modulo di script e ogni proprietà impostata viene memorizzata in un file che descrive il modulo (un *.DFM file) che ha una relazione con il codice di script associato (il *.PAS file). Per ogni modulo script esiste il .PAS file e il relativo .DFM file.

Quando si lavora con un modulo di script e i suoi componenti, è possibile visualizzare e modificare tutte le proprietà degli elementi utilizzando il Object Inspector pannello. È possibile selezionare più di un componente facendo clic sui componenti tenendo premuto il tasto Maiusc, oppure trascinando un rettangolo di selezione attorno ai componenti presenti nel modulo. Un modulo script ha un titolo (la Caption proprietà nel Object Inspector pannello).

Creazione di un nuovo modulo di script

Con un progetto di script aperto, fare clic con il tasto destro del mouse su un progetto nel Projects pannello, fare clic sull’ Add New to Project voce nel menu contestuale a comparsa e scegliere una Delphi Script Form voce. Si aprirà un nuovo modulo di script con il nome predefinito EditScript1.pas.

Visualizzazione di un modulo di script

Uno script deve contenere una procedura che visualizzi il modulo quando lo script viene eseguito. All’interno di questa procedura, è possibile richiamare il ShowModal metodo per il modulo. La Visible proprietà del modulo deve essere impostata su false affinché il ShowModal metodo del modulo script funzioni correttamente.

ShowModal example:

Procedure RunDialog;
Begin
  DialogForm.ShowModal;
End;

L' ShowModal esempio illustra un approccio molto semplice per visualizzare il modulo dello script quando viene RunDialog procedura viene richiamata. Si noti che è possibile assegnare valori ai componenti dell’ DialogForm oggetto prima che il DialogForm.ShowModal venga richiamato il metodo.

L' ModalResult esempio di proprietà riportato di seguito è leggermente più complesso. I seguenti metodi presenti nello script vengono utilizzati per i pulsanti presenti in un modulo di script. Tali metodi provocano la chiusura della finestra di dialogo quando l’utente fa clic su uno dei OK o Cancel , il quale restituisce mrOk o mrCancel rispettivamente dal ShowModal rispettivamente.

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;
È anche possibile impostare il ModalResult valore a mrOk per il OK pulsante e mrCancel per il Cancel pulsante nei rispettivi gestori di eventi per ottenere lo stesso risultato descritto sopra.

Quando l'utente fa clic su uno dei due pulsanti presenti in questo modulo di script, la finestra di dialogo si chiude. Non è necessario richiamare il Close metodo, poiché quando il ModalResult metodo è impostato, il motore di script chiude automaticamente il modulo di script.

Si noti che, se si desidera impostare il ModalResult su Cancel quando l’utente preme il Esc tasto, utilizzare il Object Inspector pannello per impostare la proprietà Cancel su True, oppure inserisci Sender.Cancel := True nell'handler dell'evento del pulsante CancelButtonClick del modulo.

Accettazione dell'input da parte dell'utente

Uno dei componenti più comuni in grado di accettare input dall'utente è il TEdit componente. Questo componente presenta un campo in cui l’utente può digitare una stringa di caratteri. Si noti che esistono altri componenti Delphi, come ad esempio TMaskEdit, che è un componente di modifica con una maschera di immissione memorizzata in una stringa — questa controlla o filtra l’immissione.

L'esempio riportato di seguito illustra il processo che si verifica quando l'utente fa clic sul pulsante dopo aver digitato qualcosa nella casella di modifica. Se l'utente non ha digitato nulla nel componente di modifica (campo vuoto), il gestore di eventi risponde con un messaggio di avviso.

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

Si noti che l’utente può spostare il focus di input della finestra di dialogo utilizzando il tasto Tab o facendo clic su un altro controllo nel modulo.

Risposta agli eventi

Quando si fa clic su un pulsante in un modulo o su un componente, il sistema di scripting risponde ricevendo una notifica di evento da Altium Designer e richiamando il metodo di gestione degli eventi appropriato.

See also
Il progetto HelloWorld dalla Scripts\DelphiScript Scripts\General\ della raccolta degli script.
Lo script di esempio ShowModal dalla Scripts\DelphiScript Scripts\General\ della raccolta di script.

Scrittura dei gestori di eventi

Ogni componente in uno script di un modulo dispone di una serie di nomi di eventi, che vengono utilizzati dai gestori di eventi dello script per determinare come lo script reagirà alle azioni dell’utente in Altium Designer. Ad esempio, quando un utente fa clic su un pulsante in un modulo, Altium Designer invia un messaggio allo script e lo script reagisce a questo nuovo evento. Se viene specificato l’ OnClick evento relativo a un pulsante è specificato, esso viene eseguito.

Il codice per rispondere agli eventi è normalmente contenuto nei gestori di eventi DelphiScript e tutti i componenti dispongono di una serie di eventi a cui possono reagire. Ad esempio, tutti i componenti cliccabili hanno un OnClick evento che viene attivato quando un utente fa clic su un componente. Tutti questi componenti dispongono inoltre di un evento per l’acquisizione e la perdita del focus. Tuttavia, se il codice per OnEnter e OnExit non è stato specificato (OnEnter - il controllo ha ricevuto il focus; OnExit - il controllo ha perso il focus), l’evento verrà ignorato dallo script.

In sintesi, un evento è un collegamento tra un'azione in Altium Designer, come il clic su un pulsante, e un frammento di codice che risponde a tale azione. Il codice di risposta è un gestore di eventi. Questo codice modifica i valori delle proprietà e chiama i metodi.

Proprietà dei componenti

Per visualizzare l’elenco delle proprietà di un componente, selezionare il componente e aprire la Properties scheda nel Object Inspector pannello.

Eventi del componente

Per visualizzare l'elenco degli eventi a cui un componente può reagire, selezionare un componente e aprire la Events scheda nel Object Inspector pannello. Per creare una procedura di gestione degli eventi, selezionare l’evento a cui si desidera che il componente reagisca e fare doppio clic sul nome dell’evento: il sistema di scripting inserirà automaticamente il codice di base del gestore di eventi.

Ad esempio, selezionare il TButton componente dal Tool Palette pannello e trascinalo sul modulo di script, quindi fai doppio clic accanto al OnClick nome dell’evento nel Object Inspector pannello. Il sistema di scripting metterà in primo piano l’Editor di codice e verrà creato il codice di base per l’ OnClick evento verrà creato.

Se un pulsante dispone di un Close metodo nel CloseClick gestore di eventi, ad esempio, quando si fa clic sul pulsante, il gestore di eventi del pulsante intercetterà l’ OnClick evento, provocando l’esecuzione del codice all’interno del gestore di eventi. Di conseguenza, il Close metodo chiuderà il modulo script.

In sintesi, selezionare un componente pulsante dal modulo oppure utilizzando il Object Inspector pannello, selezionare la Events pagina, quindi fare doppio clic sul lato destro dell’ OnClick evento e nel codice apparirà un nuovo gestore di eventi. In alternativa, fare doppio clic sul pulsante stesso e il sistema di scripting aggiungerà un gestore per questo OnClick evento. Si noti che altri tipi di componenti avranno azioni predefinite diverse.

Metodi dei componenti

Per visualizzare un elenco dei metodi di un componente, consultare il documento Riferimento ai componenti.

Trascinamento dei componenti su un modulo di script

Per utilizzare i componenti dal pannello "Tavolozza degli strumenti " in uno script, è necessario che esista un modulo di script prima di poter trascinare i componenti sul modulo. Normalmente, quando i componenti vengono trascinati su un modulo di script, non è necessario creare o distruggere questi oggetti: il modulo di script lo fa automaticamente.

Il sistema di scripting genera inoltre automaticamente il codice necessario per utilizzare un componente e aggiorna il modulo di script. A questo punto basta impostare le proprietà, inserire il codice nei gestori di eventi e utilizzare i metodi richiesti per implementare un modulo di script funzionante.

Creazione di componenti in uno script

I componenti possono essere creati o distrutti direttamente in uno script passando un Nil parametro al Constructor di un componente. Normalmente non è necessario passare l’handle del modulo, poiché il modulo di script se ne occupa automaticamente. Ad esempio, è possibile creare e distruggere Open e Save finestre di dialogo (TOpenDialog e TSaveDialog classi dell’RTL di Embarcadero Delphi).

Personalizzazione dei moduli script

I punti essenziali per la personalizzazione dei moduli script sono:

  • Per forzare un modulo a rimanere in primo piano rispetto agli altri pannelli aperti, impostare la FormStyle proprietà su fsStayOnTop.
  • Per definire il comportamento predefinito di un modulo, impostare la FormKind su uno dei seguenti valori; fkNone, fkNormal, fkServerPanel oppure fkModal.
  • Se fkModal è chiuso, il modulo sarà un modulo modale — ovvero, attenderà un input da parte dell’utente prima di procedere, ad esempio alla chiusura del modulo. Se fkServerPanel allora il modulo verrà visualizzato come pannello server. Se fkNormal allora il modulo si comporta come un normale modulo non modale.
  • Per rimuovere le barre di scorrimento predefinite del modulo, modificare il valore del HorzScrollBar e VertScrollBar .
  • Per rendere il modulo un frame MDI o un figlio MDI, utilizzare la FormStyle .
  • Per modificare lo stile del bordo del modulo, utilizzare la proprietà BorderIcons e BorderStyle (i risultati sono visibili in fase di esecuzione).
  • Per modificare l'icona del modulo ridotto a icona, utilizzare la Icon .
  • Per specificare la posizione iniziale di un modulo nella finestra dell'applicazione, utilizzare la Position proprietà.
  • Per specificare lo stato iniziale del modulo (ad esempio, ridotto a icona, ingrandito o normale), utilizzare la WindowState proprietà.
  • Per definire l'area di lavoro del modulo in fase di esecuzione, utilizzare la ClientHeight e ClientWidth (si noti che ClientHeight e ClientWidth rappresentano l'area all'interno del bordo del modulo; Height mentre Width rappresentano l'intera area del modulo).
  • Per specificare quale controllo abbia il focus iniziale nel modulo in fase di esecuzione, utilizzare la ActiveControl proprietà.
  • Per trasmettere tutti gli eventi da tastiera al modulo, indipendentemente dal controllo selezionato, utilizzare la KeyPreview proprietà.
  • Per specificare un menu particolare, se un modulo contiene più di un menu, utilizzare la Menu proprietà.

Aggiornamento dei moduli e dei componenti degli script

Quando l’interfaccia di un modulo script diventa obsoleta, ad esempio quando i controlli non vengono aggiornati o ridisegnati, questi ultimi possono apparire bloccati o danneggiati; ciò potrebbe essere dovuto a un’elaborazione in background intensiva da parte di quello script.

Il Update metodo del modulo script e molti dei componenti script del Tool Palette pannello, offrono un modo per aggiornare i contenuti grafici del modulo o di uno o più controlli specifici. Le righe contenenti il Update metodo sono evidenziate in grigio nell’esempio riportato di seguito.

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;

Il frammento di codice sopra riportato è tratto dal PCB Logo Creator progetto di script, che si trova nella Scripts\Delphiscript Scripts\Pcb\PCB Logo Creator cartella della raccolta di script scaricabile.

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à a tua disposizione dipendono dalla soluzione Altium di cui disponi: Altium Develop, Altium Agile Teams, Altium Agile Enterprise oppure Altium Designer (con abbonamento attivo).

Se non vedi una funzionalità documentata nel software che stai effettivamente utilizzando, contatta il reparto 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