Grunnleggende om utklippstavlen (Klipp ut / kopier / lim inn)

Windows utklippstavle representerer beholderen for all tekst eller grafikk som er klippet ut, kopiert eller limt inn fra eller til et program. Denne artikkelen vil vise deg hvordan du bruker TClipboard-objektet til å implementere funksjoner for klipp-kopi-liming i Delphi-applikasjonen.

Utklippstavlen generelt

Som du sikkert vet, kan utklippstavlen bare inneholde ett stykke av samme type data for klipping, kopiering og liming på en gang. Hvis vi sender ny informasjon i samme format til utklippstavlen, utsletter vi det som var der før, men innholdet i utklippstavlen forblir med utklippstavlen også etter at vi limer inn innholdet i et annet program.

TClipboard

For å bruke Windows Clipboard i applikasjonene våre, må vi legge til ClipBrd-enhet til bruksbestemmelsen i prosjektet, bortsett fra når vi begrenser klipping, kopiering og liming til komponentene som allerede har innebygd støtte for utklippstavle-metoder. Disse komponentene er TEdit, TMemo, TOLEContainer, TDDEServerItem, TDBEdit, TDBImage og TDBMemo.

instagram viewer

ClipBrd-enheten representerer automatisk et TClipboard-objekt som heter Clipboard. Vi bruker CutToClipboard, Kopiere til utklippstavle, PasteFromClipboard, Klar og HasFormat metoder for å håndtere utklippstavleoperasjoner og tekst / grafisk manipulasjon.

Send og hent tekst

For å sende tekst til utklippstavlen brukes AsText-egenskapen til utklippstavleobjektet. Hvis vi for eksempel vil sende string informasjon som finnes i variabelen SomeStringData til utklippstavlen (utslette hvilken tekst som var der), bruker vi følgende kode:

bruker ClipBrd; ...
Utklippstavlen. AsText: = SomeStringData_Variable; 

For å hente tekstinformasjon fra utklippstavlen bruker vi

bruker ClipBrd; ...
SomeStringData_Variable: = Utklippstavle. AsText; 

Merk: Hvis vi bare ønsker å kopiere teksten fra, la oss si: Rediger komponent til utklippstavlen, trenger vi ikke å inkludere ClipBrd-enheten til bruksklausulen. CopyToClipboard-metoden for TEdit kopierer den valgte teksten i redigeringskontrollen til utklippstavlen i CF_TEXT-formatet.

fremgangsmåte TForm1.Button2Click (avsender: TObject); begynne// den følgende linjen vil velge // ALLE teksten i redigeringskontrollen {Edit1.SelectAll;} Edit1.CopyToClipboard; slutt; 

Utklippstavlebilder

For å hente grafiske bilder fra utklippstavlen, må Delphi vite hvilken type bilde som er lagret der. På samme måte, for å overføre bilder til utklippstavlen, må applikasjonen fortelle utklippstavlen hvilken type grafikk den sender. Noen av de mulige verdiene for Format-parameteren følger; det er mange flere utklippstavleformater levert av Windows.

  • CF_TEXT - Tekst med hver linje som slutter med a CR-LF kombinasjon.
  • CF_BITMAP - En Windows-bitmap-grafikk.
  • CF_METAFILEPICT - En Windows-metafilgrafikk.
  • CF_PICTURE - Et objekt av typen TPicture.
  • CF_OBJECT - Ethvert vedvarende objekt.

HasFormat-metoden returnerer True hvis bildet på utklippstavlen har riktig format:

hvis Utklippstavlen. HasFormat (CF_METAFILEPICT) deretter ShowMessage ('Utklippstavlen har metafile'); 

Bruk Tildel-metoden for å sende (tilordne) et bilde til utklippstavlen. Følgende kode kopierer for eksempel bitmappen fra et bitmapp-objekt med navnet MyBitmap til utklippstavlen:

 Utklippstavlen. Tildel (MyBitmap); 

Generelt sett er MyBitmap et objekt av TGraphics, TBitmap, TMetafile eller TPicture.

For å hente et bilde fra utklippstavlen må vi: verifisere formatet til det gjeldende innholdet på utklippstavlen og bruke tilordningsmetoden til målobjektet:

{plasser en knapp og en bildekontroll på skjema1} {Før du utfører denne koden, trykk på Alt-PrintScreen tastekombinasjon}bruker clipbrd;... fremgangsmåte TForm1.Button1Click (avsender: TObject); begynnehvis Utklippstavlen. HasFormat (CF_BITMAP) deretter Image1.Picture. Bitmap. Tildele (utklippstavle); slutt; 

Mer utklippstavlekontroll

Utklippstavle lagrer informasjon i flere formater slik at vi kan overføre data mellom applikasjoner ved bruk av forskjellige formater. Når du leser informasjon fra utklippstavlen med Delphis TClipboard-klasse, er vi begrenset til standard utklippstavleformater: tekst, bilder og metafiler.

Anta at du jobber mellom to forskjellige Delphi-applikasjoner; hvordan vil du definere tilpasset utklippstavleformat for å sende og motta data mellom disse to programmene? La oss si at du prøver å kode inn lim inn menypost. Du vil at den skal være deaktivert når det ikke er tekst på utklippstavlen (som for eksempel).

Siden hele prosessen med utklippstavlen foregår bak kulissene, er det ingen metode i TClipboard-klassen som vil informere deg når noen endringer i innholdet på utklippstavlen har funnet sted. Tanken er å koble til varslingssystemet til utklippstavlen, slik at du kan få tilgang til og svare på hendelser når utklippstavlen endres.

For å glede deg over mer fleksibilitet og funksjonalitet, er det nødvendig å håndtere utklippstavler om endringer og tilpassede utklippstavleformater - å lytte til utklippstavlen -.