Delphi中剪下板的使用[1]: AsText、SetTextBuf、GetTextBuf

來源:互聯網
上載者:User

剪下板類 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;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.