Windowsin leikepöytä edustaa kaiken tekstin tai grafiikan säilöä, joka on leikattu, kopioitu tai liitetty sovellukseen tai sovellukseen. Tämä artikkeli osoittaa sinulle, kuinka TClipboard-objektia voidaan käyttää kopiointi-liitä -ominaisuuksien toteuttamiseen Delphi-sovelluksessa.
Leikepöytä yleensä
Kuten todennäköisesti tiedät, leikepöydälle mahtuu vain yksi osa samanlaista dataa leikata, kopioida ja liittää kerrallaan. Jos lähetämme uutta tietoa samassa muodossa leikepöydälle, pyyhkäisemme pois mitä aiemmin oli, mutta leikepöydän sisältö pysyy leikepöydällä, vaikka liittäisimme sisällön toiseen ohjelmaan.
TClipboard
Jotta voimme käyttää Windowsin leikepöytää sovelluksissamme, meidän on lisättävä ClipBrd-yksikkö projektin käyttölausekkeeseen, paitsi jos rajoitamme leikkaamista, kopiointia ja liittämistä komponentteihin, joilla on jo sisäänrakennettu tuki leikepöytämenetelmille. Nämä komponentit ovat TEdit, TMemo, TOLEContainer, TDDEServerItem, TDBEdit, TDBImage ja TDBMemo.
ClipBrd-yksikkö edustaa automaattisesti TClipboard-nimeltään nimeltään Leikepöytä. Käytämme
CutToClipboard, Kopioi leikepöydälle, PasteFromClipboard, Asia selvä ja HasFormat menetelmät leikepöydän toimintojen ja tekstin / graafisen käsittelyn käsittelemiseksi.Lähetä ja nouta teksti
Tekstin lähettämiseksi leikepöydälle käytetään Leikepöytä-objektin AsText-ominaisuutta. Jos haluamme esimerkiksi lähettää jono muuttujan SomeStringData sisältämät tiedot leikepöydälle (pyyhkimällä siellä oleva teksti) käytämme seuraavaa koodia:
käyttötarkoitukset ClipBrd; ...
Leikepöydälle. AsText: = SomeStringData_Variable;
Noudatamme tekstitietoja leikepöydältä
käyttötarkoitukset ClipBrd; ...
SomeStringData_Variable: = Leikepöytä. AsText;
Huomaa: Jos haluamme kopioida vain tekstin kopiosta leikepöydälle, sanotaan esimerkiksi Muokkaa-komponenttia, meidän ei tarvitse sisällyttää ClipBrd-yksikköä käyttölausekkeeseen. TEdit-sovelluksen CopyToClipboard-menetelmä kopioi valitun tekstin muokkausohjauksessa leikepöydälle CF_TEXT-muodossa.
menettely TForm1.Button2Click (Lähettäjä: TObject); alkaa// seuraava rivi valitse // KAIKKI teksti muokkausohjaimessa {Edit1.SelectAll;} Edit1.CopyToClipboard; pää;
Leikepöydän kuvat
Hakeaksesi graafisia kuvia leikepöydältä, Delphin on tiedettävä, minkä tyyppinen kuva siihen on tallennettu. Vastaavasti, jotta kuvat voidaan siirtää leikepöydälle, sovelluksen on kerrottava leikepöydälle, minkä tyyppisiä grafiikoita se lähettää. Jotkut Muoto-parametrin mahdollisista arvoista seuraavat; Windows tarjoaa monia muita leikepöydän muotoja.
- CF_TEXT - Teksti jokaisen rivin päättyessä a CR-LF yhdistelmä.
- CF_BITMAP - Windows-bittikarttagrafiikka.
- CF_METAFILEPICT - Windows-metatiedoston grafiikka.
- CF_PICTURE - TPicture-tyyppinen esine.
- CF_OBJECT - Mikä tahansa pysyvä esine.
HasFormat-menetelmä palauttaa True, jos leikepöydän kuva on oikeassa muodossa:
jos Leikepöydälle. HasFormat (CF_METAFILEPICT) sitten ShowMessage ('Leikepöydällä on meta-tiedosto');
Käytä Assign-tapaa lähettää (määrittää) kuva leikepöydälle. Esimerkiksi seuraava koodi kopioi bittikartan MyBitmap-nimeltä bittikarttaobjektista leikepöydälle:
Leikepöydälle. Määritä (MyBitmap);
Yleensä MyBitmap on tyypin TGraphics, TBitmap, TMetafile tai TPicture kohde.
Kuvan hakemiseksi leikepöydältä meidän on: tarkistettava leikepöydän nykyisen sisällön muoto ja käytettävä kohdeobjektin Assign-menetelmää:
{aseta yksi painike ja yksi kuvansäädin lomakkeelle1} {Paina Alt-PrintScreen-näppäinyhdistelmää ennen tämän koodin suorittamista}käyttötarkoitukset clipbrd;... menettely TForm1.Button1Click (Lähettäjä: TObject); alkaajos Leikepöydälle. HasFormat (CF_BITMAP) sitten Image1.Picture. Bittikartta. Määritä (leikepöytä); end;
Lisää leikepöydän hallinta
Leikepöytä tallentaa tietoja useissa muodoissa, jotta voimme siirtää tietoja sovellusten välillä eri muodoissa. Kun luemme tietoja leikepöydältä Delphin TClipboard-luokan kanssa, olemme rajoittuneet tavallisiin leikepöydän muotoihin: teksti, kuvat ja meta-tiedostot.
Oletetaan, että työskentelet kahden erilaisen Delphi-sovelluksen välillä; Kuinka määrittäisit mukautetun leikepöydän muodon tietojen lähettämiseksi ja vastaanottamiseksi näiden kahden ohjelman välillä? Oletetaan, että yrität koodata liitäntää tutkimusta varten valikkokohta. Haluat, että se poistetaan käytöstä, kun leikepöydällä ei ole tekstiä (esimerkiksi).
Koska koko leikepöydällä tapahtuva prosessi tapahtuu kulissien takana, ei ole mitään TClipboard-luokan menetelmää, joka ilmoittaisi sinulle, kun leikepöydän sisältö on muuttunut. Ideana on kiinnittää leikepöydän ilmoitusjärjestelmään, jotta pääset käsiksi tapahtumiin ja reagoit niihin, kun leikepöytä muuttuu.
Jotta voisit nauttia enemmän joustavuudesta ja toiminnallisuudesta, leikepöydän muutosilmoitusten ja mukautettujen leikepöytämuotojen käsitteleminen - leikepöydän kuuntelu - on välttämätöntä.