ComboBox che mostra immagini anziché caratteri alfanumerici: differenze tra le versioni
(Creata pagina con "Il ''ComboBox'' può mostrare immagini anziché il normale testo alfanumerico. ==Usando il codice di UNICODE== Una facile soluzione, capace anche di garantire una assoluta e...") |
Nessun oggetto della modifica |
||
| Riga 38: | Riga 38: | ||
.Y = 50 | .Y = 50 | ||
.H = 35 | .H = 35 | ||
.W = | .W = 130 | ||
.Font = Font["D050000L,Bold,14"] | .Font = Font["D050000L,Bold,14"] | ||
.Foreground = Color.RGB(197, 166, 67) | .Foreground = Color.RGB(197, 166, 67) | ||
Versione delle 04:17, 19 ott 2023
Il ComboBox può mostrare immagini anziché il normale testo alfanumerico.
Usando il codice di UNICODE
Una facile soluzione, capace anche di garantire una assoluta e universale compatibilità, prevede l'uso dei simboli del codice UNICODE. [nota 1]
Mostriamo un esempio pratico:
Public Sub Form_Open()
Dim ComboBox1 As ComboBox
With ComboBox1 = New ComboBox(Me) As "ComboBox1"
.X = 50
.Y = 50
.H = 35
.W = 140
.Foreground = Color.RGB(197, 166, 67)
.Font.Size = 20
For b As Byte = 5 DownTo 1
.Add(String(b, String.Chr(&2605)))
Next
End With
End
Usando un Font specifico
Si potrà usare un Font specifico, come ad esempio il Font "D050000L", capace di fornire l'immagine prescelta. [nota 2]
Questa soluzione non garantisce, però, una assoluta e universale compatibilità. Perché funzioni, sarà necessario avere installato quello specifico Font.
Mostriamo un esempio:
Public Sub Form_Open()
Dim ComboBox1 As ComboBox
If Fonts.Exist("D050000L") Or If Fonts.Exist("D050000L [urw]") Or If Fonts.Exist("D050000L [URW ]") Then
With ComboBox1 = New ComboBox(Me) As "ComboBox1"
.X = 50
.Y = 50
.H = 35
.W = 130
.Font = Font["D050000L,Bold,14"]
.Foreground = Color.RGB(197, 166, 67)
.List = ["MMMMM", "MMMM", "MMM", "MM", "M"]
End With
Else
Message.Warning("Devi installare il Font D050000L")
Me.Close
Endif
End
Caricando immagini in una PictureBox
Si potrà inserire nel ComboBox una PictureBox, e usare questo Controllo per mostrare le immagini in esso debitamente caricate.
Per ottenere questo risultato si dovrà assegnare, come "Figlio", al ComboBox l'Oggetto PictureBox (o altro Controllo capace di supportare una immagine).
Mostriamo un esempio pratico (è opportuno usare Componenti grafici delle risorse di QT):
Private ComboBox1 As ComboBox
Private pb As PictureBox
Private pc As Picture = Picture["icon:/32/star"] ' Imposta l'immagine da mostrare nel ComboBox
Public Sub Form_Open()
With ComboBox1 = New ComboBox(Me) As "ComboBox1"
.X = 100
.Y = 100
.W = pc.W * 4
.H = pc.H
.List = ["1", "2", "3"]
End With
With pb = New PictureBox(ComboBox1)
.X = (ComboBox1.W - pc.W) / 2
.Y = 0
.W = ComboBox1.W
.H = pc.H
End With
End
Public Sub ComboBox1_Click()
Dim im1 As Image = pc.Image
Dim im2 As Image = New Image(pc.W * 4, pc.H, Color.White, Image.Standard)
Select Case ComboBox1.Text
Case "1"
pb.Image = im2.DrawImage(im1, 20, 0, pc.W, pc.H)
Case "2"
With pb
.Image = im2.DrawImage(im1, 20, 0, pc.W, pc.H)
.Image = .Image.DrawImage(im1, 56, 0, pc.W, pc.H)
End With
Case "3"
With pb
.Image = im2.DrawImage(im1, 20, 0, pc.W, pc.H)
.Image = .Image.DrawImage(im1, 56, 0, pc.W, pc.H)
.Image = .Image.DrawImage(im1, 92, 0, pc.W, pc.H)
End With
End Select
End
Note
[1] Sull'uso di UNICODE in Gambas vedere: Uso di Unicode con gli oggetti di testo
[2] Questa soluzione è stata indicata da "Gianluigi", membro del forum "www.gambas-it.org".