Difference between revisions of "Clipboard/de"
From Free Pascal wiki
Jump to navigationJump to searchm |
|||
Line 324: | Line 324: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
− | |||
<br> | <br> | ||
− | + | --[[User:Olaf|Olaf]] 05:03, 8 July 2013 (UTC) | |
− | + | [[Category:Tutorials/de]]{{AutoCategory}} | |
− | [[Category:Tutorials/de]] |
Revision as of 07:03, 8 July 2013
│
Deutsch (de) │
English (en) │
magyar (hu) │
русский (ru) │
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 |
pcfObject | application/lcl.object |
pcfComponent | application/lcl.component |
pcfCustomData | application/lcl.customdata |
pcfDelphiText | text/plain |
pcfDelphiBitmap | text/delphi.bitmap |
pcfDelphiPicture | Delphi picture |
pcfDelphiMetaFilePict | image/delphimetafilepict |
pcfDelphiObject | application/delphi.object |
pcfDelphiComponent | Delphi component |
pcfKylixPicture | image/delphi.picture |
pcfKylixBitmap | image/delphi.bitmap |
pcfKylixDrawing | image/delphi.drawing |
pcfKylixComponent | application/delphi.component |
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)