Clipboardul Windows reprezintă containerul pentru orice text sau grafică care sunt tăiate, copiate sau lipite de pe sau într-o aplicație. Acest articol vă va arăta cum să utilizați obiectul TClipboard pentru a implementa caracteristicile de tip cut-copy-paste din aplicația dvs. Delphi.
Clipboard în general
După cum probabil știți, Clipboard-ul poate reține o singură bucată din același tip de date pentru tăiere, copiere și lipire simultan. Dacă trimitem informații noi în același format către Clipboard, ștergem ce era acolo înainte, dar conținutul Clipboard-ului rămâne cu Clipboard-ul chiar și după ce am lipit acel conținut într-un alt program.
TClipboard
Pentru a utiliza Windows Clipboard în aplicațiile noastre, trebuie să adăugăm funcția Unitate ClipBrd la clauza de utilizare a proiectului, cu excepția cazului în care restricționăm tăierea, copierea și lipirea componentelor care posedă deja suport integrat pentru metodele Clipboard. Aceste componente sunt TEdit, TMemo, TOLEContainer, TDDEServerItem, TDBEdit, TDBImage și TDBMemo.
Unitatea ClipBrd reprezintă automat un obiect TClipboard numit Clipboard. Vom folosi CutToClipboard, Copiați în clipboard, PasteFromClipboard, clar și HasFormat metode pentru a face față operațiunilor Clipboard și manipularea textului / graficului.
Trimiteți și recuperați text
Pentru a trimite ceva text către Clipboard, se utilizează proprietatea AsText a obiectului Clipboard. Dacă dorim, de exemplu, să trimitem şir informațiile conținute în variabila SomeStringData la Clipboard (ștergerea textului existent), vom folosi următorul cod:
utilizări ClipBrd; ...
Clipboard. AsText: = SomeStringData_Variable;
Pentru a prelua informațiile text din Clipboard le vom folosi
utilizări ClipBrd; ...
SomeStringData_Variable: = Clipboard. AsText;
Notă: dacă dorim să copiem textul din, să zicem, Componenta Editare în Clipboard, nu trebuie să includem unitatea ClipBrd în clauza de utilizare. Metoda CopyToClipboard de TEdit copiază textul selectat în controlul de editare în Clipboard în format CF_TEXT.
procedură TForm1.Button2Click (Expeditor: TObject); începe// următoarea linie va selecta // TOATE textul din controlul de editare {Edit1.SelectAll;} Edit1.CopyToClipboard; Sfârșit;
Imagini clipboard
Pentru a prelua imagini grafice din Clipboard, Delphi trebuie să știe ce tip de imagine este stocată acolo. În mod similar, pentru a transfera imagini în clipboard, aplicația trebuie să spună Clipboard-ului ce tip de grafică trimite. Urmează unele dintre valorile posibile ale parametrului Format; există multe alte formate Clipboard furnizate de Windows.
- CF_TEXT - Text cu fiecare linie care se termină cu a CR-LF combinaţie.
- CF_BITMAP - O grafică bitmap Windows.
- CF_METAFILEPICT - O grafică cu metafile Windows.
- CF_PICTURE - Un obiect de tip TPicture.
- CF_OBJECT - Orice obiect persistent.
Metoda HasFormat returnează True dacă imaginea din Clipboard are formatul potrivit:
dacă Clipboard. HasFormat (CF_METAFILEPICT) apoi ShowMessage („Clipboard are metafile”);
Utilizați metoda Asignare pentru a trimite (atribui) o imagine în Clipboard. De exemplu, următorul cod copiază bitmap-ul dintr-un obiect bitmap numit MyBitmap în Clipboard:
Clipboard. Atribuire (MyBitmap);
În general, MyBitmap este un obiect de tip TGraphics, TBitmap, TMetafile sau TPicture.
Pentru a prelua o imagine din Clipboard trebuie să: verificăm formatul conținutului curent al clipboard-ului și să folosim metoda Assign a obiectului țintă:
{așezați un buton și un control al imaginii pe formular1} {Înainte de a executa acest cod, apăsați combinația de taste Alt-PrintScreen}utilizări clipbrd;... procedură TForm1.Button1Click (Expeditor: TObject); începedacă Clipboard. HasFormat (CF_BITMAP) apoi Image1.Picture. Bitmap. Atribuire (Clipboard); Sfârșit;
Mai mult control clipboard
Clipboard stochează informații în mai multe formate, astfel încât să putem transfera date între aplicații folosind diferite formate. Când citim informații din clipboard cu clasa TClipboard a Delphi, ne limităm la formate de clipboard standard: text, imagini și metafile.
Să presupunem că lucrați între două aplicații Delphi diferite; cum ați defini formatul de clipboard personalizat pentru a trimite și primi date între cele două programe? În scopul explorării, să spunem că încercați să codați o Lipire articol din meniu. Doriți să fie dezactivat atunci când nu există text în clipboard (ca o instanță).
Întrucât întregul proces cu clipboardul are loc în spatele scenei, nu există nicio metodă a clasei TClipboard care să vă informeze atunci când a avut loc o modificare a conținutului clipboard-ului. Ideea este să vă conectați la sistemul de notificări pentru clipboard, astfel încât să puteți accesa și să răspundeți la evenimente când se schimbă tabloul.
Pentru a vă bucura de mai multă flexibilitate și funcționalitate, este necesar să se ocupe de notificările de schimbare a clipboard-urilor și formatele de clipboard personalizate - ascultarea Clipboard-ului.