Differenze tra le versioni di "Ridimensionare la larghezza della finestra a cascata di un ComboBox in base alla lunghezza testuale di un elemento"
(Creata pagina con "Per ridimensionare la larghezza della finestra a cascata di un ''ComboBox'' in base alla lunghezza testuale di un elemento, bisogna tenere conto di come è formato attualmente...") |
|||
Riga 1: | Riga 1: | ||
Per ridimensionare la larghezza della finestra a cascata di un ''ComboBox'' in base alla lunghezza testuale di un elemento, bisogna tenere conto di come è formato attualmente detto Oggetto grafico. | Per ridimensionare la larghezza della finestra a cascata di un ''ComboBox'' in base alla lunghezza testuale di un elemento, bisogna tenere conto di come è formato attualmente detto Oggetto grafico. | ||
+ | Attualmente il ''ComboBox'' in Gambas è formato da almeno due Oggetti grafici, verificabili agevolmente invocando la sua Proprietà ".Children": | ||
+ | Public Sub Form_Open() | ||
+ | |||
+ | Dim ob As Object | ||
+ | |||
+ | For Each ob In ComboBox1.Children | ||
+ | Print Object.Type(ob) | ||
+ | Next | ||
+ | |||
+ | End | ||
+ | Come si potrà notare, i due Oggetti - "Figli" del ''ComboBox'' - sono un ''Panel'' e ''TextBox''. <SUP>[[[#Note|Nota 1]]]</sup> | ||
+ | |||
+ | ...... | ||
...... | ...... | ||
Riga 67: | Riga 80: | ||
'''End''' | '''End''' | ||
+ | |||
+ | |||
+ | |||
+ | =Note= | ||
+ | [1] Va precisato che l'Oggetto ''ComboBox'' possiede due "Figli" Oggetti grafici, se la sua Proprietà ".ReadOnly" è lasciata al suo valore predefinito ovvero impostata a "FALSE". Qualora tale Proprietà sia impostata a "True", allora il ''ComboBox'' è costituito da un solo "Figlio": il ''Panel''. | ||
+ | |||
<FONT Size=4 Color=red><B>PAGINA IN COSTRUZIONE !</b></font> | <FONT Size=4 Color=red><B>PAGINA IN COSTRUZIONE !</b></font> |
Versione delle 19:24, 4 mag 2022
Per ridimensionare la larghezza della finestra a cascata di un ComboBox in base alla lunghezza testuale di un elemento, bisogna tenere conto di come è formato attualmente detto Oggetto grafico.
Attualmente il ComboBox in Gambas è formato da almeno due Oggetti grafici, verificabili agevolmente invocando la sua Proprietà ".Children":
Public Sub Form_Open() Dim ob As Object For Each ob In ComboBox1.Children Print Object.Type(ob) Next End
Come si potrà notare, i due Oggetti - "Figli" del ComboBox - sono un Panel e TextBox. [Nota 1]
...... ......
Mostriamo un esempio pratico:
Private Const LUNGCB As Byte = 60 Public Sub Form_Open() Dim pn As Panel Dim obs As Observer ComboBox1.W = LUNGCB ComboBox1.List = ["àèéìòù", "1234567890", "bbGTfddr", "abcde"] pn = ComboBox1.Children[0] obs = New Observer(pn) As "Panel1" End Public Sub Panel1_MouseDown() Dim c As Short c = Individua() ComboBox1.W = ComboBox1.Font.TextWidth(ComboBox1.List[c]) + (ComboBox1.Font.TextWidth(ComboBox1.List[c]) / ComboBox1.List[c].Len) End Private Function Individua() As Short Dim s As String Dim cc As New Short[] Dim c As Short For Each s In ComboBox1.List ' Assegna il valore di ciascuna quantità di caratteri: cc.Push(String.Len(s)) Next ' Ordina in modo "discendente" i valori presenti nel vettore di tipo "Short": cc.Sort(gb.Descent) For c = 0 To cc.Max ' Individua l'indice dell'elemento contenente la quantità di caratteri maggiore: If cc[0] == String.Len(ComboBox1.List[c]) Then Break Next Return c End Public Sub Panel1_MouseUp() ' Ripristina in chiusura della finestra del "ComboBox" la dimensione originaria di tale Oggetto grafico: ComboBox1.W = LUNGCB ComboBox1.Pos = 0 End Public Sub ComboBox1_Click() ComboBox1.W = LUNGCB ComboBox1.Pos = 0 End
Note
[1] Va precisato che l'Oggetto ComboBox possiede due "Figli" Oggetti grafici, se la sua Proprietà ".ReadOnly" è lasciata al suo valore predefinito ovvero impostata a "FALSE". Qualora tale Proprietà sia impostata a "True", allora il ComboBox è costituito da un solo "Figlio": il Panel.
PAGINA IN COSTRUZIONE !