Differenze tra le versioni di "La classe Action"

Da Gambas-it.org - Wikipedia.
 
(Una versione intermedia di uno stesso utente non è mostrata)
Riga 4: Riga 4:
 
<BR>Possiede quattro metodi statici e otto proprietà.
 
<BR>Possiede quattro metodi statici e otto proprietà.
  
Per prima cosa occorre sgombrare subito il campo da due grossi equivoci e cioè che chi ha un desktop basato sulle librerie <I>GTK</i> debba creare applicazioni con quelle librerie, non è vero.
+
Per prima cosa occorre sgombrare subito il campo da un grosso equivoco e cioè che chi ha un desktop basato sulle librerie <I>GTK</i> debba creare applicazioni con quelle librerie, non è vero.
 
<BR>Un sistema operativo con un desktop GTK tipo <I>Gnome</i> è in grado di far girare benissimo applicazioni <I>QT</i>.
 
<BR>Un sistema operativo con un desktop GTK tipo <I>Gnome</i> è in grado di far girare benissimo applicazioni <I>QT</i>.
<BR><SPAN Style="text-decoration:underline">Gambas con QT funziona meglio e offre più stabilità</span>.
+
<BR><SPAN Style="text-decoration:underline">Gambas con le librerie QT normalmente funziona meglio e offre più stabilità</span>.
<BR>L'altro equivoco è quello che in Gambas si possano <I>"disegnare"</i> finestre solo da codice.
+
<BR>Prima di scrivere una sola riga di codice occorre imparare a costruire le finestre del nostro progetto attraverso l'editor <I>.form</i>, l'<I>Editor Menu</i> e usando i <I>contenitori</i>, le <I>barre dei pulsanti</i> ecc.
<BR>Ancor prima di scrivere una sola riga di codice occorre costruire le finestre del nostro progetto attraverso l'editor <I>.form</i>, l'<I>Editor Menu</i> e usando i <I>contenitori</i>, le <I>barre dei pulsanti</i> ecc.
 
 
<BR>Chi viene da un'esperienza precedente di programmazione potrebbe aver difficoltà a capire e cercare di creare finestre attraverso il codice o tentarne una gestione grafica.
 
<BR>Chi viene da un'esperienza precedente di programmazione potrebbe aver difficoltà a capire e cercare di creare finestre attraverso il codice o tentarne una gestione grafica.
 
<BR>Non fatelo, otterreste solo dei malfunzionamenti e tarderete di molto l'apprendimento del linguaggio.
 
<BR>Non fatelo, otterreste solo dei malfunzionamenti e tarderete di molto l'apprendimento del linguaggio.
 +
<BR>Solo dopo aver compreso a fondo come si disegnano le finestre in Gambas e aver preso dimestichezza con i vari contenitori, potrete disegnare le vs. finestre attraverso il codice.
  
 
Per comprendere a fondo <B>Action</b> occorre capire bene come devono essere costruite le finestre.
 
Per comprendere a fondo <B>Action</b> occorre capire bene come devono essere costruite le finestre.
<BR>Una finestra Gambas ben progettata deve partire dai contenitori e dal componente <B>gb.form.mdi</b> (<I>interfaccia multi documento</i>) che implementa la classe Action di gb.qt4 espandendola, attiva il componente <B>gb.Settings</b> e aggiunge due nuovi componenti; il controllo <B>ToolBar</b> (<I>barra dei pulsanti professionale</i>) e il controllo <B>Workspace</b> che permette di inglobare in un contenitore a schede finestre di primo livello.
+
<BR>Una finestra Gambas ben progettata deve partire dai contenitori e con molta probabilità dal componente <B>gb.form.mdi</b> (<I>interfaccia multi documento</i>) che implementa la classe Action espandendola, attiva il componente <B>gb.Settings</b> e aggiunge due nuovi componenti; il controllo <B>ToolBar</b> (<I>barra dei pulsanti professionale</i>) e il controllo <B>Workspace</b> che permette di inglobare in un contenitore a schede finestre di primo livello (per intenderci tipo il form FMain di un nuovo progetto).
  
 
<B>Nota</b>: La <I>IDE di Gambas</i> è disegnata così.
 
<B>Nota</b>: La <I>IDE di Gambas</i> è disegnata così.
Riga 59: Riga 59:
  
 
=Note=
 
=Note=
[1] Vedere anche questa discussione: https://lists.gambas-basic.org/pipermail/user/2020-October/070206.html
+
[1] Vedere anche questa discussione: https://lists.gambas-basic.org/pipermail/user/2022-February/075454.html

Versione attuale delle 03:19, 21 feb 2022

(pagina a cura del membro Gianluigi del forum di Gambas-it.org) [Nota 1]

Come recita la guida in linea di Gambas, la Classe Action appartiene al componente gb.qt4 e consente di gestire le azioni definite nella Proprietà Action di molti controlli, è creabile e si comporta come un array statico di sola lettura.
Possiede quattro metodi statici e otto proprietà.

