Difference between revisions of "Clipboard/de"

From Lazarus wiki
Jump to navigationJump to search
(→‎Vordefinierte Lazarusformattypen für die Zwischenablage: Delphi- und Kylixtypen sind in der LCL nicht definiert.)
m (Fixed syntax highlighting)
 
Line 151: Line 151:
 
==Einbinden der Unit Clipbrd==
 
==Einbinden der Unit Clipbrd==
 
Für den Zugriff auf die Zwischenablage wird die Unit '''Clipbrd''' benötigt.<br>
 
Für den Zugriff auf die Zwischenablage wird die Unit '''Clipbrd''' benötigt.<br>
<syntaxhighlight>
+
<syntaxhighlight lang="pascal">
 
   ...
 
   ...
 
uses
 
uses
Line 160: Line 160:
 
==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 ...
Line 167: Line 167:
 
<br>
 
<br>
 
==Leeren der Zwischenablage==
 
==Leeren der Zwischenablage==
<syntaxhighlight>
+
<syntaxhighlight lang="pascal">
 
   ...
 
   ...
 
   Clipboard.Clear; // Leert die Zwischenablage
 
   Clipboard.Clear; // Leert die Zwischenablage
Line 176: Line 176:
 
==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;
Line 191: Line 191:
 
<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;
Line 207: Line 207:
 
<br>
 
<br>
 
==Ein Bild aus TImage in die Zwischenablage kopieren==
 
==Ein Bild aus TImage in die Zwischenablage kopieren==
<syntaxhighlight>
+
<syntaxhighlight lang="pascal">
 
   ...
 
   ...
 
uses
 
uses
Line 221: Line 221:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
oder
 
oder
<syntaxhighlight>
+
<syntaxhighlight lang="pascal">
 
   ...
 
   ...
 
uses
 
uses
Line 237: Line 237:
  
 
==Einen Screenshot erstellen und in die Zwischenablage kopieren==
 
==Einen Screenshot erstellen und in die Zwischenablage kopieren==
<syntaxhighlight>
+
<syntaxhighlight lang="pascal">
 
   ...
 
   ...
 
uses
 
uses
Line 274: Line 274:
 
<br>
 
<br>
 
==Ein Bild aus der Zwischenablage in ein TImage kopieren==
 
==Ein Bild aus der Zwischenablage in ein TImage kopieren==
<syntaxhighlight>
+
<syntaxhighlight lang="pascal">
 
   ...
 
   ...
 
uses
 
uses

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)