Difference between revisions of "Clipboard/de"
m (Fixed syntax highlighting) |
|||
(17 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
{{Clipboard}} | {{Clipboard}} | ||
<br> | <br> | ||
+ | Zurück zu den [[Additional information/de|Zusätzlichen Informationen]].<br> | ||
<br> | <br> | ||
Dieser Artikel beschäftigt sich mit der Windowsprogrammierung.<br> | Dieser Artikel beschäftigt sich mit der Windowsprogrammierung.<br> | ||
__TOC__ | __TOC__ | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
<br> | <br> | ||
=Formate der Zwischenablage= | =Formate der Zwischenablage= | ||
==Microsoft Formattypen der Zwischenablage== | ==Microsoft Formattypen der Zwischenablage== | ||
+ | Die Microsoft Formattypen sind in der Unit '''Clipbrd''' vordefiniert.<br> | ||
Der Inhalt der Windows-Zwischenablage kann unter anderem folgende Formate haben:<br> | Der Inhalt der Windows-Zwischenablage kann unter anderem folgende Formate haben:<br> | ||
{| class="wikitable sortable" | {| class="wikitable sortable" | ||
Line 50: | Line 39: | ||
|CF_OEMTEXT | |CF_OEMTEXT | ||
|7 | |7 | ||
− | |Mit dem OEM-Zeichensatz formatierter Text. (Dieser Zeichensatz wird von PC-Dos und MS-Dos verwendet.) | + | |Mit dem OEM-Zeichensatz formatierter Text. (Dieser Zeichensatz wird z. B. von PC-Dos und MS-Dos verwendet.) |
|- | |- | ||
|CF_DIB | |CF_DIB | ||
Line 58: | Line 47: | ||
|CF_PALETTE | |CF_PALETTE | ||
|9 | |9 | ||
− | |Handle auf | + | |Handle auf eine Farbpalette. |
|- | |- | ||
|CF_PENDATA | |CF_PENDATA | ||
|10 | |10 | ||
− | |Wird im Zusammenhang mit den Stift Erweiterungen von Microsoft Windows verwendet. | + | |Wird im Zusammenhang mit den Stift-Erweiterungen von Microsoft Windows verwendet. |
|- | |- | ||
|CF_RIFF | |CF_RIFF | ||
|11 | |11 | ||
− | | | + | |Multimediadaten (Audiodateien) im Resource Interchange Datei Format (= '''R'''esource '''I'''nterchange '''F'''ile '''F'''ormat). |
|- | |- | ||
|CF_WAVE | |CF_WAVE | ||
Line 82: | Line 71: | ||
|CF_HDROP | |CF_HDROP | ||
|15 | |15 | ||
− | |Ein Handle auf eine Dateiliste, im Zusammenhang mit | + | |Ein Handle auf eine Dateiliste, im Zusammenhang mit Drag-And-Drop. |
|- | |- | ||
|CF_LOCALE | |CF_LOCALE | ||
|16 | |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. | + | |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 | |CF_PICTURE | ||
Line 95: | Line 120: | ||
|49685 | |49685 | ||
|Handle auf ein beliebiges Objekt. | |Handle auf ein beliebiges Objekt. | ||
+ | |} | ||
+ | <br> | ||
+ | ==Vordefinierte Lazarusformattypen für die Zwischenablage== | ||
+ | Folgende Formattypen sind für das Arbeiten mit der Zwischenablage in der Unit '''LCLType''' vordefiniert: | ||
+ | {| class="wikitable sortable" | ||
+ | ! TPredefinedClipboardFormat !! MIME type | ||
+ | |- | ||
+ | | pcfText || text/plain | ||
+ | |- | ||
+ | | pcfBitmap || image/bmp | ||
+ | |- | ||
+ | | pcfPixmap || image/xpm | ||
+ | |- | ||
+ | | pcfIcon || image/lcl.icon | ||
+ | |- | ||
+ | | pcfPicture || image/lcl.picture | ||
+ | |- | ||
+ | | pcfMetaFilePict || image/lcl.metafilepict | ||
+ | |- | ||
+ | | pcfObject || application/lcl.object | ||
+ | |- | ||
+ | | pcfComponent || application/lcl.component | ||
+ | |- | ||
+ | | pcfCustomData || application/lcl.customdata | ||
+ | |- | ||
|} | |} | ||
<br> | <br> | ||
+ | =Arbeiten mit den Windowsformattypen= | ||
+ | ==Einbinden der Unit Clipbrd== | ||
+ | Für den Zugriff auf die Zwischenablage wird die Unit '''Clipbrd''' benötigt.<br> | ||
+ | <syntaxhighlight lang="pascal"> | ||
+ | ... | ||
+ | uses | ||
+ | Clipbrd, ...; | ||
+ | ... | ||
+ | </syntaxhighlight> | ||
+ | <br> | ||
==Das Format der Zwischenablage abfragen== | ==Das Format der Zwischenablage abfragen== | ||
Im Beispiel wird abgefragt, ob der Inhalt der Zwischenablage Textformat hat. | Im Beispiel wird abgefragt, ob der Inhalt der Zwischenablage Textformat hat. | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang="pascal"> |
− | |||
... | ... | ||
− | |||
If Clipboard.HasFormat(CF_TEXT) then ... | If Clipboard.HasFormat(CF_TEXT) then ... | ||
− | |||
... | ... | ||
− | |||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
− | =Leeren der Zwischenablage= | + | ==Leeren der Zwischenablage== |
− | + | <syntaxhighlight lang="pascal"> | |
− | <syntaxhighlight> | ||
− | |||
... | ... | ||
− | |||
Clipboard.Clear; // Leert die Zwischenablage | Clipboard.Clear; // Leert die Zwischenablage | ||
− | |||
... | ... | ||
− | |||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
− | =Arbeiten mit Texten ohne Textformatierung= | + | |
+ | ==Arbeiten mit Texten ohne Textformatierung== | ||
Holt den Inhalt der Zwischenablage als unformatierten Text:<br> | Holt den Inhalt der Zwischenablage als unformatierten Text:<br> | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang="pascal"> |
− | |||
... | ... | ||
− | |||
Procedure subProzedur1; | Procedure subProzedur1; | ||
var | var | ||
Line 133: | Line 183: | ||
begin | begin | ||
− | |||
... | ... | ||
− | |||
strPuffer := Clipboard.AsText; | strPuffer := Clipboard.AsText; | ||
− | |||
... | ... | ||
− | |||
end; | end; | ||
− | |||
... | ... | ||
− | |||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
Kopiert den Inhalt eines Strings in die Zwischenablage:<br> | Kopiert den Inhalt eines Strings in die Zwischenablage:<br> | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang="pascal"> |
− | |||
... | ... | ||
− | |||
procedure subProzedur2; | procedure subProzedur2; | ||
var | var | ||
Line 156: | Line 198: | ||
begin | begin | ||
− | |||
... | ... | ||
− | |||
strPuffer := 'Hallo Welt'; | strPuffer := 'Hallo Welt'; | ||
Clipboard.AsText := strPuffer; | Clipboard.AsText := strPuffer; | ||
+ | ... | ||
+ | end; | ||
+ | ... | ||
+ | </syntaxhighlight> | ||
+ | <br> | ||
+ | ==Ein Bild aus TImage in die Zwischenablage kopieren== | ||
+ | <syntaxhighlight lang="pascal"> | ||
+ | ... | ||
+ | uses | ||
+ | Clipbrd, ...; | ||
+ | ... | ||
+ | procedure subProzedur3; | ||
+ | begin | ||
+ | ... | ||
+ | Clipboard.Assign(Form1.Image1.Picture.Bitmap); | ||
+ | ... | ||
+ | end; | ||
+ | ... | ||
+ | </syntaxhighlight> | ||
+ | oder | ||
+ | <syntaxhighlight lang="pascal"> | ||
+ | ... | ||
+ | uses | ||
+ | Clipbrd, ...; | ||
+ | ... | ||
+ | procedure subProzedur4; | ||
+ | begin | ||
+ | ... | ||
+ | Form1.Image1.Picture.Bitmap.SaveToClipboardFormat(CF_BITMAP); | ||
+ | ... | ||
+ | end; | ||
+ | ... | ||
+ | </syntaxhighlight> | ||
+ | <br> | ||
+ | ==Einen Screenshot erstellen und in die Zwischenablage kopieren== | ||
+ | <syntaxhighlight lang="pascal"> | ||
+ | ... | ||
+ | uses | ||
+ | Clipbrd, Graphics, Windows, SysUtils, ...; | ||
... | ... | ||
+ | |||
+ | procedure subProzedur5; | ||
+ | var | ||
+ | picBild: TPicture; | ||
+ | hdcBildschirm: HDC; | ||
+ | |||
+ | begin | ||
+ | |||
+ | try | ||
+ | // erstellt das Objekt picBild | ||
+ | picBild := TPicture.Create; | ||
+ | |||
+ | // erstellt den Screenshot und übergibt die Adresse des Screenshots | ||
+ | hdcBildschirm := GetDC(0); | ||
+ | // kopiert den Inhalt ab Adresse hdcBildschirm nach picBild | ||
+ | picBild.Bitmap.LoadFromDevice(hdcBildschirm); | ||
+ | // Freigabe von DC | ||
+ | ReleaseDC(0, hdcBildschirm); | ||
+ | // kopiert den Screenshot in die Zwischenablage | ||
+ | // dieser kann dann als Picture oder als Bitmap | ||
+ | // aus der Zwischenablage geholt werden | ||
+ | Clipboard.Assign(picBild); | ||
+ | finally | ||
+ | // gibt die lokale Variable picBild wieder frei | ||
+ | FreeandNil(picBild); | ||
+ | end; | ||
end; | end; | ||
− | |||
... | ... | ||
− | + | </syntaxhighlight> | |
+ | <br> | ||
+ | ==Ein Bild aus der Zwischenablage in ein TImage kopieren== | ||
+ | <syntaxhighlight lang="pascal"> | ||
+ | ... | ||
+ | uses | ||
+ | Clipbrd, ...; | ||
+ | ... | ||
+ | procedure subProzedur6; | ||
+ | begin | ||
+ | ... | ||
+ | // Prüft, ob sich ein Bildformat in der Zwischenablage befindet | ||
+ | if (Clipboard.HasFormat(CF_BITMAP)) or (Clipboard.HasFormat(CF_PICTURE)) then | ||
+ | // Ist ein Bild im vorgegebenen Format vorhanden, dann wird es geladen | ||
+ | Form1.Image1.Picture.Assign(Clipboard); | ||
+ | ... | ||
+ | end; | ||
+ | ... | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
<br> | <br> | ||
− | + | --[[User:Olaf|Olaf]] 05:03, 8 July 2013 (UTC) | |
− | [[ |
Latest revision as of 10:47, 18 June 2019
│
Deutsch (de) │
English (en) │
magyar (hu) │
русский (ru) │
Zurück zu den Zusätzlichen Informationen.
Dieser Artikel beschäftigt sich mit der Windowsprogrammierung.
Formate der Zwischenablage
Microsoft Formattypen der Zwischenablage
Die Microsoft Formattypen sind in der Unit Clipbrd vordefiniert.
Der Inhalt der Windows-Zwischenablage kann unter anderem folgende Formate haben:
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 (= Resource Interchange File Format). |
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. |
Vordefinierte Lazarusformattypen für die Zwischenablage
Folgende Formattypen sind für das Arbeiten mit der Zwischenablage in der Unit LCLType vordefiniert:
TPredefinedClipboardFormat | MIME type |
---|---|
pcfText | text/plain |
pcfBitmap | image/bmp |
pcfPixmap | image/xpm |
pcfIcon | image/lcl.icon |
pcfPicture | image/lcl.picture |
pcfMetaFilePict | image/lcl.metafilepict |
pcfObject | application/lcl.object |
pcfComponent | application/lcl.component |
pcfCustomData | application/lcl.customdata |
Arbeiten mit den Windowsformattypen
Einbinden der Unit Clipbrd
Für den Zugriff auf die Zwischenablage wird die Unit Clipbrd benötigt.
...
uses
Clipbrd, ...;
...
Das Format der Zwischenablage abfragen
Im Beispiel wird abgefragt, ob der Inhalt der Zwischenablage Textformat hat.
...
If Clipboard.HasFormat(CF_TEXT) then ...
...
Leeren der Zwischenablage
...
Clipboard.Clear; // Leert die Zwischenablage
...
Arbeiten mit Texten ohne Textformatierung
Holt den Inhalt der Zwischenablage als unformatierten Text:
...
Procedure subProzedur1;
var
strPuffer: string;
begin
...
strPuffer := Clipboard.AsText;
...
end;
...
Kopiert den Inhalt eines Strings in die Zwischenablage:
...
procedure subProzedur2;
var
strPuffer: string;
begin
...
strPuffer := 'Hallo Welt';
Clipboard.AsText := strPuffer;
...
end;
...
Ein Bild aus TImage in die Zwischenablage kopieren
...
uses
Clipbrd, ...;
...
procedure subProzedur3;
begin
...
Clipboard.Assign(Form1.Image1.Picture.Bitmap);
...
end;
...
oder
...
uses
Clipbrd, ...;
...
procedure subProzedur4;
begin
...
Form1.Image1.Picture.Bitmap.SaveToClipboardFormat(CF_BITMAP);
...
end;
...
Einen Screenshot erstellen und in die Zwischenablage kopieren
...
uses
Clipbrd, Graphics, Windows, SysUtils, ...;
...
procedure subProzedur5;
var
picBild: TPicture;
hdcBildschirm: HDC;
begin
try
// erstellt das Objekt picBild
picBild := TPicture.Create;
// erstellt den Screenshot und übergibt die Adresse des Screenshots
hdcBildschirm := GetDC(0);
// kopiert den Inhalt ab Adresse hdcBildschirm nach picBild
picBild.Bitmap.LoadFromDevice(hdcBildschirm);
// Freigabe von DC
ReleaseDC(0, hdcBildschirm);
// kopiert den Screenshot in die Zwischenablage
// dieser kann dann als Picture oder als Bitmap
// aus der Zwischenablage geholt werden
Clipboard.Assign(picBild);
finally
// gibt die lokale Variable picBild wieder frei
FreeandNil(picBild);
end;
end;
...
Ein Bild aus der Zwischenablage in ein TImage kopieren
...
uses
Clipbrd, ...;
...
procedure subProzedur6;
begin
...
// Prüft, ob sich ein Bildformat in der Zwischenablage befindet
if (Clipboard.HasFormat(CF_BITMAP)) or (Clipboard.HasFormat(CF_PICTURE)) then
// Ist ein Bild im vorgegebenen Format vorhanden, dann wird es geladen
Form1.Image1.Picture.Assign(Clipboard);
...
end;
...
--Olaf 05:03, 8 July 2013 (UTC)