Mostrare il contenuto di un file di testo con il solo drop del file in un oggetto di testo

Da Gambas-it.org - Wikipedia.

Il caso è quello in cui si intende far mostrare da un oggetto di testo il contenuto di un file di testo solo e semplicemente trascinando tale file con il mouse (tenendo premuto il suo tasto sinistro) all'interno dell'oggetto di testo predetto. Il file di testo può essere trascinato anche da una finestra esterna all'applicativo Gambas.
Precisiamo che con il mouse va trascinato il file di testo. Non va, dunque, trascinato il testo, anche se evidenziato, del file !


L'esempio pratico seguente prevede la presenza sul Form dell'applicativo Gambas di una TextArea e di una TextEdit. In tal modo si potrà fare l'esperimento trascinando e rilasciando, a piacimento, il file di testo sia all'interno della TextArea sia all'interno della TextEdit:

Public Sub Form_Open()
 
  With TextArea1
' Impostiamo la proprietà ".Drop" a "vera" per consentire l'attivazione dell'evento del "Drop"
    .Drop = True
    .Wrap = True
  End With
  
  With TextEdit1
' Impostiamo la proprietà ".Drop" a "vera" per consentire l'attivazione dell'evento del "Drop"
    .Drop = True
    .Wrap = True
  End With

End


Public Sub TextArea1_Drop()   ' Rilasciamo il file di testo nella "TextArea"
 
 Dim percorso As String
 
  percorso = Drag.Paste("text/uri-list")

' Poiché il metodo "Drag.Paste()" ritorna la rappresentazione URI del pecorso del file di testo trascinato nell'oggetto di testo,
' qualora il nome del file di testo contenga uno o più spazi, essi sarebbero riportati con i caratteri %20 (da notare che 20 è il valore ASCII in esadecimale appunto dello spazio).
' Ciò determinerebbe un errore nel successivo metodo "File.Load()". Applichiamo, pertanto, alla stringa ritornata dal metodo "Drag.Paste()" la funzione "FromUrl()":
  percorso = FromUrl(percorso)
  
  percorso = Scan(percorso, "file://*")[0]

  TextArea1.Text = File.Load(Trim(percorso))

End


Public Sub TextEdit1_Drop()   ' Rilasciamo il file di testo nell'oggetto "TextEdit"
 
 Dim percorso As String
  
  percorso = Drag.Paste("text/uri-list")
  
' Poiché il metodo "Drag.Paste()" ritorna la rappresentazione URI del pecorso del file di testo trascinato nell'oggetto di testo,
' qualora il nome del file di testo contenga uno o più spazi, essi sarebbero riportati con i caratteri %20 (da notare che 20 è il valore ASCII in esadecimale appunto dello spazio).
' Ciò determinerebbe un errore nel successivo metodo "File.Load()". Applichiamo, pertanto, alla stringa ritornata dal metodo "Drag.Paste()" la funzione "FromUrl()":
  percorso = FromUrl(percorso)
  
  percorso = Scan(percorso, "file://*")[0]
  
  TextEdit1.Text = File.Load(Trim(percorso))
  
End