Caselle di riepilogo: Gestione dei clic nelle celle modificate

Tradotto automaticamente da Deepl

Come sviluppatore, si è abituati a gestire gli eventi all’interno degli oggetti modulo. Il più comune è l’evento form on clicked, che può essere utilizzato nella maggior parte degli oggetti, comprese le caselle di riepilogo. In questo particolare oggetto, i clic possono essere gestiti a livello della casella di riepilogo stessa o all’interno dei metodi delle colonne.

A partire da 4D v18 R6, l’evento form on clicked viene attivato indipendentemente dal fatto che una cella venga modificata o meno, offrendo un maggiore controllo e migliorando l’interfaccia.

Ecco un esempio molto semplice:

Si desidera visualizzare i valori possibili mediante un menu contestuale per una cella in fase di modifica. Tuttavia, quando la riga è semplicemente selezionata, si vuole offrire una scelta di colore per quella particolare riga o cella.

È molto semplice farlo!

Durante l’evento on clicked, è sufficiente verificare se la cella è in fase di modifica o meno. Poi, a seconda del risultato, visualizzare un menu o un altro!

If SET MENU ITEM PARAMETER$choice
// use the .row info present in the Form event object
FORM Event(Contextual click) // you don't want to do anything if the click is not a contextual click
If (Is editing text) // if the text is being edited, suggest input values
$dynMenu :=Create menu
APPEND MENU ITEM ($dynMenu; "Alpha")
SET MENU ITEM PARAMETER ($dynMenu; -1; "Alpha")
APPEND MENU ITEM ($dynMenu; "Bravo")
($dynMenu; -1; "Bravo")
APPEND MENU ITEM ($dynMenu; "Charlie")
SET MENU ITEM PARAMETER ($dynMenu; -1; "Charlie")
$choice :=Dynamic pop up menu($dynMenu)
If ( xml-ph-0033@row}:=$choice
End if
Else // if the text is NOT being edited, suggest color for the text
$dynMenu :=Create menu
APPEND MENU ITEM ($dynMenu; "Blue")
SET MENU ITEM PARAMETER ($dynMenu; -1; "Blue")
APPEND MENU ITEM ($dynMenu; "Green")
SET MENU ITEM PARAMETER ($dynMenu; -1; "Green")
$choice :=Dynamic pop up menu($dynMenu)
If ($choice#")
// use columnName and row attributes of the Form event object

LISTBOX SET ROW COLOR (*; FORM Event.columnName; FORM Event.row; $choice)
End if
End if
RELEASE MENU
($dynMenu)
End if

Maggiori dettagli sugli eventi dei moduli nel doc center!

Nota sulla compatibilità

Se si dispone già di codice che viene eseguito durante l’evento on clicked, si potrebbe voler interrompere l’esecuzione di tale codice quando si verifica un clic all’interno di una cella modificata. In questo caso, è sufficiente testare in anticipo lo stato di questa cella con la funzione is editing text.

Per ulteriori dettagli tecnici, consultate la documentazione e, per qualsiasi domanda, visitate il forum 4D!

Roland Lannuzel
- Product Owner ed esperto di 4D - Dopo aver studiato elettronica, Roland è passato all'IT industriale come sviluppatore e consulente, realizzando soluzioni per i clienti con una varietà di database e tecnologie. Alla fine degli anni '80 si è innamorato di 4D e lo ha utilizzato per scrivere applicazioni aziendali che includono sistemi di contabilità, fatturazione e posta elettronica. Entrato a far parte dell'azienda nel 1997, Roland ha dato il suo prezioso contributo progettando specifiche, strumenti di test e demo, oltre a formare e parlare alla comunità 4D in occasione di numerose conferenze. Continua a plasmare attivamente il futuro di 4D definendo nuove funzionalità e strumenti di sviluppo di database.