Delphi操作剪切板

效果要求:

一.当剪切板内容为字符串时,把内容输出到Edit控件上

二.当剪切板内容为图片里,输出到image控件上

 

 

 

 

引用单元:

user Vcl.Clipbrd;

{

功能函数常用的类型有以下三种:

文字:CF_TEXT =1     //字符,不包括文本文件

位图:CF_BITMAP =2   //截图,不包括图片文件.

元文件:CF_METAFILEPICT =3

}

//判断剪切板内容的类型,并根据情况输出到各组件上

procedure TForm1.btn1Click(Sender: TObject);
var
  myClipbrd: TClipboard;
begin
  if myClipbrd.HasFormat(CF_TEXT) then    //文字类型
  begin
    edt1.Clear;
    edt1.PasteFromClipboard;   //输出字符
  end
  else if myClipbrd.HasFormat(CF_BITMAP) then  //位图类型
  begin
    myClipbrd := TClipboard.Create();   //新增一个剪切板,用完后记得free
    SetClipboard(myClipbrd);        //我不知道怎么形容这个函数.你看了它源码,如果有什么理解的话,麻烦给我留言,谢谢
    img1.Picture.Assign(myClipbrd);     //输出位图到image控件上.
  end
  else if myClipbrd.HasFormat(CF_METAFILEPICT) then  //元文件类型
    edt1.Text := '当前剪切板内的数据为元文件类型'
  else                           //其他类型,我这里就不往下判断了.类型挺多的
    edt1.Text := '当前剪切板内的数据为未知的文件类型';
end;

 

-----------------------------------------

 

Edit控件操作:

SelectAll 全选edit组件内的字符串.
SelText 返回(getText)或设置(setText)包含当前所选择文本的字符串;如果没有字符被选中,则为零长度字符串 ("")。 
selstart就是选区的第一个字符
sellength就是选中的长度
seltext就是选中的字符了,就是这串字符串变蓝色。

var
  s: string;
begin
//  Edit1.Text := 'abcdef';
//  Edit1.SelectAll;  //全选   abcdef

//  //取 cd
//  Edit1.SelStart := 2;     //起始位置
//  Edit1.SelLength := 2;    //截取长度

//  s := Edit1.SelText;    //取得当前选中的字符串,赋值给s变量
//  s := Edit1.GetTextLen.ToString  ;   //返回文本框内字符串的长度

//  Edit1.SetSelText('123'); //会把选中的cd,修改为123,当前文本框的值为ab123ef

//  clipboard.setTextBuf(PChar('123'));  //强制设置剪切板内容为'123'.clipboard :剪切板对象
//  edit1.PasteFromClipboard;       //把剪切板的内容输出到文本框
end;

 


 


-----------------------------------------

把Image控件上的位图复制进剪切板:

procedure TForm1.Button1Click(Sender: TObject);

var Bmp: TBitmap;

begin

  Bmp := TBitmap.Create;

  Bmp.SetSize(Image1.Width, Image1.Height);    //设置位图尺寸

  Bmp.Assign(Image1.Picture.Graphic);

  Clipboard.Assign(Bmp); //放到剪贴板内

  Bmp.Free;

end;

 --------------------------------------------

把指定字符串添加进剪切板

procedure TForm1.btn2Click(Sender: TObject);
var
  myclipbrd: TClipboard;
begin
  myclipbrd := TClipboard.Create();
  //myclipbrd.AsText := myclipbrd.AsText + '数据来源:http...';     //有些网站会在复制的内容末尾自动添加数据来源等信息
  myclipbrd.AsText :=  '111';
  edt1.Clear;          //先清空再写入,不然会在光标处插入剪切板的内容
  edt1.PasteFromClipboard;  //输出剪切板内容
  myclipbrd.Free;
end;

end.

 

posted @ 2022-06-27 15:56  一曲轻扬  阅读(1325)  评论(0)    收藏  举报