Differenze tra le versioni di "Uso della classe Clipboard"

Da Gambas-it.org - Wikipedia.
 
(12 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
 
La Classe ''Clipboard'' consente di gestire gli appunti memorizzati (ossia la ''clipboard'') di sistema.
 
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. <BR>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''.
L'uso della Classe ''Clipboard'' può avvenire per copiare negli ''appunti'' di sistema mediante la sua funzione ''.Copy()'' un testo oppure un'immagine. Successivamente attraverso la funzione ''.Paste()'' potranno essere restituiti i dati precedentemente copiati. Nel caso sia stata copiata un'immagine, verrà restituita un'immagine di tipo ''Image''.
 
  
  
 
==Copia di dati all'interno dello stesso applicativo Gambas==
 
==Copia di dati all'interno dello stesso applicativo Gambas==
Si potranno copiare dati presenti in un oggetto dell'applicativo Gambas per immetterli in un altro oggetto dello stesso applicativo.
+
Si potranno copiare dati presenti in un Controllo grafico dell'applicativo Gambas per immetterli in un altro Controllo grafico dello stesso applicativo.
  
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 da assegnare poi alla seconda ''PictureBox'':
+
===Copiare un'immagine===
  '''Public''' Sub Button1_Click()
+
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()
  <FONT color=#006400>' ''Facciamo una copia dell'immagine negli appunti (clipboard) di sistema:''</font>
+
    Clipboard.Copy(PictureBox1.Picture.Image)
+
  <FONT Color=gray>' ''Carica un'immagine nella prima "PictureBox":''</font>
 
+
  PictureBox1.Picture = Picture.Load("<FONT Color=darkgreen>''/percorso/del/file/immagine''</font>")
'''End'''
+
 +
End
 +
 +
 +
Public Sub PictureBox1_MouseUp()
 +
 +
  If Not Mouse.Right Then Return
 +
 +
  <FONT Color=gray>' ''Fa una copia dell'immagine negli appunti ("clipboard") di sistema:''</font>
 +
  Clipboard<FONT Color=green>.Copy</font>(PictureBox1.Picture.Image)
 
   
 
   
 +
End
 
   
 
   
'''Public''' Sub PictureBox2_MouseUp()
 
 
   
 
   
  Dim i As Image
+
  Public Sub PictureBox2_MouseUp()
   
 
  <FONT color=#006400>' ''Assegnamo ad una variabile di tipo "Image" la copia dell'immagine posta negli appunti di sistema:''</font>
 
    i = Clipboard.Paste()
 
   
 
<FONT color=#006400>' ''Assegnamo l'immagine alla seconda "PictureBox" presente nel Form:''</font>
 
    PictureBox2.Picture = i.Picture
 
 
   
 
   
  '''End'''
+
  If Not Mouse.Right Then Return
 +
 
 +
  <FONT Color=gray>' ''Assegna l'immagine alla seconda "PictureBox" presente nel Form:''</font>
 +
  PictureBox2.Image = Clipboard<FONT Color=red>.Paste</font>()
 +
End
  
  
Volendo invece fare l'esempio con un testo, poniamo il caso di avere un ''ValueBox'' ed una ''Label''. Intendiamo copiare il contenuto del ''ValueBox'' nella ''Label'' attraverso l'uso della Classe ''Clipboard'':
+
===Copiare un testo===
  '''Public''' Sub ValueBox1_MouseUp()
+
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
 +
 +
  <FONT Color=gray>' ''Fa una copia del testo negli appunti ("clipboard") di sistema:''</font>
 +
  Clipboard<FONT Color=green>.Copy</font>(TextArea1.Text)
 
   
 
   
  Clipboard.Copy(CStr(ValueBox1.Value))
+
End
 
   
 
   
'''End'''
 
 
   
 
   
 +
Public Sub Label1_MouseUp()
 
   
 
   
'''Public''' Sub Label1_MouseUp()
+
  If Not Mouse.Left Then Return
 
   
 
   
  Label1.Text = Clipboard.Paste()
+
<FONT Color=gray>' ''Assegna il testo copiato alla "Label" presente nel Form:''</font>
 +
  Label1.Text = Clipboard<FONT Color=red>.Paste</font>()
 
   
 
   
  '''End'''
+
  End
  
  
Riga 49: Riga 73:
  
 
===Copiare del testo 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 del tasto destro del mouse; quindi usare la semplice funzione ''.Paste()'' della Classe ''Clipboard'':
+
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.
  '''Public''' Sub Label1_MouseUp()
+
<BR>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()
 
   
 
   
  Label1.Text = Clipboard.Paste()
+
  With Label1
 +
    .Alignment = Align.TopLeft
 +
    .Text = Clipboard<FONT Color=red>.Paste</font>()
 +
  End With
 
   
 
   
  '''End'''
+
  End
 +
 
  
 
===Copia da un programma non-Gambas in un programma Gambas===
 
===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. Anche in tali casi la copia avverrà usando i tasti ''ctrl+C'' oppure l'opzione ''Copy'' (oppure ''Copia'' se in italiano) presente nella finestra menu del tasto destro del mouse. |[[#Note|1]]|
+
Si potranno copiare dati stringa o immagine anche da un programma non-Gambas esterno in un applicativo Gambas. <SUP>&#091;[[#Note|nota 1]]&#093;</sup>
  
====Copia di dati stringa====
+
====Copia di un testo====
Si potrà copiare un testo anche da un programma non-Gambas esterno in un applicativo Gambas. In tal caso, però, si è notato che nella maggior parte dei casi si otterrà come risultato finale non solo il testo copiato, ma anche altri dati estranei, come ad esempio dati relativi al codice di formattazione del testo medesimo ed imposti dal programma esterno non-Gambas (esempio: ''Gedit'') che sta mostrando il testo. Copiando da un sorgente HTML, verrà riportato nell'applicativo gambas anche il codice HTML della riga relativa al testo copiato.
+
Si potrà copiare un testo anche da un programma non-Gambas esterno in un applicativo Gambas. <SUP>&#091;[[#Note|nota 1]]&#093;</sup>
<BR>Eccezione fa il risultato della copia di un testo da ''LibreOffice'', che restituisce nell'applicativo Gambas il semplice e puro testo precedentemente copiato in ''LibreOffice''.
+
<BR>Dopo aver nel modo consueto evidenziato e copiato il testo presente nel programma esterno, cliccare semplicemente con un tasto del mouse sul Controllo di testo del programma Gambas che dovrà ricevere il testo copiato.
 +
<BR>Per qualche distribuzione Linux il testo si incollerà direttamente, solo se si clicca con il tasto centrale (rotellina) del mouse; mentre non accadrà nulla, se si clicca con quello sinistro. Apparirà la finestrina nel menu della ''clipboard'' di sistema, invece, se si clicca con il tasto destro del mouse, e da lì si potrà poi cliccare sull'opzione ''Paste'' (''Incolla'').
 +
 
 +
Ad esempio usando una ''TextArea'':
 +
Public Sub TextArea1_MouseUp()
 +
 +
  TextArea1.Text = Clipboard<FONT Color=red>.Paste</font>()
 +
 +
End
  
 
====Copia di un'immagine====
 
====Copia di un'immagine====
Si potrà infine anche copiare un'immagine a un programma esterno, visualizzatore di immagini, 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 il seguente:
+
Si potrà infine anche copiare un'immagine da un programma esterno, <U>che sia un visualizzatore di immagini</u> <SUP>&#091;[[#Note|nota 2]]&#093;</sup>, 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).
  '''Public''' Sub PictureBox1_MouseUp()
+
<BR>Quindi si provvederà a incollare l'immagine nel programma Gambas.
 +
<BR>Il codice nell'applicativo Gambas, che dovrà ricevere i dati immagine, potrà essere - ad esempio - il seguente:
 +
  Public Sub PictureBox1_MouseUp()
 
   
 
   
   Dim s As String
+
<FONT Color=gray>' ''Per trasferire i dati di tipo "Image" alla "PictureBox", posta sul "Form", si dovrà in questo caso cliccare con il tasto "destro" del mouse sulla "PictureBox":''</font>
 +
   If Not Mouse.Right Then Return
 
    
 
    
  <FONT color=#006400>' ''Assegnamo ad una variabile di tipo stringa la copia dell'immagine presente negli appunti di sistema:''</font>
+
  <FONT Color=gray>' ''Assegna l'immagine alla "PictureBox" presente nel Form:''</font>
    s = Clipboard.Paste()
+
  PictureBox1.Image = Clipboard<FONT Color=red>.Paste</font>()
 
   
 
   
  <FONT color=#006400>' ''Viene ricostruita e salvata l'immagine partendo dai dati presenti nella variabile di tipo stringa:''</font>
+
  End
    File.Save("/tmp/immagine", s)
 
 
    PictureBox1.Picture = Picture.Load("/tmp/immagine")
 
 
'''End'''
 
  
  
  
 
=Note=
 
=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 ''qt4'' 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.
+
[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]]

Versione attuale delle 08:57, 25 lug 2024

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.


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 nel modo consueto evidenziato e copiato il testo presente nel programma esterno, cliccare semplicemente con un tasto del mouse sul Controllo di testo del programma Gambas che dovrà ricevere il testo copiato.
Per qualche distribuzione Linux il testo si incollerà direttamente, solo se si clicca con il tasto centrale (rotellina) del mouse; mentre non accadrà nulla, se si clicca con quello sinistro. Apparirà la finestrina nel menu della clipboard di sistema, invece, se si clicca con il tasto destro del mouse, e da lì si potrà poi cliccare sull'opzione Paste (Incolla).

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, che sia un 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 si provvederà a incollare l'immagine nel programma Gambas.
Il codice nell'applicativo Gambas, che dovrà ricevere i dati immagine, potrà essere - ad esempio - il seguente:

Public Sub PictureBox1_MouseUp()

' Per trasferire i dati di tipo "Image" alla "PictureBox", posta sul "Form", si dovrà in questo caso cliccare con il tasto "destro" del mouse sulla "PictureBox":
 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