Clipboard/de
Deutsch · English · Magyar · Русский
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:
{| 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 (= 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)
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.