Difference between revisions of "Clipboard/de"

From Lazarus wiki
Jump to navigationJump to search
m (some typos)
m
Line 120: Line 120:
 
|}
 
|}
 
<br>
 
<br>
=Einbinden der Unit Clipbrd=
+
=Arbeiten mit den Windowsformattypen=
 +
==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>
Line 129: Line 130:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
<br>
 
<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>
Line 137: Line 138:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
<br>
 
<br>
=Leeren der Zwischenablage=
+
==Leeren der Zwischenablage==
 
Wenn das Öffnen und das Schliessen der Zwischenablage wegbleiben, wird der Code auch ausgeführt. Dies ist aber schlechter Code.<br>
 
Wenn das Öffnen und das Schliessen der Zwischenablage wegbleiben, wird der Code auch ausgeführt. Dies ist aber schlechter Code.<br>
 
<syntaxhighlight>
 
<syntaxhighlight>
Line 145: Line 146:
 
</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>
Line 177: Line 178:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
<br>
 
<br>
=Einen Screenshot erstellen und in die Zwischenablage kopieren=
+
==Einen Screenshot erstellen und in die Zwischenablage kopieren==
 
<syntaxhighlight>
 
<syntaxhighlight>
 
   ...
 
   ...

Revision as of 20:45, 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.


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