程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 使用剪切板[1]: AsText、SetTextBuf、GetTextBuf

使用剪切板[1]: AsText、SetTextBuf、GetTextBuf

編輯:Delphi

剪切板類 TClipboard 定義在 Clipbrd 單元, 使用前先要 uses Clipbrd;

uses Clipbrd;

procedure TForm1.Button1Click(Sender: TObject);
var
 clip: TClipboard;
begin
 clip := TClipboard.Create; {建立}
 clip.AsText := Self.Text; {把窗體標題放入剪切板}
 ShowMessage(clip.AsText); {從剪切板讀取, 返回結果是: Form1}
 {因為剪切板是全局的, 此時可以在其他地方粘貼一試}
 clip.Free;         {釋放}
end;

  根據 Delphi 給我們提供的方便, 上面的例子可以簡化為:

uses Clipbrd;

procedure TForm1.Button1Click(Sender: TObject);
begin
 Clipboard.AsText := Text;
 ShowMessage(Clipboard.AsText); {Form1}
end;

  這個 Clipboard 是什麼? 是不是和 Screen 一樣的類型變量?

  答案是否定的! Clipboard 只是個函數, 是一個無參函數, 是定義在 Clipbrd 單元的一個全局函數, 它返回一個 TClipboard 類型的變量, 當我看到這個函數的源碼時, 真是感覺又學了一招, 非常精巧的思路.

  除了用 TClipboard.AsText 屬性, 我們還可以使用 SetTextBuf 把文本放入剪切板、使用 GetTextBuf 讀出剪切板中的文本.

uses Clipbrd;

{使用 SetTextBuf}
procedure TForm1.Button1Click(Sender: TObject);
begin
 Clipboard.SetTextBuf(PChar(Text)); {按參數類型要求, 需要轉換一下}
 ShowMessage(Clipboard.AsText);   {Form1}
end;

{使用 GetTextBuf 就和使用 API 差不多, 需要給個緩沖區}
procedure TForm1.Button2Click(Sender: TObject);
var
 arr: array[0..255] of Char;
begin
 Clipboard.AsText := Text;
 Clipboard.GetTextBuf(arr, Length(arr));
 ShowMessage(arr);            {Form1}
end;

{如果不給緩沖區, 那你自己得申請並釋放內存}
procedure TForm1.Button3Click(Sender: TObject);
var
 pc: PChar;
begin
 Clipboard.AsText := Text;
 GetMem(pc, 256);        {申請內存}
 Clipboard.GetTextBuf(pc, 256);
 ShowMessage(pc);        {Form1}
 FreeMem(pc);          {釋放內存}
end;

  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved