Osnove međuspremnika (rezanje / kopiranje / lijepljenje)

Međuspremnik Windows predstavlja spremnik za bilo koji tekst ili grafiku koji su izrezani, kopirani ili zalijepljeni iz ili u neku aplikaciju. Ovaj će vam članak pokazati kako pomoću TClipboard objekta implementirati značajke kopiranja i zalijepiti u svojoj aplikaciji Delphi.

Međuspremnik općenito

Kao što vjerojatno znate, međuspremnik može istovremeno sadržavati samo jedan podatak iste vrste podataka za rezanje, kopiranje i lijepljenje. Ako u međuspremnik pošaljemo nove podatke u istom formatu, izbrisaćemo ono što je bilo prije, ali sadržaj međuspremnika ostaje u međuspremniku čak i nakon što ih zalijepimo u drugi program.

TClipboard

Za upotrebu Windows međuspremnika u našim aplikacijama moramo dodati ClipBrd jedinica na uporabnu klauzulu projekta, osim kada ograničavamo rezanje, kopiranje i lijepljenje na komponente koje već imaju ugrađenu podršku za Clipboard metode. Te komponente su TEdit, TMemo, TOLEContainer, TDDEServerItem, TDBEdit, TDBImage i TDBMemo.

ClipBrd jedinica automatski predstavlja objekt TClipboard koji se zove Clipboard. Koristit ćemo se

instagram viewer
CutToClipboard, Kopirati u međuspremnik, PasteFromClipboard, Čisto i HasFormat metode rješavanja operacija međuspremnika i tekstualne / grafičke manipulacije.

Pošaljite i preuzmite tekst

Za slanje nekog teksta u međuspremnik koristi se svojstvo AsText objekta Clipboard. Ako želimo, na primjer, poslati e-poštu niz Za podatke sadržane u varijabli SomeStringData u međuspremnik (brišući koji god tekst bio tamo) koristit ćemo sljedeći kôd:

namjene ClipBrd; ...
Međuspremnik. AsText: = SomeStringData_Variable; 

Da bismo preuzeli tekstualne informacije iz međuspremnika, koristit ćemo

namjene ClipBrd; ...
SomeStringData_Variable: = Međuspremnik. AsText; 

Napomena: ako želimo kopirati samo tekst iz, recimo, Uredi komponentu u međuspremnik, ne moramo uključiti ClipBrd jedinicu u klauzulu upotrebe. Metoda CopyToClipboard TEdit kopira odabrani tekst iz kontrole uređivanja u međuspremnik u CF_TEXT format.

postupak TForm1.Button2Click (Pošiljatelj: TObject); početi// sljedeći će red odabrati // SVE tekst u kontroli uređivanja {Edit1.SelectAll;} Edit1.CopyToClipboard; kraj; 

Slike međuspremnika

Da bi preuzeo grafičke slike iz Međuspremnika, Delphi mora znati koja je vrsta slike tamo pohranjena. Slično tome, za prijenos slika u međuspremnik, aplikacija mora reći međuspremnik koju vrstu grafike šalje. Slijede neke od mogućih vrijednosti parametra Format; postoji mnogo više formata međuspremnika koje nudi Windows.

  • CF_TEXT - Tekst sa svakim retkom koji završava s CR-LF kombinacija.
  • CF_BITMAP - Grafička mapa sustava Windows.
  • CF_METAFILEPICT - Windows metafizička grafika.
  • CF_PICTURE - Objekt tipa TPicture.
  • CF_OBJECT - Bilo koji postojani objekt.

HasFormat metoda vraća True ako slika u međuspremniku ima pravi format:

ako Međuspremnik. HasFormat (CF_METAFILEPICT) zatim ShowMessage ('međuspremnik ima metafile'); 

Koristite metodu Dodijeli za slanje (dodjeljivanje) slike u međuspremnik. Na primjer, sljedeći kod kopira bitmapu iz bitmap objekta nazvanog MyBitmap u međuspremnik:

 Međuspremnik. Dodijeli (MyBitmap); 

Općenito, MyBitmap je objekt tipa TGraphics, TBitmap, TMetafile ili TPicture.

Za preuzimanje slike iz međuspremnika moramo: provjeriti format trenutnog sadržaja međuspremnika i koristiti metodu Dodijeli ciljnom objektu:

{stavite jedno dugme i jednu kontrolu slike na obrazac1} {Prije izvršavanja ovog koda pritisnite Alt-PrintScreen kombinacija tipki}namjene clipbrd;... postupak TForm1.Button1Click (Pošiljatelj: TObject); početiako Međuspremnik. HasFormat (CF_BITMAP) zatim Image1.Picture. Bitmapa. Dodijeliti (međuspremnik); kraj; 

Više kontrole međuspremnika

Međuspremnik pohranjuje informacije u više formata kako bismo mogli prenositi podatke između aplikacija koristeći različite formate. Kad čitamo podatke iz međuspremnika s Delphi-jevom vrstom TClipboard, ograničeni smo na standardne formate međuspremnika: tekst, slike i metafilije.

Pretpostavimo da radite između dvije različite Delphi aplikacije; kako biste definirali prilagođeni format međuspremnika za slanje i primanje podataka između ta dva programa? Recimo u svrhu istraživanja, recimo da pokušavate kodirati paste stavka izbornika. Želite da bude onemogućeno kad u međuspremniku nema teksta (kao instancije).

Budući da se cijeli postupak s međuspremnikom odvija iza kulisa, ne postoji metoda klase TClipboard koja će vas obavijestiti kada se dogodi neka promjena u sadržaju međuspremnika. Ideja je spojiti se u sustavu obavijesti u međuspremnik, kako biste mogli pristupiti i reagirati na događaje kad se promijeni međuspremnik.

Za više fleksibilnosti i funkcionalnosti potrebno je baviti se obavijestima o promjenama međuspremnika i prilagođenim formatima međuspremnika - preslušavanje međuspremnika.