Mostrare un'immagine con il Drop del suo file in una PictureBox
Da Gambas-it.org - Wikipedia.
Versione del 15 mar 2014 alle 16:55 di Vuott (Discussione | contributi)
Il caso è quello in cui si intende far mostrare da una PictureBox un'immagine, semplicemente trascinando il suo file, preso anche da una finestra esterna all'applicativo Gambas, e rilasciandolo all'interno della predetta PictureBox.
Usando i componenti gb.gtk, gb.gtk3 o gb.gui
Se è stato impostato uno di questi componenti: gb.gtk, gb.gtk3 o gb.gui, allora potrà essere utilizzato il seguente codice:
Public Sub Form_Open() ' Impostiamo la proprietà ".Drop" a "Vero" per consentire l'attivazione dell'evento del "Drop": PictureBox1.Drop = True End Public Sub PictureBox1_Drop() Dim dati, percorso, percorso_controllato As String dati = Drag.Data percorso = String.Mid(dati, 8, String.Len(dati)) percorso_controllato = controllo(Trim(percorso)) PictureBox1.Picture = Picture.Load(percorso_controllato) End ' I percorsi dei file contnenti uno o più spazi, oppure caratteri particolari, possono generare errore. ' Questa funzione intende risolvere quel problema. Private Function controllo(percorsoFile As String) As String Dim b As Byte = 1 Dim s1, s2 As String Dim n As Byte While b < Len(percorsoFile) + 1 s1 = String.Mid(percorsoFile, b, 1) If s1 = "%" Then n = Val("&" & Mid(percorsoFile, b + 1, 2)) s1 = Chr(n) b += 2 Endif s2 &= s1 Inc b Wend Return s2 End
Usando il componente gb.qt4
Se è stato impostato il componente gb.qt4, allora potrà essere utilizzato il seguente codice:
Public Sub Form_Open() ' Impostiamo la proprietà ".Drop" a "Vero" per consentire l'attivazione dell'evento del "Drop": PictureBox1.Drop = True End Public Sub PictureBox1_Drop() Dim dati, percorso, percorso_controllato As String dati = Drag.Data percorso = String.Mid(dati, 8, String.Len(dati) - 16 - 7) percorso_controllato = controllo(percorso) PictureBox1.Picture = Picture.Load(percorso_controllato) End ' I percorsi dei file contnenti uno o più spazi, oppure caratteri particolari, possono generare errore. ' Questa funzione intende risolvere quel problema. Private Function controllo(percorsoFile As String) As String Dim b As Byte = 1 Dim s1, s2 As String Dim n As Byte While b < Len(percorsoFile) + 1 s1 = String.Mid(percorsoFile, b, 1) If s1 = "%" Then n = Val("&" & Mid(percorsoFile, b + 1, 2)) s1 = Chr(n) b += 2 Endif s2 &= s1 Inc b Wend Return s2 End