Differenze tra le versioni di "Mostrare il contenuto di un file di testo con il solo drop del file in un oggetto di testo"

Da Gambas-it.org - Wikipedia.
 
(10 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
Il caso è quello in cui si intende far mostrare da un oggetto di testo il contenuto di un file di testo solo e semplicemente <SPAN Style="text-decoration:underline">trascinando tale file</span> 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.
+
Per far mostrare da un Controllo per il testo il contenuto di un file di testo, si dovrà solo e semplicemente <SPAN Style="text-decoration:underline">trascinare tale '''file'''</span> con il mouse (tenendo premuto il suo tasto sinistro) all'interno del Controllo di testo.
<BR>Precisiamo che con il mouse va trascinato il <SPAN Style="text-decoration:underline">file</span> di testo. Non va, dunque, trascinato il testo, anche se evidenziato, del file !
+
<BR>Il file di testo può essere trascinato da una Cartella, da un Controllo grafico del programma Gambas che mostri il file di testo, da una finestra di un qualsiasi programma esterno o anche dalla Scrivania (''Desktop'' ).
 +
<BR>Ripetiamo che con il mouse va trascinata l'<SPAN Style="text-decoration:underline">icona</span> che rappresenta il <SPAN Style="text-decoration:underline">file</span> di testo.
  
 +
Poiché il trascinamento è un rilascio di file, non si deve usare la Proprietà statica ".Data" della Classe ''Drag'': "Drag.Data" per un'operazione di rilascio di un file è un elenco terminato con ''cr-lf'' e avrà il seguente aspetto:
 +
file:///home/[''Home.User'']/Scrivania/nome%20del%20file\r-28:-27:48:48\r\n
 +
Si dovrà invece usare il Metodo ".Paste()" della Classe ''Drag'', il quale restituisce il percorso (NON il contenuto) del file trascinato.
 +
<BR>Se nell'argomento del Metodo viene posta l'opzione:
 +
Drag.Paste("<FONT Color=red>text/uri-list</font>")
 +
allora viene restituito un array di tipo stringa. Solitamente il primo elemento (numero d'indice 0) contiene il puro percorso e il nome del file trscinato.
 +
/home/[''Home.User'']/Scrivania/nome del file
 +
precisando che alla fine della strina è presente comunque il carattere di ''nuova riga a capo'' (&h0A ossia "\n").
  
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'':
+
Se invece nell'argomento viene posta l'opzione:
  '''Public''' Sub Form_Open()
+
Drag.Paste("<FONT Color=green>text/plain</font>")
 +
viene restituito il testo grezzo e completo del percorso del file:
 +
file:///home/[''Home.User'']/Scrivania/nome%20del%20file
 +
 
 +
===Esempi pratici===
 +
L'esempio pratico seguente prevede la presenza sul ''Form'' dell'applicativo Gambas di una ''TextArea'', nella quale si trascinerà e si rilascerà quindi il file di testo:
 +
Private TextArea1 As TextArea
 +
   
 +
 +
Public Sub Form_Open()
 
    
 
    
  With TextArea1
+
  With Me
<FONT color=gray>' ''Impostiamo la proprietà ".Drop" a "vera" per consentire l'attivazione dell'evento del "Drop"''</font>
+
    .Center
    .Drop = True
+
    .W = Screen.AvailableWidth * 0.75
    .Wrap = True
+
    .H = Screen.AvailableHeight
  End With
+
  End With
 
+
  With TextArea1 = New TextArea(Me) As "TextArea1"
  With TextEdit1
+
    .X = 0
  <FONT color=gray>' ''Impostiamo la proprietà ".Drop" a "vera" per consentire l'attivazione dell'evento del "Drop"''</font>
+
    .Y = 0
    .Drop = True
+
    .W = Me.W * 0.5
    .Wrap = True
+
    .H = Me.H
  End With
+
  <FONT color=darkgreen>' ''Impostiamo la Proprietà ".Drop" a "vera" per consentire l'attivazione dell'evento del "Drop":''</font>
 +
    .Drop = True
 +
    .Wrap = True
 +
  End With
 
   
 
   
  '''End'''
+
  End
 
   
 
   
 
   
 
   
  '''Public''' Sub TextArea1_Drop()   <FONT color=gray>' ''Rilasciamo il file di testo nella "TextArea"''</font>
+
  Public Sub TextArea1_Drop() <FONT color=gray>' ''Rilasciamo il file di testo nella "TextArea"''</font>
 
    
 
    
 
   Dim percorso As String
 
   Dim percorso As String
 
    
 
    
  percorso = Drag.Paste("text/uri-list")
+
  percorso = Drag.Paste("text/uri-list")[0]
 
   
 
   
<FONT color=gray>' ''Poiché il metodo "Drag.Paste()" ritorna la rappresentazione URI del pecorso del file di testo trascinato nell'oggetto di testo,''
+
  TextArea1.Text = File.Load(Trim(percorso))
' ''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()":''</font>
 
  percorso = FromUrl(percorso)
 
 
 
  percorso = Scan(percorso, "file://*")[0]
 
 
   
 
   
  TextArea1.Text = File.Load(Trim(percorso))
+
End
 +
 
 +
====Trascinando il file di testo prelevandolo da un ''FileChooser''====
 +
Il precedente codice va bene anche se vogliamo trascinare un file prescelto dalla lista mostrata da un Controllo ''FileChoser''.
 +
<BR>Ad ogni modo si può abbreviare la seconda routine come segue:
 +
Public Sub TextArea1_Drop()
 
   
 
   
'''End'''
+
  TextArea1.Text = File.Load(FileChooser1.SelectedPath)
 
   
 
   
   
+
  End
'''Public''' Sub TextEdit1_Drop()  <FONT color=gray>' ''Rilasciamo il file di testo nell'oggetto "TextEdit"''</font>
 
 
 
  Dim percorso As String
 
 
 
  percorso = Drag.Paste("text/uri-list")
 
 
 
<FONT color=gray>' ''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()":''</font>
 
  percorso = FromUrl(percorso)
 
 
 
  percorso = Scan(percorso, "file://*")[0]
 
 
 
  TextEdit1.Text = File.Load(Trim(percorso))
 
 
 
'''End'''
 

Versione attuale delle 09:44, 17 nov 2023

Per far mostrare da un Controllo per il testo il contenuto di un file di testo, si dovrà solo e semplicemente trascinare tale file con il mouse (tenendo premuto il suo tasto sinistro) all'interno del Controllo di testo.
Il file di testo può essere trascinato da una Cartella, da un Controllo grafico del programma Gambas che mostri il file di testo, da una finestra di un qualsiasi programma esterno o anche dalla Scrivania (Desktop ).
Ripetiamo che con il mouse va trascinata l'icona che rappresenta il file di testo.

Poiché il trascinamento è un rilascio di file, non si deve usare la Proprietà statica ".Data" della Classe Drag: "Drag.Data" per un'operazione di rilascio di un file è un elenco terminato con cr-lf e avrà il seguente aspetto:

file:///home/[Home.User]/Scrivania/nome%20del%20file\r-28:-27:48:48\r\n

Si dovrà invece usare il Metodo ".Paste()" della Classe Drag, il quale restituisce il percorso (NON il contenuto) del file trascinato.
Se nell'argomento del Metodo viene posta l'opzione:

Drag.Paste("text/uri-list")

allora viene restituito un array di tipo stringa. Solitamente il primo elemento (numero d'indice 0) contiene il puro percorso e il nome del file trscinato.

/home/[Home.User]/Scrivania/nome del file

precisando che alla fine della strina è presente comunque il carattere di nuova riga a capo (&h0A ossia "\n").

Se invece nell'argomento viene posta l'opzione:

Drag.Paste("text/plain")

viene restituito il testo grezzo e completo del percorso del file:

file:///home/[Home.User]/Scrivania/nome%20del%20file

Esempi pratici

L'esempio pratico seguente prevede la presenza sul Form dell'applicativo Gambas di una TextArea, nella quale si trascinerà e si rilascerà quindi il file di testo:

Private TextArea1 As TextArea


Public Sub Form_Open()
 
 With Me
   .Center
   .W = Screen.AvailableWidth * 0.75
   .H = Screen.AvailableHeight
 End With
 With TextArea1 = New TextArea(Me) As "TextArea1"
   .X = 0
   .Y = 0
   .W = Me.W * 0.5
   .H = Me.H
' 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")[0]

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

End

Trascinando il file di testo prelevandolo da un FileChooser

Il precedente codice va bene anche se vogliamo trascinare un file prescelto dalla lista mostrata da un Controllo FileChoser.
Ad ogni modo si può abbreviare la seconda routine come segue:

Public Sub TextArea1_Drop()

 TextArea1.Text = File.Load(FileChooser1.SelectedPath)

End