Eccolo qua, pure migliorato... (come sei esigente...)
Note:Ho riscontrato qualche problema, relativo alle librerie qt/gtk, in particolare un'anomalia nella gtk (su qt funziona bene) per la ColumnView, ovvero la dimensione di larghezza delle colonne (proprietà Width) non viene valorizzata, ovvero è sempre a zero, mentre con le qt riporta il valore corretto anche nel ridimensionamento manuale. Questo causa un problema nella disposizione dell'oggetto editor sulla riga selezionata. Ho cercato di porre rimedio in qualche modo, ma il rimedio fà un pò pena. Inoltre ho riscontrato che la proprietà Header di ColumnView determina coordinate diverse in base all'uso delle qt o delle gtk. Anche qui ho trovato un modo che sistema la cosa, ma dipende dall'impostazione del deskop, dato che non riesco a trovare il modo di sapere quale delle due librerie si stà usando, in particolare se si usa la libreria gb.gui.
Descrizione:Il componente è composto dalla classe EditColumnView, e già dal nome si evince che la classe è basata sull'oggetto ColumnView presente nelle librerie di Gambas2.
La ColumnView è contenuta in un pannello, questo per permettere di controllarne le dimensioni, anche in vista di implementazioni future.
La classe EditColumnView mette a disposizione alcuni metodi, con cui popolare la griglia che, ricordo, è composta da due colonne: la TreeView e la colonna dei valori. Lo scopo è, appunto, quello di gestire coppie di informazione: label/valore.
Costanti (da usare per la creazione degli elementi):T_Label: semplice etichetta (usata per le voci di gruppo)
T_Text: stringa (TextBox)
T_Check: boolean (CheckBox)
T_Number: numerico (ValueBox)
T_Date: data (ValueBox)
T_Time: time (ValueBox)
T_Combo: lista di stringhe (ComboBox)
T_Color: colore (intero, ColorDialog)
T_Font: font (oggetto, FontDialog)
Metodi:AddItem(): tramite le costanti di cui sopra, permette di creare una singola voce. I parametri sono:
- tipo (Integer): una delle costanti di cui sopra (obbligatorio).
- chiave (String): chiave dell'item (obbligatoria, deve essere univoca)
- etichetta (Stringa): etichetta che viene visualizzata nella Tree, corrispondente al valore (obbligatorio)
- padre (String): chiave dell'elemento padre, se esistente (facoltativo)
- valore (Variant): valore dell'elemento (facoltatico: stringa, logico, numerico, data, ora, intero, font)
- opzioni (Variant): opzioni valore (facoltativo), dipendentente dal tipo di voce (data/ora=formato di visualizzazione, combo=lista di stringhe di valori)
AddLabel: aggiunge una semplice etichetta di gruppo. I parametri sono:
- chiave (String): chiave dell'item (obbligatoria, deve essere univoca)
- etichetta (Stringa): etichetta che viene visualizzata nella Tree, corrispondente al valore (obbligatorio)
- padre (String): chiave dell'elemento padre, se esistente (facoltativo)
AddText: aggiunge un valore di tipo String. I parametri sono:
- chiave (String): chiave dell'item (obbligatoria, deve essere univoca)
- etichetta (Stringa): etichetta che viene visualizzata nella Tree, corrispondente al valore (obbligatorio)
- padre (String): chiave dell'elemento padre, se esistente (facoltativo)
- valore (String): valore (facoltativo, default="")
AddCheck: aggiunge un valore di tipo Boolean. I parametri sono:
- chiave (String): chiave dell'item (obbligatoria, deve essere univoca)
- etichetta (Stringa): etichetta che viene visualizzata nella Tree, corrispondente al valore (obbligatorio)
- padre (String): chiave dell'elemento padre, se esistente (facoltativo)
- valore (Boolean): valore (facoltativo, default=FALSE)
AddCombo: aggiunge un valore di tipo String. I parametri sono:
- chiave (String): chiave dell'item (obbligatoria, deve essere univoca)
- etichetta (Stringa): etichetta che viene visualizzata nella Tree, corrispondente al valore (obbligatorio)
- padre (String): chiave dell'elemento padre, se esistente (facoltativo)
- valore (String): valore (facoltativo, default="")
- lista (String[]): lista dei valori da visualizzare nella ComboBox (facoltativo, default=NULL)
AddColor: aggiunge un valore di tipo Integer, che rappresenta il valore intero (RGB) di un colore. I parametri sono:
- chiave (String): chiave dell'item (obbligatoria, deve essere univoca)
- etichetta (Stringa): etichetta che viene visualizzata nella Tree, corrispondente al valore (obbligatorio)
- padre (String): chiave dell'elemento padre, se esistente (facoltativo)
- valore (Integer): valore (facoltativo, default=0=Black)
AddFont: aggiunge un valore di tipo Font. I parametri sono:
- chiave (String): chiave dell'item (obbligatoria, deve essere univoca)
- etichetta (Stringa): etichetta che viene visualizzata nella Tree, corrispondente al valore (obbligatorio)
- padre (String): chiave dell'elemento padre, se esistente (facoltativo)
- valore (Font): valore (facoltativo, default=NULL)
AddNumber: aggiunge un valore di tipo Float. I parametri sono:
- chiave (String): chiave dell'item (obbligatoria, deve essere univoca)
- etichetta (Stringa): etichetta che viene visualizzata nella Tree, corrispondente al valore (obbligatorio)
- padre (String): chiave dell'elemento padre, se esistente (facoltativo)
- valore (Float): valore (facoltativo, default=0)
AddDate: aggiunge un valore di tipo Date. I parametri sono:
- chiave (String): chiave dell'item (obbligatoria, deve essere univoca)
- etichetta (Stringa): etichetta che viene visualizzata nella Tree, corrispondente al valore (obbligatorio)
- padre (String): chiave dell'elemento padre, se esistente (facoltativo)
- valore (Date): valore (facoltativo, default=NULL)
- formato (String): formato di visualizzazione (facoltativo, default="dd/mm/yyyy")
AddTime: aggiunge un valore di tipo Date. I parametri sono:
- chiave (String): chiave dell'item (obbligatoria, deve essere univoca)
- etichetta (Stringa): etichetta che viene visualizzata nella Tree, corrispondente al valore (obbligatorio)
- padre (String): chiave dell'elemento padre, se esistente (facoltativo)
- valore (Date): valore (facoltativo, default=NULL)
- formato (String): formato di visualizzazione (facoltativo, default="hh:nn:ss")
GetValue(key AS String) AS Variant: ritorna il valore associato alla chiave key.
IsModified(key AS String) AS Boolean: ritorna TRUE che il valore di key è stato modificato.
Proprietà:ScrollBar: di tipo Scroll, determina se e quali scrollbar visualizzare per la griglia.
Eventi:Change(key AS String): la modifica di un valore scatena l'evento Change, che evidenzia anche la chiave dell'elemento modificato (key). All'interno dell'evento è possibile determinare, tramite i metodi GetValue e IsModified, il valore modificato.
Bè, penso che per il momento sia tutto... vedremo in seguito...
Ad ogni modo, se qualcuno ha qualche idea, ben venga...
P.S.: sarà il caso di mettere la discussione in evidenza???
Ciao