Uso della classe Clipboard
La Classe Clipboard consente di gestire gli appunti memorizzati (ossia la clipboard) di sistema.
L'uso della Classe Clipboard può avvenire per copiare negli appunti di sistema mediante il suo Metodo ".Copy()" un testo oppure un'immagine.
Successivamente attraverso il Metodo ".Paste()" potranno essere restituiti i dati precedentemente copiati. Nel caso sia stata copiata un'immagine, verrà restituita un'immagine di tipo Image.
Indice
Copia di dati all'interno dello stesso applicativo Gambas
Si potranno copiare dati presenti in un Controllo grafico dell'applicativo Gambas per immetterli in un altro Controllo grafico dello stesso applicativo.
Copiare un'immagine
Poniamo come esempio il caso in cui sul Form si abbiano due PictureBox, in una delle quali è presente un'immagine. Si intende semplicemente far mostrare all'applicativo nella seconda PictureBox l'immagine presente nella prima PictureBox, attraverso la copia negli appunti del sistema dell'immagine, cliccando con il tasto destro del mouse, da assegnare successivamente, sempre cliccando con il tasto destro del mouse, alla seconda PictureBox.
Public Sub Form_Open() ' Carica un'immagine nella prima "PictureBox": PictureBox1.Picture = Picture.Load("/percorso/del/file/immagine") End Public Sub PictureBox1_MouseUp() If Not Mouse.Right Then Return ' Fa una copia dell'immagine negli appunti ("clipboard") di sistema: Clipboard.Copy(PictureBox1.Picture.Image) End Public Sub PictureBox2_MouseUp() If Not Mouse.Right Then Return ' Assegna l'immagine alla seconda "PictureBox" presente nel Form: PictureBox2.Image = Clipboard.Paste() End
Copiare un testo
Volendo invece fare l'esempio con un testo, poniamo il caso di avere una TexTArea e una Label. Intendiamo copiare il contenuto della TextArea nella Label attraverso l'uso della Classe Clipboard. Si dovrà usare sempre il tasto sinistro del mouse.
Public Sub Form_Open() With Label1 .Background = Color.SoftYellow .Alignment = Align.TopLeft End With TextArea1.Text = "questo è un testo qualsiasi." End Public Sub TextArea1_MouseUp() If Not Mouse.Left Then Return ' Fa una copia del testo negli appunti ("clipboard") di sistema: Clipboard.Copy(TextArea1.Text) End Public Sub Label1_MouseUp() If Not Mouse.Left Then Return ' Assegna il testo copiato alla "Label" presente nel Form: Label1.Text = Clipboard.Paste() End
Copia di dati dall'esterno dell'applicativo Gambas all'interno dell'applicativo medesimo
Si potranno, inoltre, copiare dati stringa e dati immagine presenti all'esterno dell'applicativo Gambas per immetterli in un oggetto dello stesso applicativo. Pertanto, in questo caso avremo la copia, a seconda dei casi, di un testo o di un'immagine da un programma Gambas in un altro programma Gambas.
Copiare del testo da un programma Gambas in un altro programma Gambas
Poniamo come esempio il caso in cui si intende copiare un testo, presente in un altro programma Gambas, all'interno dell'applicativo Gambas principale. In tal caso basterà evidenziare la riga di testo prescelta, premere i tasti ctrl+C oppure usare l'opzione Copy presente nella finestra menu contestuale del tasto destro del mouse.
Nel codice all'Evento del mouse della pressione o del rilascio di un suo tasto, si imposterà il Metodo ".Paste()" della Classe Clipboard.
Public Sub Label1_MouseUp() With Label1 .Alignment = Align.TopLeft .Text = Clipboard.Paste() End With End
Copia da un programma non-Gambas in un programma Gambas
Si potranno copiare dati stringa o immagine anche da un programma non-Gambas esterno in un applicativo Gambas. [nota 1]
Copia di un testo
Si potrà copiare un testo anche da un programma non-Gambas esterno in un applicativo Gambas. [nota 1] Dopo aver evidenziato e copiato il testo presente nel programma esterno, cliccare semplicemente con il tasto sinistro del mouse sul Controllo del programma Gambas che dovrà ricevere il testo copiato.
Ad esempio usando una TextArea:
Public Sub TextArea1_MouseUp() TextArea1.Text = Clipboard.Paste() End
Copia di un'immagine
Si potrà infine anche copiare un'immagine da un programma esterno, visualizzatore di immagini [nota 2], in un programma Gambas. Si cliccherà sull'immagine con il tasto destro del mouse e si copierà l'immagine scegliendo la consueta opzione Copy (oppure Copia se in italiano).
Quindi il codice nell'applicativo Gambas che dovrà ricevere l'immagine potrà essere ad esempio il seguente:
Public Sub PictureBox1_MouseUp() If Not Mouse.Right Then Return ' Assegna l'immagine alla "PictureBox" presente nel Form: PictureBox1.Image = Clipboard.Paste() End
Note
[1] Dalla Mailing List internazionale di Gambas al riguardo è stato precisato che non è possibile ottenere in un applicativo Gambas il testo solo e semplicemente evidenziato in un programma esterno, perché il testo non è evidenziato negli appunti desktop, ma solo nel buffer degli appunti del server grafico X. Ed invece la Classe Clipboard del Componente qt5 riconosce solo gli appunti di desktop. La soluzione, dunque, risiede nell'ottenere il testo evidenziato (che si intende copiare) all'interno degli appunti (clipboard) di desktop.
[2] Per scaricare un'immagine contenuta in una pagina web vedere: Scaricare una immagine da un sito internet