Sign in Join
Wiki copytemporary

Clipboard/de: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: Clipboard/de

OldNewLine
1+\
2+Zurück zu den [[Additional information/de|Zusätzlichen Informationen]].\
3+\
4+Dieser Artikel beschäftigt sich mit der Windowsprogrammierung.\
5+\
6+=Formate der Zwischenablage=
7+
8+## Microsoft Formattypen der Zwischenablage
9+
10+Die Microsoft Formattypen sind in der Unit **Clipbrd** vordefiniert.\
11+Der Inhalt der Windows-Zwischenablage kann unter anderem folgende Formate haben:\
12+{\| class="wikitable sortable" ! Konstante !! Wert !! Beschreibung \|- \|CF_TEXT \|1 \|Unformatierter Ansi-Text (UTF-8). \|- \|CF_BITMAP \|2 \|Handle auf eine Windows Bitmap-Grafik. \|- \|CF_METAFILEPICT \|3 \|Handle auf eine Windows Metafile-Grafik. \|- \|CF_SYLK \|4 \|Handle auf einen Microsoft Symbolic-Link. \|- \|CF_DIF \|5 \|Handle auf ein Software Arts "Data Interchange Format". \|- \|CF_TIFF \|6 \|Handle auf eine Tagged-Image File Format. \|- \|CF_OEMTEXT \|7 \|Mit dem OEM-Zeichensatz formatierter Text. (Dieser Zeichensatz wird z. B. von PC-Dos und MS-Dos verwendet.) \|- \|CF_DIB \|8 \|Handle auf eine Windows Bitmap-Grafik. \|- \|CF_PALETTE \|9 \|Handle auf eine Farbpalette. \|- \|CF_PENDATA \|10 \|Wird im Zusammenhang mit den Stift-Erweiterungen von Microsoft Windows verwendet. \|- \|CF_RIFF \|11 \|Multimediadaten (Audiodateien) im Resource Interchange Datei Format (= **R**esource **I**nterchange **F**ile **F**ormat). \|- \|CF_WAVE \|12 \|Audiodaten in einem der Standard-Wave-Formate wie 11 kHz oder 22 kHz PCM. \|- \|CF_UNICODETEXT \|13 \|Text im Unicode-Text-Format (UTF-16). \|- \|CF_ENHMETAFILE \|14 \|Ein Handle auf eine erweiterte Metadatei (HENHMETAFILE). \|- \|CF_HDROP \|15 \|Ein Handle auf eine Dateiliste, im Zusammenhang mit Drag-And-Drop. \|- \|CF_LOCALE \|16 \|Enthält einen numerischen Wert in dem das Gebietsschema (Sprachcode und Ländercode) hinterlegt sind. Diese Information dient dazu, die Zeichensatzcodierung im Zwischenablageformat CF_TEXT zu ermitteln. Das Betriebssystem verwendet die Codepage CF_LOCALE, um Daten aus dem Zwischenablageformat CF_TEXT implizit in das Zwischenablageformat CF_UNICODETEXT konvertieren. \|- \|CF_OWNERDISPLAY \|128 \|Owner Display Format. \|- \|CF_DSPTEXT \|129 \|Text, dessen Anzeigeformat mit einem eigenen Format verbunden ist (CF_PRIVATEFIRST, CF_PRIVATELAST). \|- \|CF_DSPBITMAP \|130 \|Bitmap, deren Anzeigeformat mit einem eigenen Format verbunden ist (CF_PRIVATEFIRST, CF_PRIVATELAST). \|- \|CF_DSPMETAFILEPICT \|131 \|Zwischendatei, deren Anzeigeformat mit einem eigenen Format verbunden ist (CF_PRIVATEFIRST, CF_PRIVATELAST). \|- \|CF_DSPENHMETAFILE \|142 \|Erweiterte Zwischendatei, deren Anzeigeformat mit einem eigenen Format verbunden ist (CF_PRIVATEFIRST, CF_PRIVATELAST). \|- \|CF_PRIVATEFIRST \|512 \|Dient in der Zwischenablage dem Setzen von privaten Datenformaten. \|- \|CF_PRIVATELAST \|767 \|Dient in der Zwischenablage dem Setzen von privaten Datenformaten. \|- \|CF_GDIOBJFIRST \|768 \|Dient in der Zwischenablage dem Setzen von privaten Datenformaten. \|- \|CF_GDIOBJLAST \|1023 \|Dient in der Zwischenablage dem Setzen von privaten Datenformaten. \|- \|CF_PICTURE \|49674 \|Handle auf ein Objekt vom Datentyp TPicture. \|- \|CF_OBJECT \|49685 \|Handle auf ein beliebiges Objekt. \|}\
13+==Vordefinierte Lazarusformattypen für die Zwischenablage== Folgende Formattypen sind für das Arbeiten mit der Zwischenablage in der Unit **LCLType** vordefiniert:
14+
15+| TPredefinedClipboardFormat | MIME type |
16+|----------------------------|----------------------------|
17+| pcfText | text/plain |
18+| pcfBitmap | image/bmp |
19+| pcfPixmap | image/xpm |
20+| pcfIcon | image/lcl.icon |
21+| pcfPicture | image/lcl.picture |
22+| pcfMetaFilePict | image/lcl.metafilepict |
23+| pcfObject | application/lcl.object |
24+| pcfComponent | application/lcl.component |
25+| pcfCustomData | application/lcl.customdata |
26+| | |
27+
28+\
29+
30+# Arbeiten mit den Windowsformattypen
31+
32+## Einbinden der Unit Clipbrd
33+
34+Für den Zugriff auf die Zwischenablage wird die Unit **Clipbrd** benötigt.\
35+
36+``` pascal
37+ ...
38+uses
39+ Clipbrd, ...;
40+ ...
41+```
42+
43+\
44+==Das Format der Zwischenablage abfragen== Im Beispiel wird abgefragt, ob der Inhalt der Zwischenablage Textformat hat.
45+
46+``` pascal
47+ ...
48+ If Clipboard.HasFormat(CF_TEXT) then ...
49+ ...
50+```
51+
52+\
53+==Leeren der Zwischenablage==
54+
55+``` pascal
56+ ...
57+ Clipboard.Clear; // Leert die Zwischenablage
58+ ...
59+```
60+
61+\
62+
63+## Arbeiten mit Texten ohne Textformatierung
64+
65+Holt den Inhalt der Zwischenablage als unformatierten Text:\
66+
67+``` pascal
68+ ...
69+Procedure subProzedur1;
70+var
71+ strPuffer: string;
72+
73+begin
74+ ...
75+ strPuffer := Clipboard.AsText;
76+ ...
77+end;
78+ ...
79+```
80+
81+\
82+Kopiert den Inhalt eines Strings in die Zwischenablage:\
83+
84+``` pascal
85+ ...
86+procedure subProzedur2;
87+var
88+ strPuffer: string;
89+
90+begin
91+ ...
92+ strPuffer := 'Hallo Welt';
93+ Clipboard.AsText := strPuffer;
94+ ...
95+end;
96+ ...
97+```
98+
99+\
100+==Ein Bild aus TImage in die Zwischenablage kopieren==
101+
102+``` pascal
103+ ...
104+uses
105+ Clipbrd, ...;
106+ ...
107+procedure subProzedur3;
108+begin
109+ ...
110+ Clipboard.Assign(Form1.Image1.Picture.Bitmap);
111+ ...
112+end;
113+ ...
114+```
115+
116+oder
117+
118+``` pascal
119+ ...
120+uses
121+ Clipbrd, ...;
122+ ...
123+procedure subProzedur4;
124+begin
125+ ...
126+ Form1.Image1.Picture.Bitmap.SaveToClipboardFormat(CF_BITMAP);
127+ ...
128+end;
129+ ...
130+```
131+
132+\
133+
134+## Einen Screenshot erstellen und in die Zwischenablage kopieren
135+
136+``` pascal
137+ ...
138+uses
139+ Clipbrd, Graphics, Windows, SysUtils, ...;
140+ ...
141+
142+procedure subProzedur5;
143+var
144+ picBild: TPicture;
145+ hdcBildschirm: HDC;
146+
147+begin
148+
149+ try
150+ // erstellt das Objekt picBild
151+ picBild := TPicture.Create;
152+
153+ // erstellt den Screenshot und übergibt die Adresse des Screenshots
154+ hdcBildschirm := GetDC(0);
155+ // kopiert den Inhalt ab Adresse hdcBildschirm nach picBild
156+ picBild.Bitmap.LoadFromDevice(hdcBildschirm);
157+ // Freigabe von DC
158+ ReleaseDC(0, hdcBildschirm);
159+ // kopiert den Screenshot in die Zwischenablage
160+ // dieser kann dann als Picture oder als Bitmap
161+ // aus der Zwischenablage geholt werden
162+ Clipboard.Assign(picBild);
163+ finally
164+ // gibt die lokale Variable picBild wieder frei
165+ FreeandNil(picBild);
166+ end;
167+
168+end;
169+ ...
170+```
171+
172+\
173+==Ein Bild aus der Zwischenablage in ein TImage kopieren==
174+
175+``` pascal
176+ ...
177+uses
178+ Clipbrd, ...;
179+ ...
180+procedure subProzedur6;
181+begin
182+ ...
183+ // Prüft, ob sich ein Bildformat in der Zwischenablage befindet
184+ if (Clipboard.HasFormat(CF_BITMAP)) or (Clipboard.HasFormat(CF_PICTURE)) then
185+ // Ist ein Bild im vorgegebenen Format vorhanden, dann wird es geladen
186+ Form1.Image1.Picture.Assign(Clipboard);
187+ ...
188+end;
189+ ...
190+```
191+
192+\
193+\
194+--Olaf 05:03, 8 July 2013 (UTC)
195+
196+---
197+*From the Free Pascal wiki, page "Clipboard/de", as it stood on 2019-06-18 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history