Differenze tra le versioni di "La classe Action"
(2 versioni intermedie di 2 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
− | (''pagina a cura del membro [http://www.gambas-it.org/smf/index.php?action=profile;u=1249 Gianluigi] del forum di Gambas-it.org'') | + | (''pagina a cura del membro [http://www.gambas-it.org/smf/index.php?action=profile;u=1249 Gianluigi] del forum di Gambas-it.org'') <SUP>[[[#Note|Nota 1]]]</sup> |
Come recita la guida in linea di Gambas, la <I>Classe Action</i> appartiene al componente <I>gb.qt4</i> e consente di gestire le azioni definite nella <I>Proprietà Action</i> di molti controlli, è creabile e si comporta come un array statico di sola lettura. | Come recita la guida in linea di Gambas, la <I>Classe Action</i> appartiene al componente <I>gb.qt4</i> e consente di gestire le azioni definite nella <I>Proprietà Action</i> di molti controlli, è creabile e si comporta come un array statico di sola lettura. | ||
<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 | + | 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> | + | <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>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 | + | <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 55: | Riga 55: | ||
<BR>Se abbiamo un gruppo di controlli che supportano la proprietà Tooltip (<I>ad esempio delle TextBox</i>) e fanno la stessa cosa possiamo raggrupparli in un'unica <B>Action</b> e assegnargli come abbiamo visto anche questa proprietà. | <BR>Se abbiamo un gruppo di controlli che supportano la proprietà Tooltip (<I>ad esempio delle TextBox</i>) e fanno la stessa cosa possiamo raggrupparli in un'unica <B>Action</b> e assegnargli come abbiamo visto anche questa proprietà. | ||
<BR>Stesso procedimento per tutte le altre proprietà e metodi supportati da Action. | <BR>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 |
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