Schowek Windows reprezentuje pojemnik na dowolny tekst lub grafikę, które są wycinane, kopiowane lub wklejane z lub do aplikacji. W tym artykule dowiesz się, jak używać obiektu TClipboard do implementacji funkcji wycinania i wklejania w aplikacji Delphi.
Schowek w ogóle
Jak zapewne wiesz, Schowek może przechowywać tylko jeden kawałek tego samego rodzaju danych do wycinania, kopiowania i wklejania jednocześnie. Jeśli wysyłamy nowe informacje w tym samym formacie do Schowka, usuwamy to, co było tam wcześniej, ale zawartość Schowka pozostaje w Schowku nawet po wklejeniu tej zawartości do innego programu.
TClipboard
Aby korzystać ze schowka Windows w naszych aplikacjach, musimy dodać Jednostka ClipBrd do klauzuli use w projekcie, z wyjątkiem sytuacji, gdy ograniczamy wycinanie, kopiowanie i wklejanie do komponentów posiadających już wbudowaną obsługę metod schowka. Składnikami tymi są TEdit, TMemo, TOLEContainer, TDDEServerItem, TDBEdit, TDBImage i TDBMemo.
Jednostka ClipBrd automatycznie reprezentuje obiekt TClipboard o nazwie Clipboard. Użyjemy
CutToClipboard, Skopiuj do schowka, PasteFromClipboard, Jasny i HasFormat metody radzenia sobie z operacjami schowka i manipulowaniem tekstem / grafiką.Wyślij i pobierz tekst
Aby wysłać tekst do schowka, używana jest właściwość AsText obiektu Clipboard. Jeśli chcemy na przykład wysłać strunowy informacje zawarte w zmiennej SomeStringData do Schowka (usuwając tekst, który tam był), użyjemy następującego kodu:
wykorzystuje ClipBrd; ...
Schowek AsText: = SomeStringData_Variable;
Aby pobrać informacje tekstowe ze Schowka, którego użyjemy
wykorzystuje ClipBrd; ...
SomeStringData_Variable: = Schowek. AsText;
Uwaga: jeśli chcemy tylko skopiować tekst, powiedzmy, Edytuj komponent do Schowka, nie musimy dołączać jednostki ClipBrd do klauzuli use. Metoda CopyToClipboard TEdit kopiuje zaznaczony tekst w kontrolce edycji do Schowka w formacie CF_TEXT.
procedura TForm1.Button2Click (Sender: TObject); zaczynać// następujący wiersz wybierze // WSZYSTKO tekst w kontrolce edycji {Edit1.SelectAll;} Edit1.CopyToClipboard; koniec;
Obrazy ze schowka
Aby pobrać obrazy graficzne ze schowka, Delphi musi wiedzieć, jaki typ obrazu jest tam przechowywany. Podobnie, aby przesłać obrazy do schowka, aplikacja musi powiedzieć Schowkowi, jaki rodzaj grafiki wysyła. Poniżej podano niektóre z możliwych wartości parametru Format; istnieje wiele innych formatów Schowka dostarczanych przez system Windows.
- CF_TEXT - Tekst z każdą linią kończącą się na CR-LF połączenie.
- CF_BITMAP - Grafika bitmapowa systemu Windows.
- CF_METAFILEPICT - Grafika metapliku Windows.
- CF_PICTURE - Obiekt typu TPicture.
- CF_OBJECT - Dowolny trwały obiekt.
Metoda HasFormat zwraca wartość True, jeśli obraz w Schowku ma właściwy format:
gdyby Schowek HasFormat (CF_METAFILEPICT) następnie ShowMessage („Schowek ma metaplik”);
Użyj metody Przypisz, aby wysłać (przypisać) obraz do Schowka. Na przykład poniższy kod kopiuje mapę bitową z obiektu bitmapowego o nazwie MyBitmap do Schowka:
Schowek Przypisz (MyBitmap);
Ogólnie MyBitmap jest obiektem typu TGraphics, TBitmap, TMetafile lub TPicture.
Aby pobrać obraz ze Schowka, musimy: zweryfikować format bieżącej zawartości schowka i użyć metody Assign obiektu docelowego:
{umieść jeden przycisk i jeden element sterujący obrazem w formularzu1} {Przed wykonaniem tego kodu naciśnij kombinację klawiszy Alt-PrintScreen}wykorzystuje clipbrd;... procedura TForm1.Button1Click (Sender: TObject); zaczynaćgdyby Schowek HasFormat (CF_BITMAP) następnie Image1.Picture. Mapa bitowa Przypisz (Schowek); koniec;
Więcej kontroli schowka
Schowek przechowuje informacje w wielu formatach, dzięki czemu możemy przesyłać dane między aplikacjami przy użyciu różnych formatów. Czytając informacje ze schowka za pomocą klasy TClipboard firmy Delphi, ograniczamy się do standardowych formatów schowka: tekst, obrazy i metapliki.
Załóżmy, że pracujesz między dwiema różnymi aplikacjami Delphi; jak zdefiniowałbyś niestandardowy format schowka, aby wysyłać i odbierać dane między tymi dwoma programami? Dla celów eksploracji załóżmy, że próbujesz zakodować Pastę pozycja w menu. Chcesz go wyłączyć, gdy w schowku nie ma tekstu (jako instancja).
Ponieważ cały proces ze schowkiem odbywa się za kulisami, nie ma metody klasy TClipboard, która poinformuje cię, gdy nastąpi jakaś zmiana zawartości schowka. Chodzi o to, aby podłączyć system powiadomień schowka, abyś mógł uzyskiwać dostęp do zdarzeń i reagować na ich zmiany.
Aby cieszyć się większą elastycznością i funkcjonalnością, konieczne jest radzenie sobie z powiadomieniami o zmianie schowka i niestandardowymi formatami schowka - słuchanie schowka.