1. 程式人生 > 其它 >Delphi Clipboard[2] SetTextBuf、GetTextBuf、AsText -文字操作

Delphi Clipboard[2] SetTextBuf、GetTextBuf、AsText -文字操作

{該文首發於部落格園 滔Roy,無須授權即可轉發,請自覺保留頭部申明}

Delphi Clipboard[2] SetTextBuf、GetTextBuf、AsText -文字操作

Clipboard是全域性類函式 

1、AsText 屬性(允許從剪貼簿放置和檢索文字)

property AsText: string read GetAsText write SetAsText;

function TClipboard.GetAsText: string;
var
  Data: THandle;
begin
  Open;
  Data := GetClipboardData(CF_TEXT);
  try
    if Data <> 0 then
      Result := PChar(GlobalLock(Data))
    else
      Result := '';
  finally
    if Data <> 0 then GlobalUnlock(Data);
    Close;
  end;
end;

procedure TClipboard.SetAsText(const Value: string);
begin
  SetBuffer(CF_TEXT, PChar(Value)^, Length(Value) + 1);
end;

使用示例:

Clipboard.AsText:='滔Roy ' + DateTimeToStr(Now);    //傳值到剪貼簿
ShowMessage(Clipboard.AsText);                     //輸出剪貼簿的內容

2、SetTextBuf  (將控制代碼以給定格式放置在剪貼簿上)

procedure TClipboard.SetTextBuf(Buffer: PChar);
begin
  SetBuffer(CF_TEXT, Buffer^, StrLen(Buffer) + 1);
end;

使用示例:

Clipboard.SetTextBuf(PChar('滔Roy ' + DateTimeToStr(Now)) );    //傳值到剪貼簿
ShowMessage(Clipboard.AsText);                      //輸出剪貼簿的內容

3、GetTextBuf  //檢索、取回緩衝區的文字資料  

function TClipboard.GetTextBuf(Buffer: PChar; BufSize: Integer): Integer;
var
  Data: THandle;
begin
  Open;
  Data := GetClipboardData(CF_TEXT);
  if Data = 0 then Result := 0 else
  begin
    Result := StrLen(StrLCopy(Buffer, GlobalLock(Data), BufSize - 1));
    GlobalUnlock(Data);
  end;
  Close;
end;

示例:

var
  PArr:array[0..1024] of Char;
begin
  Clipboard.AsText:='滔Roy ' + DateTimeToStr(Now);    //傳值到剪貼簿
  Clipboard.GetTextBuf(PArr,Length(PArr));          //獲取緩衝區的內容
  ShowMessage(PArr);                //輸出內容
end;

  

  

 

 

建立時間:2022.04.14  更新時間: