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 !

Va inoltre sottolineato che, qualora il nome del file di testo contenga uno o più spazi, poiché il metodo Drag.Paste( ) ritorna la rappresentazione URI del pecorso del file di testo trascinato nell'oggetto di testo, tali spazi saranno riportati nella stringa di ritorno con i caratteri %20 (da notare che 20 è il valore ASCII in esadecimale appunto dello spazio). Ciò determinerà un errore, successivamente, nel metodo File.Load( ). Dovrà dunque essere cura del programmatore risolvere tale problema mediante apposito codice.


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")

  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")

  percorso = Scan(percorso, "file://*")[0]

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

End