Windows-udklipsholderen repræsenterer beholderen til enhver tekst eller grafik, der klippes, kopieres eller indsættes fra eller til et program. Denne artikel viser dig, hvordan du bruger TClipboard-objektet til at implementere klip-kopi-indsæt-funktioner i din Delphi-applikation.
Udklipsholder generelt
Som du sandsynligvis ved, kan udklipsholderen kun indeholde et stykke af den samme type data til udskæring, kopiering og indsætning ad gangen. Hvis vi sender nye oplysninger i samme format til udklipsholderen, udsletter vi, hvad der var der før, men indholdet af udklipsholderen forbliver på udklipsholderen, selv efter at vi indsætter indholdet i et andet program.
TClipboard
For at bruge Windows Clipboard i vores applikationer, skal vi tilføje ClipBrd enhed til brugsklausulen i projektet, undtagen når vi begrænser udskæring, kopiering og indsætning af komponenter, der allerede har indbygget understøttelse af Clipboard-metoder. Disse komponenter er TEdit, TMemo, TOLEContainer, TDDEServerItem, TDBEdit, TDBImage og TDBMemo.
ClipBrd-enheden repræsenterer automatisk et TClipboard-objekt kaldet Clipboard. Vi bruger CutToClipboard, Kopier til udklipsholder, PasteFromClipboard, Klar og HasFormat metoder til at håndtere udklipsholderhandlinger og tekst / grafisk manipulation.
Send og hent tekst
For at sende noget tekst til udklipsholderen bruges AsText-egenskaben til udklipsholderobjektet. Hvis vi f.eks. Ønsker at sende snor information indeholdt i variablen SomeStringData til udklipsholderen (udslette uanset tekst der var), bruger vi følgende kode:
anvendelser ClipBrd; ...
Udklipsholder. AsText: = SomeStringData_Variable;
For at hente tekstoplysningerne fra udklipsholderen bruger vi
anvendelser ClipBrd; ...
SomeStringData_Variable: = Klippebord. AsText;
Bemærk: Hvis vi kun ønsker at kopiere teksten fra, lad os sige, Rediger komponent til udklipsholderen, behøver vi ikke at inkludere ClipBrd-enheden til brugsklausulen. CopyToClipboard-metoden til TEdit kopierer den valgte tekst i redigeringskontrollen til udklipsholderen i CF_TEXT-formatet.
procedure TForm1.Button2Click (Afsender: TObject); begynde// den følgende linje vælger // ALLE teksten i redigeringskontrollen {Edit1.SelectAll;} Edit1.CopyToClipboard; ende;
Clipboard-billeder
For at hente grafiske billeder fra udklipsholderen, skal Delphi vide, hvilken type billede der er gemt der. Tilsvarende, for at overføre billeder til udklipsholderen, skal applikationen fortælle udklipsholderen, hvilken type grafik det sender. Nogle af de mulige værdier i parameteren Format følger; der er mange flere Clipboard-formater leveret af Windows.
- CF_TEXT - Tekst med hver linje, der slutter med a CR-LF kombination.
- CF_BITMAP - En Windows bitmap-grafik.
- CF_METAFILEPICT - En Windows-metafilgrafik.
- CF_PICTURE - Et objekt af typen TPicture.
- CF_OBJECT - Ethvert vedvarende objekt.
HasFormat-metoden returnerer sandt, hvis billedet på udklipsholderen har det rigtige format:
hvis Udklipsholder. HasFormat (CF_METAFILEPICT) derefter ShowMessage ('Udklipsholder har metafile');
Brug tildelingsmetoden til at sende (tildele) et billede til udklipsholderen. For eksempel kopierer følgende kode bitmap fra et bitmap-objekt ved navn MyBitmap til udklipsholderen:
Udklipsholder. Tildel (MyBitmap);
Generelt er MyBitmap et objekt af type TGraphics, TBitmap, TMetafile eller TPicture.
For at hente et billede fra udklipsholderen skal vi: verificere formatet for det aktuelle indhold på udklipsholderen og bruge Tildel-metoden for målobjektet:
{placér en knap og en billedkontrol på form1} {Før du udfører denne kode skal du trykke på Alt-PrintScreen tastkombination}anvendelser clipbrd;... procedure TForm1.Button1Click (Afsender: TObject); begyndehvis Udklipsholder. HasFormat (CF_BITMAP) derefter Image1.Picture. Bitmap. Tildel (udklipsholder); ende;
Mere Klembordstyring
Udklipsholder gemmer information i flere formater, så vi kan overføre data mellem applikationer ved hjælp af forskellige formater. Når vi læser information fra udklipsholderen med Delphis TClipboard-klasse, er vi begrænset til standard udklipsholderformater: tekst, billeder og metafiler.
Antag, at du arbejder mellem to forskellige Delphi-applikationer; hvordan vil du definere brugerdefineret klippebordformat for at sende og modtage data mellem disse to programmer? Lad os sige, at du prøver at kode en indsæt med henblik på efterforskning menupunkt. Du ønsker, at det skal være deaktiveret, når der ikke er nogen tekst på udklipsholderen (som et eksempel).
Da hele processen med udklipsholderen finder sted bag kulisserne, er der ingen metode til TClipboard-klasse, der vil informere dig, når en vis ændring i indholdet af udklipsholderen har fundet sted. Ideen er at tilslutte meddelelsessystemet til udklipsholderen, så du kan få adgang til og svare på begivenheder, når udklipsholderen ændres.
For at nyde mere fleksibilitet og funktionalitet er det nødvendigt at håndtere udklipsholderændringsmeddelelser og tilpassede udklipsholderformater - at lytte til udklipsholderen.