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
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.