Dzięki artykułowi nauczysz się zapisywać i odczytywać dane ze schowka. Poznasz formaty zapisu informacji oraz inne funkcje z nim związane.
1. Deklarowanie schowka
Na początku w uses zadeklarujmy Clipbrd. Do obsługi schowka wykorzystamy obiekt klasy TClipboard. Poniżej przedstawiam przykład zadeklarowania i utworzenia obiektu schowka :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Clipbrd, StdCtrls; .... var Form1: TForm1; Schowek : TClipboard; .... procedure TForm1.FormCreate(Sender: TObject); begin Schowek := TClipboard.Create; end; |
2. Zapis i odczyt tekstu
Zapis tekstu :
1 |
Schowek.AsText := 'www.delphi.bajo.pl'; |
Teraz pobierzemy tekst :
1 |
Label1.Caption := Schowek.AsText; |
3. Zapis i odczyt obiektów
Jako przykład wykorzystamy rysunek. Do zapisu w schowku użyjemy poleceania Assign np.
1 |
Schowek.Assign(Image1.Picture); |
W ten sposób dodaliśmy rysunek do schowka, a teraz zrobimy coś odwrotnego – załadujemy obraz ze schowka do obiektu Timage :
1 2 3 |
if Clipboard.HasFormat(CF_Bitmap) then Image1.Picture.Assign(Schowek); |
4. Formaty zapisu w schowku
Tekst – CF_TEXT
Paleta kolorów – CF_PALETTE
Obraz BMP – CF_BITMAP
Obraz EMF lub WMF – CF_METAFILEPICT
Komponent – CF_COMPONENT
5. Czyszczenie zawartości schowka
1 |
Schowek.Clear; |
6. Inne polecenia
a) Pobieranie uchwytu kopiowanego obiektu
GetAsHandle(Format: Word);
b) Sprawdzanie czy w schowku znajduje się obiekt danego typu
If Schowek.HasFormat(Format: Word) = True then …
c) Kopiowanie do bufora tekstu oraz zwracanie jego długości:
1 2 3 4 5 6 |
GetTextBuf(Buffer: PChar; BufSize: Integer): Integer; Odczyt tekstu z bufora : SetTextBuf(Buffer: PChar) |
Oto przykład :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
var Bufor: PChar; RozmiarB: Byte; Tekst: String; begin Tekst := 'Coś tam takiego'; Schowek.AsText := tekst; RozmiarB := Length(tekst); GetMem(Bufor, RozmiarB); // tworzymy bufor Schowek.GetTextBuf(Bufor, RozmiarB); FreeMem(Bufor, RozmiarB); // wyścimy bufor end; |
d) Kopiowanie i odczyt ze schowka komponentów :
1 2 3 4 |
Schowek.SetComponent(TComponent); - zapis Schowek.GetComponent(Owner, Parent); - odczyt |