Differenze tra le versioni di "Mostrare un'immagine con il Drop del suo file in una PictureBox"

Da Gambas-it.org - Wikipedia.
(Creata pagina con '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 ...')
 
Riga 16: Riga 16:
 
   Dim percorso, percorso_controllato As String
 
   Dim percorso, percorso_controllato As String
 
   Dim bb As Byte[]
 
   Dim bb As Byte[]
  Dim fl As File
 
 
   Dim sh As Short
 
   Dim sh As Short
 
   
 
   
 
   
 
   
   File.Save("/tmp/imm", Drag.Data)
+
   With bb = Byte[].FromString(s) 
  fl = Open "/tmp/imm" For Read
+
    .Remove(sh, 16)   
+
    percorso = .ToString(7, sh)
  sh = Stat("/tmp/d").Size - 16
+
  End With 
+
 
  bb = New Byte[sh]
 
  bb.Read(fl, 0, sh)
 
  fl.Close
 
   
 
  percorso = bb.ToString(7, sh)
 
 
   percorso_controllato = controllo(percorso)
 
   percorso_controllato = controllo(percorso)
 
   
 
   

Versione delle 15:14, 15 mar 2014

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 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 percorso, percorso_controllato As String
 Dim bb As Byte[]
 Dim sh As Short


  With bb = Byte[].FromString(s)  
    .Remove(sh, 16)  
    percorso = .ToString(7, sh)  
  End With  
  
  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