Differenze tra le versioni di "Ottenere il percorso di un file trasportato e rilasciato con Drag&Drop"
Riga 16: | Riga 16: | ||
ListBox1.Add(<FONT Color=orange>Replace</font>(<FONT Color=green>Scan</font>(<FONT Color=#B22222>Drag.Paste()</font>, "*//*\r*")[1], "%20", " ")) | ListBox1.Add(<FONT Color=orange>Replace</font>(<FONT Color=green>Scan</font>(<FONT Color=#B22222>Drag.Paste()</font>, "*//*\r*")[1], "%20", " ")) | ||
+ | |||
+ | <FONT Color=gray>' ''oppure:'' '''ListBox1.Add(Scan(FromUrl(Drag.Paste()), "*//*\r*")[1])'''</font> | ||
End | End |
Versione delle 20:02, 18 ott 2023
Per ottenere il percorso, comprensivo del nome di un file, trascinato con la risorsa del Drag&Drop all'interno di un Controllo di testo, utilizza il Metodo ".Paste()" della Classe Drag.
Sarà opportuno lasciare vuoto il parametro previsto dal Metodo ".Paste()", giacché, se usassimo il formato "text/uri-list", eventuali file aventi nel nome caratteri particolari - come ad esempio il simbolo "+" o il simbolo "§" - questi sarebbero sostituiti nel risultato da uno spazio bianco.
Lasciando invece vuoto quel parametro, i simboli saranno salvaguardati, anche se, però, qualora il nome del file dovesse contenere uno spazio bianco, questo sarebbe riportato con il codice "%20" (sappiamo che il valore esadecimale &H20 corrisponde appunto nella tabella ASCII al carattere dello Spazio Bianco). Per ovviare a ciò useremo la funzione "Replace()".
Va sottolineato che la stringa del percorso, dopo il nome del file, prevede il carattere del "Nuova linea a capo" (&H10, gb.Newline) e del "Ritorno a capo" (&H0D, gb.Cr), seguito da alcuni valori numerici in ASCII.
Per eliminare il valore del &H0D, il codice prevederà l'uso della funzione Scan().
Mostriamo un semplice esempio, nel quale sarà possibile vedere in una ListBox il percorso e il nome di un file che sarà stato trascinato con la modlità del Drag&Drop.
Public Sub Form_Open() ListBox1.Drop = True End Public Sub Listbox1_Drop() ListBox1.Add(Replace(Scan(Drag.Paste(), "*//*\r*")[1], "%20", " ")) ' oppure: ListBox1.Add(Scan(FromUrl(Drag.Paste()), "*//*\r*")[1]) End