熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

使用剪切板[2]:Assign、HasFormat

2022-06-13   來源: Delphi編程 

  准備工作

  在窗體上放置一個 TPanel 在 TPanel 上放一個 TImage 另外需要三個按鈕

  本例效果圖

  

  第一版代碼

  unit Unit;

  interface

  uses
 Windows Messages SysUtils Variants Classes Graphics Controls Forms
 Dialogs StdCtrls ExtCtrls;

  type
 TForm = class(TForm)
  Button: TButton;
  Button: TButton;
  Button: TButton;
  Panel: TPanel;
  Image: TImage;
  procedure ButtonClick(Sender: TObject);
  procedure ButtonClick(Sender: TObject);
  procedure ButtonClick(Sender: TObject);
 end;

  var
 Form: TForm;

  implementation

  {$R *dfm}

  uses Clipbrd;

  procedure TFormButtonClick(Sender: TObject);
begin
 ImageLeft := ;
 ImageTop := ;
 PanelAutoSize := True;
 ImageAutoSize := True;
 ImagePictureLoadFromFile(c:temptestbmp);

  TButton(Sender)Caption := 導入;
end;

  procedure TFormButtonClick(Sender: TObject);
begin
 ClipboardAssign(ImagePicture); {把 Image 中的圖片放入剪切板}
 {現在在圖像軟件中都可以粘貼了 可以用 Windows 畫圖板試試}

  TButton(Sender)Caption := 復制;
end;

  procedure TFormButtonClick(Sender: TObject);
var
 bit: TBitmap; {准備用一個 TBitmap 從剪切板中結束圖片}
 xy: Integer;
begin
 bit := TBitmapCreate;
 bitAssign(Clipboard);        {從剪切板獲取}
 x := PanelWidth + PanelLeft * ; {xy 是准備在窗體上的粘貼位置}
 y := PanelTop;
 CanvasDraw(x y bit);       {粘貼就是畫出來呗}
 bitFree;

  TButton(Sender)Caption := 粘貼;
end;

  不過現在程序還有漏洞 假如剪切板中沒有東西 粘貼什麼? 如果剪切板中不是圖片 怎麼粘貼?

  其實我們只用 TClipboardHasFormat 函數判斷一下剪切板中是不是圖片就行了

  第二版代碼

  unit Unit;

  interface

  uses
 Windows Messages SysUtils Variants Classes Graphics Controls Forms
 Dialogs StdCtrls ExtCtrls;

  type
 TForm = class(TForm)
  Button: TButton;
  Button: TButton;
  Button: TButton;
  Panel: TPanel;
  Image: TImage;
  procedure ButtonClick(Sender: TObject);
  procedure ButtonClick(Sender: TObject);
  procedure ButtonClick(Sender: TObject);
 end;

  var
 Form: TForm;

  implementation

  {$R *dfm}

  uses Clipbrd;

  procedure TFormButtonClick(Sender: TObject);
begin
 ImageLeft := ;
 ImageTop := ;
 PanelAutoSize := True;
 ImageAutoSize := True;
 ImagePictureLoadFromFile(c:temptestbmp);
 TButton(Sender)Caption := 導入;
end;

  procedure TFormButtonClick(Sender: TObject);
begin
 {如果 Image 還沒有圖片 就別復制了 退出吧}
 if ImagePicture = nil then Exit;

  ClipboardAssign(ImagePicture);
 TButton(Sender)Caption := 復制;
end;

  procedure TFormButtonClick(Sender: TObject);
var
 bit: TBitmap;
 xy: Integer;
begin
 {如果當前剪切板中的東西不是圖片 就退出}
 if not ClipboardHasFormat(CF_BITMAP) then Exit;

  bit := TBitmapCreate;
 bitAssign(Clipboard);
 x := PanelWidth + PanelLeft * ;
 y := PanelTop;
 CanvasDraw(x y bit);
 bitFree;
 TButton(Sender)Caption := 粘貼;
end;

  end

    現在有出了新的問題 CF_BITMAP 常量表示圖片 其他格式怎麼表示? 有多少格式可以用於剪切板?


From:http://tw.wingwit.com/Article/program/Delphi/201311/24656.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.