Vi state chiedendo come creare un’interfaccia utente bella e dinamica? In genere, quando un modulo viene ridimensionato, gli oggetti del modulo le cui proprietà di dimensionamento orizzontale o verticale sono impostate per spostarsi o crescere, vengono automaticamente ridimensionati. In alcuni casi (ad esempio, per una gestione più precisa dell’interfaccia utente), gli sviluppatori scelgono di gestire le dimensioni e la posizione degli oggetti del modulo tramite la programmazione. Per farlo, controllano l’evento “on resized”, che viene attivato all’interno del metodo del form. Ma cosa succede quando il form contiene una o più sottomaschere? Su più livelli? Questo post del blog vi fornisce le risposte!
subform e sub-subform e…
La gestione degli oggetti subform quando un oggetto subform “genitore” viene ridimensionato può sembrare complicata, ma non lo è! È possibile farlo utilizzando il comando Execute method in subform oppure modificando il valore associato dell’oggetto subform, seguito – all’interno della subform – dalla gestione dell’evento on bound variable change generato.
A partire da 4D v18, è ancora più semplice! È possibile gestire l’evento on resize direttamente nel metodo della sottomaschera! Molto più comodo, logico e semplice! Questo evento viene attivato ogni volta che la dimensione dell’oggetto subform viene modificata nel modulo principale. Ciò può accadere quando:
- il modulo principale viene ridimensionato (così come l’oggetto subform). Questo è il caso più ovvio.
- uno splitter modifica l’altezza o la larghezza dell’oggetto subform. Non è così ovvio, ma vale la pena menzionarlo.
- la dimensione di un oggetto subform viene modificata dalla programmazione con il comando OBJECT SET COORDINATES. Questo caso è ancora meno ovvio, non dimenticatelo 🙂
Conclusione
Se gestite già questo tipo di scenari nella vostra applicazione, potete pensare di semplificare il codice (oppure no! “Se non è rotto, non aggiustarlo”). Ma per gli sviluppi futuri, apprezzerete questa semplificazione della gestione degli eventi!