Nozioni di base sugli Appunti (Taglia / Copia / Incolla)

Gli Appunti di Windows rappresentano il contenitore per qualsiasi testo o grafica che viene tagliato, copiato o incollato da o verso un'applicazione. Questo articolo ti mostrerà come usare l'oggetto TClipboard per implementare le funzioni taglia-copia-incolla nella tua applicazione Delphi.

Appunti in generale

Come probabilmente saprai, gli Appunti possono contenere solo un pezzo dello stesso tipo di dati per tagliare, copiare e incollare contemporaneamente. Se inviamo nuove informazioni nello stesso formato negli Appunti, cancelliamo quello che c'era prima, ma il il contenuto degli Appunti rimane negli Appunti anche dopo aver incollato tali contenuti in un altro programma.

TClipboard

Per poter utilizzare gli Appunti di Windows nelle nostre applicazioni, dobbiamo aggiungere Unità ClipBrd alla clausola degli usi del progetto, tranne quando limitiamo il taglio, la copia e l'incolla ai componenti che già possiedono il supporto integrato per i metodi degli Appunti. Tali componenti sono TEdit, TMemo, TOLEContainer, TDDEServerItem, TDBEdit, TDBImage e TDBMemo.

instagram viewer

L'unità ClipBrd rappresenta automaticamente un oggetto TClipboard chiamato Clipboard. Useremo il CutToClipboard, Copia negli appunti, PasteFromClipboard, Chiaro e hasFormat metodi per gestire le operazioni degli Appunti e la manipolazione di testo / grafica.

Invia e recupera testo

Per inviare del testo agli Appunti viene utilizzata la proprietà AsText dell'oggetto Appunti. Se vogliamo, ad esempio, inviare il corda informazioni contenute nella variabile SomeStringData negli Appunti (eliminando qualsiasi testo fosse presente), utilizzeremo il seguente codice:

usi Clipbrd; ...
Appunti. AsText: = SomeStringData_Variable; 

Per recuperare le informazioni di testo dagli Appunti utilizzeremo

usi Clipbrd; ...
SomeStringData_Variable: = Appunti. AsText; 

Nota: se vogliamo solo copiare il testo da, diciamo, Modifica componente negli Appunti, non dobbiamo includere l'unità ClipBrd nella clausola use. Il metodo CopyToClipboard di TEdit copia il testo selezionato nel controllo di modifica negli Appunti nel formato CF_TEXT.

procedura TForm1.Button2Click (Mittente: TObject); inizio// la seguente riga selezionerà // TUTTO il testo nel controllo di modifica {Edit1.SelectAll;} Edit1.CopyToClipboard; fine; 

Immagini degli Appunti

Per recuperare immagini grafiche dagli Appunti, Delphi deve sapere quale tipo di immagine è memorizzata lì. Allo stesso modo, per trasferire le immagini negli Appunti, l'applicazione deve dire agli Appunti quale tipo di grafica sta inviando. Seguono alcuni dei possibili valori del parametro Format; ci sono molti altri formati di Appunti forniti da Windows.

  • CF_TEXT - Testo con ogni riga che termina con a CR-LF combinazione.
  • CF_BITMAP - Un'immagine bitmap di Windows.
  • CF_METAFILEPICT - Un grafico metafile di Windows.
  • CF_PICTURE - Un oggetto di tipo TPicture.
  • CF_OBJECT - Qualsiasi oggetto persistente.

Il metodo HasFormat restituisce True se l'immagine negli Appunti ha il formato giusto:

Se Appunti. HasFormat (CF_METAFILEPICT) poi ShowMessage ('Clipboard has metafile'); 

Utilizzare il metodo Assign per inviare (assegnare) un'immagine agli Appunti. Ad esempio, il codice seguente copia la bitmap da un oggetto bitmap denominato MyBitmap negli Appunti:

 Appunti. Assegna (MyBitmap); 

In generale, MyBitmap è un oggetto di tipo TGraphics, TBitmap, TMetafile o TPicture.

Per recuperare un'immagine dagli Appunti dobbiamo: verificare il formato del contenuto corrente degli Appunti e usare il metodo Assign dell'oggetto target:

{posizionare un pulsante e un controllo immagine su form1} {Prima di eseguire questo codice premere la combinazione di tasti Alt-PrintScreen}usi Clipbrd;... procedura TForm1.Button1Click (Mittente: TObject); inizioSe Appunti. HasFormat (CF_BITMAP) poi Image1.Picture. Bitmap. Assegna (Appunti); fine; 

Più controllo negli Appunti

Appunti memorizza le informazioni in più formati in modo da poter trasferire i dati tra le applicazioni utilizzando formati diversi. Quando leggiamo le informazioni dagli appunti con la classe TClipboard di Delphi, ci limitiamo ai formati di appunti standard: testo, immagini e metafile.

Supponiamo che tu stia lavorando tra due diverse applicazioni Delphi; come definiresti il ​​formato personalizzato degli appunti per inviare e ricevere dati tra questi due programmi? Ai fini dell'esplorazione, supponiamo che tu stia cercando di codificare un Incolla elemento del menu. Vuoi che sia disabilitato quando non c'è testo negli appunti (come un'istanza).

Poiché l'intero processo con gli appunti si svolge dietro le quinte, non esiste alcun metodo della classe TClipboard che ti informi quando si sono verificati cambiamenti nel contenuto degli appunti. L'idea è di agganciarsi al sistema di notifica degli Appunti, in modo da poter accedere e rispondere agli eventi quando gli Appunti cambiano.

Per godere di maggiore flessibilità e funzionalità, è necessario gestire le notifiche di modifica degli appunti e i formati personalizzati degli appunti - ascoltando gli Appunti - è necessario.