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.

浙公网安备 33010602011771号