Sign in Join
Wiki copytemporary

Clipboard/de: what changed

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

OldNewLine
1-\
21Zurück zu den [[Additional information/de|Zusätzlichen Informationen]].\
3-\
2+
43Dieser Artikel beschäftigt sich mit der Windowsprogrammierung.\
5-\
4+
65=Formate der Zwischenablage=
76
87## Microsoft Formattypen der Zwischenablage
98
109Die Microsoft Formattypen sind in der Unit **Clipbrd** vordefiniert.\
1110Der Inhalt der Windows-Zwischenablage kann unter anderem folgende Formate haben:\
1211{\| 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. \|}\
1312==Vordefinierte Lazarusformattypen für die Zwischenablage== Folgende Formattypen sind für das Arbeiten mit der Zwischenablage in der Unit **LCLType** vordefiniert:
1413
1514| TPredefinedClipboardFormat | MIME type |
1615|----------------------------|----------------------------|
1716| pcfText | text/plain |
1817| pcfBitmap | image/bmp |
1918| pcfPixmap | image/xpm |
2019| pcfIcon | image/lcl.icon |
2120| pcfPicture | image/lcl.picture |
2221| pcfMetaFilePict | image/lcl.metafilepict |
2322| pcfObject | application/lcl.object |
2423| pcfComponent | application/lcl.component |
2524| pcfCustomData | application/lcl.customdata |
2625| | |
2726
28-\
29-
3027# Arbeiten mit den Windowsformattypen
3128
3229## Einbinden der Unit Clipbrd
3330
3431Für den Zugriff auf die Zwischenablage wird die Unit **Clipbrd** benötigt.\
3532
3633``` pascal
3734 ...
3835uses
3936 Clipbrd, ...;
4037 ...
4138```
4239
43-\
4440==Das Format der Zwischenablage abfragen== Im Beispiel wird abgefragt, ob der Inhalt der Zwischenablage Textformat hat.
4541
4642``` pascal
4743 ...
4844 If Clipboard.HasFormat(CF_TEXT) then ...
4945 ...
5046```
5147
52-\
5348==Leeren der Zwischenablage==
5449
5550``` pascal
5651 ...
5752 Clipboard.Clear; // Leert die Zwischenablage
5853 ...
5954```
6055
61-\
62-
6356## Arbeiten mit Texten ohne Textformatierung
6457
6558Holt den Inhalt der Zwischenablage als unformatierten Text:\
6659
6760``` pascal
6861 ...
6962Procedure subProzedur1;
7063var
7164 strPuffer: string;
7265
7366begin
7467 ...
7568 strPuffer := Clipboard.AsText;
7669 ...
7770end;
7871 ...
7972```
8073
81-\
8274Kopiert den Inhalt eines Strings in die Zwischenablage:\
8375
8476``` pascal
8577 ...
8678procedure subProzedur2;
8779var
8880 strPuffer: string;
8981
9082begin
9183 ...
9284 strPuffer := 'Hallo Welt';
9385 Clipboard.AsText := strPuffer;
9486 ...
9587end;
9688 ...
9789```
9890
99-\
10091==Ein Bild aus TImage in die Zwischenablage kopieren==
10192
10293``` pascal
10394 ...
10495uses
10596 Clipbrd, ...;
10697 ...
10798procedure subProzedur3;
10899begin
109100 ...
110101 Clipboard.Assign(Form1.Image1.Picture.Bitmap);
111102 ...
112103end;
113104 ...
114105```
115106
116107oder
117108
118109``` pascal
119110 ...
120111uses
121112 Clipbrd, ...;
122113 ...
123114procedure subProzedur4;
124115begin
125116 ...
126117 Form1.Image1.Picture.Bitmap.SaveToClipboardFormat(CF_BITMAP);
127118 ...
128119end;
129120 ...
130121```
131122
132-\
133-
134123## Einen Screenshot erstellen und in die Zwischenablage kopieren
135124
136125``` pascal
137126 ...
138127uses
139128 Clipbrd, Graphics, Windows, SysUtils, ...;
140129 ...
141130
142131procedure subProzedur5;
143132var
144133 picBild: TPicture;
145134 hdcBildschirm: HDC;
146135
147136begin
148137
149138 try
150139 // erstellt das Objekt picBild
151140 picBild := TPicture.Create;
152141
153142 // erstellt den Screenshot und übergibt die Adresse des Screenshots
154143 hdcBildschirm := GetDC(0);
155144 // kopiert den Inhalt ab Adresse hdcBildschirm nach picBild
156145 picBild.Bitmap.LoadFromDevice(hdcBildschirm);
157146 // Freigabe von DC
158147 ReleaseDC(0, hdcBildschirm);
159148 // kopiert den Screenshot in die Zwischenablage
160149 // dieser kann dann als Picture oder als Bitmap
161150 // aus der Zwischenablage geholt werden
162151 Clipboard.Assign(picBild);
163152 finally
164153 // gibt die lokale Variable picBild wieder frei
165154 FreeandNil(picBild);
166155 end;
167156
168157end;
169158 ...
170159```
171160
172-\
173161==Ein Bild aus der Zwischenablage in ein TImage kopieren==
174162
175163``` pascal
176164 ...
177165uses
178166 Clipbrd, ...;
179167 ...
180168procedure subProzedur6;
181169begin
182170 ...
183171 // Prüft, ob sich ein Bildformat in der Zwischenablage befindet
184172 if (Clipboard.HasFormat(CF_BITMAP)) or (Clipboard.HasFormat(CF_PICTURE)) then
185173 // Ist ein Bild im vorgegebenen Format vorhanden, dann wird es geladen
186174 Form1.Image1.Picture.Assign(Clipboard);
187175 ...
188176end;
189177 ...
190178```
191179
192-\
193-\
194180--Olaf 05:03, 8 July 2013 (UTC)
195181
196182---
197183*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