Pagrindiniai mainų elementai (iškirpti / nukopijuoti / įklijuoti)

„Windows“ mainų sritis reprezentuoja bet kokio teksto ar paveikslėlių, supjaustytų, nukopijuotų ar įklijuotų iš programos ar į ją, konteineris. Šiame straipsnyje bus parodyta, kaip naudoti „TClipboard“ objektą „Delphi“ programoje įgyvendinti „cut-copy-paste“ funkcijas.

Mainų sritis

Kaip jūs tikriausiai žinote, iškarpinė gali laikyti tik vieną tos pačios rūšies duomenų fragmentą, kad būtų galima vienu metu iškirpti, nukopijuoti ir įklijuoti. Jei į mainų sritį siųstume naują informaciją tuo pačiu formatu, sunaikintume tai, kas buvo anksčiau, bet „Mainų sritį“ turinys išlieka „Mainų sritį“, net po to, kai tą turinį įklijuojame į kitą programą.

TC plokštė

Norėdami naudoti „Windows“ iškarpinę savo programose, turime pridėti „ClipBrd“ įrenginys projekto naudojimo sąlygai, išskyrus tuos atvejus, kai ribojame, nukopijuojame ir įklijuojame komponentus, jau turinčius įmontuotą „Mainų“ metodų palaikymą. Tie komponentai yra „TEdit“, „TMemo“, „TOLEContainer“, „TDDEServerItem“, „TDBEdit“, „TDBImage“ ir „TDBMemo“.

instagram viewer

„ClipBrd“ įrenginys automatiškai žymi „TClipboard“ objektą, vadinamą „Mainų sritimi“. Mes naudosime „CutToClipboard“, Nukopijuoti į iškarpinę, „PasteFromClipboard“, Aišku ir „HasFormat“ metodai, kaip spręsti iškarpinės operacijas ir teksto / grafikos manipuliacijas.

Siųsti ir gauti tekstą

Norint išsiųsti šiek tiek teksto į mainų sritį, naudojama objekto „Mainų sritis“ savybė „AsText“. Pavyzdžiui, jei norime atsiųsti stygos informaciją, esančią kintamajame SomeStringData į mainų sritį (nuvalydami ten esantį tekstą), mes naudosime šį kodą:

naudoja „ClipBrd“; ...
Mainų sritis. AsText: = SomeStringData_Variable; 

Norėdami gauti tekstinę informaciją iš mainų srities, kurią naudosime

naudoja „ClipBrd“; ...
SomeStringData_Variable: = Mainų sritis. AsText; 

Pastaba: jei norime tik nukopijuoti tekstą iš, tarkime, „Redaguoti“ komponentą į mainų sritį, mes neturime įtraukti „ClipBrd“ vieneto į naudojimo sąlygą. „CopyToClipboard“ metodas „TEdit“ nukopijuoja pasirinktą tekstą redagavimo valdiklyje į „Mainų sritį“ CF_TEXT formatu.

procedūra TForm1.Button2Click (Siuntėjas: TObject); prasideda// šioje eilutėje bus pasirinktas // VISAS tekstas redagavimo valdiklyje {Edit1.SelectAll;} „Edit1.CopyToClipboard“; galas; 

Mainų vaizdai

Norėdami gauti grafinius vaizdus iš mainų srities, „Delphi“ turi žinoti, kokio tipo vaizdas ten saugomas. Panašiai, norėdama perkelti vaizdus į mainų sritį, programa turi pasakyti mainų sritį, kokio tipo grafiką ji siunčia. Toliau pateikiamos kai kurios galimos parametro „Format“ vertės; „Windows“ teikia daug daugiau iškarpinių formatų.

  • CF_TEXT - Tekstas, kurio kiekviena eilutė baigiasi a CR-LF derinys.
  • CF_BITMAP - „Windows bitmap“ grafika.
  • CF_METAFILEPICT - „Windows“ metafailo grafika.
  • CF_PICTURE - TPicture tipo objektas.
  • CF_OBJECT - Bet koks atkaklus objektas.

„HasFormat“ metodas grąžina „True“, jei vaizdas mainų srityje yra tinkamo formato:

jei Mainų sritis. „HasFormat“ (CF_METAFILEPICT) tada ShowMessage ('Mainų sritis turi metafailą'); 

Norėdami išsiųsti (priskirti) vaizdą į mainų sritį, naudokite „Assign“ metodą. Pvz., Šis kodas nukopijuoja bitmap iš bitmap objekto, pavadinto MyBitmap, į mainų sritį:

 Mainų sritis. Priskirti (MyBitmap); 

Apskritai, „MyBitmap“ yra „TGraphics“, „TBitmap“, „TMetafile“ arba „TPicture“ tipo objektai.

Norėdami gauti vaizdą iš mainų srities, turime: patikrinti dabartinio mainų srities turinio formatą ir naudoti tikslinio objekto priskyrimo metodą:

{padėkite vieną mygtuką ir vieną vaizdo valdiklį formoje1} {Prieš vykdydami šį kodą paspauskite klavišų kombinaciją „Alt-PrintScreen“}naudoja clipbrd;... procedūra TForm1.Button1Click (Siuntėjas: TObject); prasidedajei Mainų sritis. „HasFormat“ (CF_BITMAP) tada Paveikslėlis1. „Bitmap“. Priskirti (mainų sritį); galas; 

Daugiau Mainų valdiklio

„Mainų sritis“ informacija kaupiama keliais formatais, kad galėtume perduoti duomenis iš vienos programos į kitą skirtingais formatais. Skaitydami informaciją iš mainų srities su „Delphi“ „TClipboard“ klase, mes apsiribojame standartiniais iškarpinės formatais: tekstu, paveikslėliais ir metafailais.

Tarkime, kad dirbate tarp dviejų skirtingų „Delphi“ programų; kaip apibrėžtumėte pasirinktinį iškarpinės formatą, kad galėtumėte siųsti ir gauti duomenis iš tų dviejų programų? Tyrimo tikslais tarkime, kad bandote užkoduoti „Paste“ meniu punktas. Norite, kad jis būtų išjungtas, kai mainų srityje nėra teksto (kaip pavyzdys).

Kadangi visas procesas, naudojantis iškarpinę, vyksta užkulisiuose, nėra jokio „TClipboard“ klasės metodo, kuris jus informuotų, kai pasikeitė iškarpinės turinys. Idėja yra užsikabinti į mainų srities mainų sistemą, kad galėtumėte pasiekti įvykius ir reaguoti į juos, pasikeitus mainų sričiai.

Jei norite mėgautis daugiau lankstumo ir funkcionalumo, būtina tvarkyti pranešimus apie mainų srities pakeitimus ir pasirinktinius mainų mainų formatus - klausytis mainų srities.

instagram story viewer