Windows starpliktuve apzīmē konteksta tekstu vai grafiku, kas ir izgriezts, kopēts vai ielīmēts no programmas vai uz to. Šis raksts parādīs, kā izmantot TClipboard objektu, lai Delphi lietojumprogrammā ieviestu izgriešanas-nokopēšanas-ielīmēšanas funkcijas.
Starpliktuve vispār
Kā jūs droši vien zināt, starpliktuvē var glabāt tikai vienu tāda paša veida datu gabalu, lai vienlaikus izgrieztu, kopētu un ielīmētu. Ja mēs uz starpliktuvi nosūtām jaunu informāciju tādā pašā formātā, mēs izdzēsīsim to, kas bija iepriekš, bet Starpliktuves saturs paliek starpliktuvē pat pēc tam, kad mēs ielīmējam šo saturu citā programmā.
TClipboard
Lai savās lietojumprogrammās izmantotu Windows starpliktuvi, mums jāpievieno ClipBrd vienība projekta lietojuma klauzulai, izņemot gadījumus, kad mēs ierobežojam izgriešanu, kopēšanu un ielīmēšanu komponentiem, kuriem jau ir iebūvēts starpliktuves metožu atbalsts. Šīs sastāvdaļas ir TEdit, TMemo, TOLEContainer, TDDEServerItem, TDBEdit, TDBImage un TDBMemo.
ClipBrd vienība automātiski apzīmē TClipboard objektu, ko sauc par starpliktuvi. Mēs izmantosim
CutToClipboard, Kopēt starpliktuvē, PasteFromClipboard, Skaidrs un HasFormat metodes, kā rīkoties ar starpliktuves operācijām un teksta / grafiskām manipulācijām.Sūtīt un izgūt tekstu
Lai nosūtītu tekstu uz starpliktuvi, tiek izmantots objekta Starpliktuves īpašums AsText. Ja mēs vēlamies, piemēram, nosūtīt virkne informāciju, kas atrodas mainīgajā SomeStringData uz starpliktuvi (noslaukot visu tur esošo tekstu), mēs izmantosim šo kodu:
izmanto ClipBrd; ...
Starpliktuve. AsText: = SomeStringData_Variable;
Lai izgūtu teksta informāciju no starpliktuves, kuru mēs izmantosim
izmanto ClipBrd; ...
SomeStringData_Variable: = Starpliktuve. AsText;
Piezīme: ja mēs vēlamies nokopēt tekstu tikai no, teiksim, komponenta Rediģēt starpliktuvē, mums ClipBrd vienība nav jāiekļauj lietošanas klauzulā. TEdit metode CopyToClipboard kopē izvēlēto tekstu rediģēšanas kontrolierīcē starpliktuvē CF_TEXT formātā.
procedūra TForm1.Button2Click (Sūtītājs: TObject); sākt// šī rinda atlasīs // VISU tekstu rediģēšanas vadības ierīcē {Edit1.SelectAll;} Edit1.CopyToClipboard; beigas;
Starpliktuves attēli
Lai izgrieztu grafiskos attēlus no starpliktuves, Delphi jāzina, kāda veida attēls tajā tiek saglabāts. Līdzīgi, lai attēlus pārsūtītu uz starpliktuvi, lietojumprogrammai jāpaziņo starpliktuvei, kāda veida grafiku tā sūta. Seko dažas no iespējamām parametra Format vērtībām; ir daudz vairāk starpliktuves formātu, ko nodrošina Windows.
- CF_TEXT - teksts ar katru rindu beidzas ar CR-LF kombinācija.
- CF_BITMAP - Windows bitkartes grafika.
- CF_METAFILEPICT - Windows metafaila grafika.
- CF_PICTURE - TPicture tipa objekts.
- CF_OBJECT - jebkurš noturīgs priekšmets.
HasFormat metode atgriež True, ja starpliktuvē esošajam attēlam ir pareizais formāts:
ja Starpliktuve. HasFormat (CF_METAFILEPICT) tad ShowMessage ('Starpliktuvē ir metafails');
Izmantojiet metodi Piešķirt, lai nosūtītu (piešķirtu) attēlu uz starpliktuvi. Piemēram, šis kods kopē bitmap no bitkartes objekta ar nosaukumu MyBitmap uz starpliktuvi:
Starpliktuve. Piešķirt (MyBitmap);
Kopumā MyBitmap ir TGraphics, TBitmap, TMetafile vai TPicture tipa objekti.
Lai iegūtu attēlu no starpliktuves, mums: jāpārliecinās par starpliktuves pašreizējā satura formātu un jāizmanto mērķa objekta piešķiršanas metode:
{Novietojiet vienu pogu un vienu attēla vadību veidlapā1} {Pirms šī koda izpildes nospiediet taustiņu Alt-PrintScreen taustiņu kombināciju}izmanto clipbrd;... procedūra TForm1.Button1Click (Sūtītājs: TObject); sāktja Starpliktuve. HasFormat (CF_BITMAP) tad Attēls1.Attēls. Bitmap. Piešķirt (starpliktuvē); beigas;
Vairāk starpliktuvju vadība
Starpliktuvē informācija tiek glabāta vairākos formātos, lai mēs varētu pārsūtīt datus starp lietojumprogrammām, izmantojot dažādus formātus. Lasot informāciju no starpliktuves ar Delphi TClipboard klasi, mēs aprobežojamies ar standarta starpliktuves formātiem: tekstu, attēliem un metafailiem.
Pieņemsim, ka jūs strādājat starp divām dažādām Delphi lietojumprogrammām; kā jūs definētu pielāgoto starpliktuves formātu, lai nosūtītu un saņemtu datus starp šīm divām programmām? Izpētes nolūkos pieņemsim, ka jūs mēģināt kodēt ielīmēšanu izvēlnes vienums. Jūs vēlaties, lai tas tiktu atspējots, ja starpliktuvē nav teksta (kā piemēram).
Tā kā viss starpliktuves process notiek aiz ainas, nav nevienas TClipboard klases metodes, kas jūs informētu, kad ir notikušas izmaiņas starpliktuves saturā. Ideja ir piekabināt starpliktuvju paziņojumu sistēmā, lai jūs varētu piekļūt notikumiem un reaģēt uz tiem, kad mainās starpliktuve.
Lai izbaudītu lielāku elastību un funkcionalitāti, ir jānodarbojas ar starpliktuves maiņas paziņojumiem un pielāgotajiem starpliktuves formātiem - klausoties starpliktuvi.