// Es wird auf das Eintreffen von Daten in der Zwischenablage reagiert.

// Getestet mit D4 unter XP

// Variante 1:
// Hier beispielsweise auf das Kopieren eines Bitmaps in das Clipboard.

unit Unit1; 
 
interface 
 
uses 
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, 
  StdCtrls; 
 
type 
  TForm1 = class(TForm) 
    Label1: TLabel; 
    procedure FormCreate(Sender: TObject); 
  private 
    NextClip: HWND; 
    procedure CCBC(var Msg: TWMChangeCBChain); message WM_CHANGECBCHAIN; 
    procedure DrawC(var Msg: TWMDrawClipboard); message WM_DRAWCLIPBOARD; 
  public 
    procedure ausfuehren(b: boolean); 
  end; 
 
var 
  Form1: TForm1; 
 
implementation 
 
{$R *.DFM} 
 
var CF: UInt; 
 
procedure TForm1.CCBC(var Msg: TWMChangeCBChain); 
begin 
  inherited; 
  Msg.Result := 0; 
  if Msg.Remove = NextClip then NextClip := Msg.Next else 
    SendMessage(NextClip, WM_CHANGECBCHAIN, Msg.Remove, Msg.Next); 
end; 
 
procedure TForm1.DrawC(var Msg: TWMDrawClipboard); 
begin 
  inherited; 
  SendMessage(NextClip, WM_DRAWCLIPBOARD, 0, 0); 
  ausfuehren(IsClipboardFormatAvailable(CF)); 
end; 
 
procedure TForm1.FormCreate(Sender: TObject); 
begin 
  CF := CF_Bitmap; 
  NextClip := SetClipboardViewer(Handle); 
end; 
 
procedure TForm1.ausfuehren(b: boolean); 
begin 
  if b then 
    label1.caption := 'In der Zwischenablage steht ein Bitmap zur Verfügung' 
  else label1.caption := ''; 
end; 
 
end.
//------------------------------------------------------------------

// Variante 2:
// Bei dieser Variante mal mit Text.

type 
  TForm1 = class(TForm) 
    Label1: TLabel; 
    procedure FormCreate(Sender: TObject); 
    procedure FormDestroy(Sender: TObject); 
  private 
    { Private-Deklarationen } 
  public 
    procedure ClipBoardChanged(var Message: TMessage); message WM_DRAWCLIPBOARD; 
  end; 
 
var 
  Form1: TForm1; 
 
implementation 
 
{$R *.DFM} 
 
var 
  H: THandle; 
 
procedure TForm1.ClipBoardChanged(var Message: TMessage); 
begin 
  if IsClipboardFormatAvailable(CF_TEXT) then 
    label1.caption := 'In der Zwischenablage steht Text zur Verfügung' 
  else label1.caption := ''; 
end; 
 
procedure TForm1.FormCreate(Sender: TObject); 
begin 
  label1.caption := ''; 
  H := SetClipboardViewer(Handle); 
end; 
 
procedure TForm1.FormDestroy(Sender: TObject); 
begin 
  ChangeClipboardChain(Handle, H); 
end; 



Zugriffe seit 6.9.2001 auf Delphi-Ecke