Difference between revisions of "Clipboard/de"

From Lazarus wiki
Jump to navigationJump to search
m
m
Line 118: Line 118:
 
|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
 +
|-
 +
| 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
 
|}
 
|}
 
<br>
 
<br>

Revision as of 20:52, 6 July 2013

Deutsch (de) English (en) magyar (hu) русский (ru)


Dieser Artikel beschäftigt sich mit der Windowsprogrammierung.


Formate der Zwischenablage

Microsoft Formattypen der Zwischenablage

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

Wenn das Öffnen und das Schliessen der Zwischenablage wegbleiben, wird der Code auch ausgeführt. Dies ist aber schlechter Code.

  ...
  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;
  ...


Einen Screenshot erstellen und in die Zwischenablage kopieren

  ...
uses
  Clipbrd, Graphics, Windows, SysUtils, ...;
  ...

procedure subProzedur3;
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;
  ...