Per prima cosa occorre sgombrare subito il campo da un grosso equivoco e cioè che chi ha un desktop basato sulle librerie GTK debba creare applicazioni con quelle librerie, non è vero.
Un sistema operativo con un desktop GTK tipo Gnome è in grado di far girare benissimo applicazioni QT.
Gambas con le librerie QT normalmente funziona meglio e offre più stabilità.
Prima di scrivere una sola riga di codice occorre imparare a costruire le finestre del nostro progetto attraverso l'editor .form, l'Editor Menu e usando i contenitori, le barre dei pulsanti ecc.
Chi viene da un'esperienza precedente di programmazione potrebbe aver difficoltà a capire e cercare di creare finestre attraverso il codice o tentarne una gestione grafica.
Non fatelo, otterreste solo dei malfunzionamenti e tarderete di molto l'apprendimento del linguaggio.
Solo dopo aver compreso a fondo come si disegnano le finestre in Gambas e aver preso dimestichezza con i vari contenitori, potrete disegnare le vs. finestre attraverso il codice.

Per comprendere a fondo Action occorre capire bene come devono essere costruite le finestre.
Una finestra Gambas ben progettata deve partire dai contenitori e con molta probabilità dal componente gb.form.mdi (interfaccia multi documento) che implementa la classe Action espandendola, attiva il componente gb.Settings e aggiunge due nuovi componenti; il controllo ToolBar (barra dei pulsanti professionale) e il controllo Workspace che permette di inglobare in un contenitore a schede finestre di primo livello (per intenderci tipo il form FMain di un nuovo progetto).

Nota: La IDE di Gambas è disegnata così.

Bene, fatta questa indispensabile premessa vediamo Action più da vicino.

Una classica finestra Gambas si presenta con un menu e con una barra che normalmente mette a disposizione i pulsanti corrispondenti alle voci di menu con scorciatoie da tastiera. Action permette di riunire sotto un'unica azione sia il pulsante che il menu corrispondente; per esempio se noi abbiamo un menu Modifica con il sotto menu Annulla e il pulsante Annulla della barra, basterà assegnare alla proprietà Action di entrambi la stessa voce per esempio "undo" e poi nella classe della form inserire il seguente codice:

 Public Sub Action_Activate(sKey As String) As Boolean
   Select Case sKey
     Case "undo"
        ' venendo azionato sia dal menu che dal pulsante, il codice qui fa qualcosa
        ' per ripristinare le cose allo stato precedente.
      ...

Action mette a disposizione tra gli altri il metodo statico Configure.
Si può usare così avendo dato a menu e button l'action "shortcuts":

     Case "shortcuts"
       Action.Configure
     ...

Questo apre la finestra di dialogo Configure shortcuts che da modo all'utente di riconfigurare a proprio piacimento i tasti di scelta rapida; è la stessa finestra che usiamo nella IDE di Gambas e funziona alla stessa maniera:
cliccare sulla combinazione da cambiare nella colonna Shortcut, cancellare la voce agendo sul pulsantino, quindi agire sui tasti della nuova combinazione. Oppure:
si clicca sul pulsante Export, quello con la freccia verde rivolta verso il basso che salva nella nostra home un file di testo denominato <nome-programma>.shortcuts.
Navighiamo fino al file di testo, lo variamo come ci pare e lo salviamo.
Sempre dalla finestra Configure shortcuts clicchiamo sul pulsante Import, quello azzurro con la freccia rivolta verso l'alto, e il gioco è fatto.
Da ora in poi il programma reagirà alle nuove impostazioni.
La finestra Configure shortcuts mostra le icone, basta che ne sia assegnata almeno una delle due.
Attenzione: Se abbiamo assegnato l'icona attraverso Action nessuna icona verrà mostrata.

Ora supponiamo che il nostro programma preveda per alcune finestre inglobate, dei menu e dei pulsanti per l'allineamento del testo (in alto, in basso, a destra e a sinistra).
Action ci permette di riunirli per assegnare loro alcune proprietà, per esempio:

Action[".alin-alto,.alin-basso,.alin-destra,.alin-sinistra", Me].Visible = True/False

In questo modo noi possiamo ottenere la visibilità o meno sia dei pulsanti che dei menu in un colpo solo, oppure avremmo potuto renderli abili o inabili se invece di Visible avessimo usato la proprietà Enabled.
Ma possiamo fare anche prima usando un modello:

Action[".alin*", Me].Visible = True/False

Nota: Il punto davanti alla voce di azione indica la localizzazione alla finestra corrente, altrimenti se altre finestre inglobate avessero le stesse voci di azione ne verrebbero influenzate.
Attenzione: È l'assegnazione a Me che influenza Action, il punto davanti la voce indica a Gambas l'intenzione di localizzare l'azione, ma se non viene assegnato il parent l'azione sarà comunque globale, è il parent (Me in questo caso) l'osservatore dell'azione.

Action["undo"].Picture = Picture["icon:/small/undo"]

In questo modo si assegna l'icona sia al pulsante che alla voce di menu.


Se abbiamo un gruppo di controlli che supportano la proprietà Tooltip (ad esempio delle TextBox) e fanno la stessa cosa possiamo raggrupparli in un'unica Action e assegnargli come abbiamo visto anche questa proprietà.
Stesso procedimento per tutte le altre proprietà e metodi supportati da Action.


Note

[1] Vedere anche questa discussione: https://lists.gambas-basic.org/pipermail/user/2022-February/075454.html