Builder中灵活使用剪贴板
剪贴板(ClipBoard)是Windows应用程序中运用得最多最普遍的工具,它是Windows系统自带的。通过剪贴板,应用程序可以剪切、拷贝以及粘贴文本、图形和对象。C++Builder的编辑组件封装了标准的Windows文本处理控件,它们内嵌了与剪贴板交互的所有方法。所以用Builder开发与剪贴板有关(如需要剪切、拷贝以及粘贴文本和图形)的应用程序十分简单方便。
一、使用剪贴板剪切、拷贝和粘贴文本
要使用剪贴板剪切、拷贝及粘贴文本,可以分别调用编辑组件的CutToClipboard、CopyToClipboard及PasteFromClipboard方法。
如下例子中。分别在Form上放两个RichEdit和两个PopMenu控件,一个RichEdit对应一个PopMenu:
编辑PopMenu,加入剪切、复制以及粘贴三项内容:
加入相关代码:
void __fastcall TForm1::C1Click(TObject *Sender)
{
RichEdit1->CutToClipboard();
}
void __fastcall TForm1::N1Click(TObject *Sender)
{
RichEdit1->CopyToClipboard();
}
void __fastcall TForm1::P1Click(TObject *Sender)
{
RichEdit1->PasteFromClipboard();
}
void __fastcall TForm1::T1Click(TObject *Sender)
{
RichEdit2->CutToClipboard();
}
void __fastcall TForm1::C2Click(TObject *Sender)
{
RichEdit2->CopyToClipboard();
}
void __fastcall TForm1::P2Click(TObject *Sender)
{
RichEdit2->PasteFromClipboard();
}
运行程序,通过右键菜单,你可以把RichEdit的内容剪切,或者复制到另外一个RichEdit(当然也可以粘贴到自己里面)。
二、使用剪贴板处理图形
可以使用Windows的剪贴板在应用程序中复制、剪切和粘贴图象,或者与其他应用程序交换图形。Builder的VCL的对象使得处理不同类型的数据(包括图形)变得更为容易。
在使用Clipboard对象之前,必须把头文件Clipbrd.hpp加到需要访问的Clipboard数据的.cpp文件中。
即在.cpp文件中加入:#include
1、把图形复制到剪贴板
可以将任何图片,包括图象控件的内容都复制到剪贴板中。一旦复制到剪贴板上,图片就可供所有的Windows程序使用。
要把图形复制到剪贴板,需要用Assign方法把图片对象赋值给对象。
下面代码是把图象控件Image1复制到剪贴板:
Clipboard()->Assign(Image1->Picture);
2、把图形剪切到剪贴板中
把图形剪切到剪贴板和复制相同,只是同时也将源图形删除。通常的做法是首先把它复制到剪贴板,然后把所剪切的区域设为黑色。
实现代码如下:
TRect ARect;
Clipboard()->Assign(Image1->Picture); //把图形复制到剪贴板
Image1->Canvas->CopyMode=cmBlackness; //把复制颜色设为黑色
ARect=Rect(0,0,Image1->Width,Image1->Height);
Image1->Canvas->CopyRect(ARect,Image1->Canvas,ARect);// 把所剪切的区域设为黑色
Image1->Canvas->CopyMode=cmSrcCopy; //恢复复制颜色为默认值
【itbulo.com/post.php?action=newthread&fid=51&extra=page%3D1" title="如有错误,麻烦请及时告诉我们,谢谢。" target="_blank">我要纠错】【itbulo.com/" target="_blank">进入论坛交流】【关闭此页】【iTbulo.net/" class="lblue" target="_blank">进入博客】
3、从剪贴板粘贴图形
若Windows 的Clipboard包含位图图形,可将它粘贴到任意图象对象,包括图象控件和窗体控件。剪贴板的图形可以来自应用程序内,也可以从其他应用程序复制而来。
要从剪贴板粘贴图形:
(1)调用的HasFormat方法检查剪贴板中是否包含图形。传入参数CF_BITMAP,若剪贴板中包含图形,则返回true。
(2)将对象赋值给目标对象。
实现代码如下:
Graphics::TBitmap *Bitmap; //定义一个位图变量指针
if(Clipboard()->HasFormat(CF_BITMAP)) //判断剪贴板中是否有图形
{
Image2->Picture->Bitmap->Assign(Clipboard()); //将对象中的图形赋值给目标对象
Image2->Canvas->Draw(0,0,Bitmap); //显示图形
}
【中国下载站】【设为主页】【收藏本页】【打印本文】【回到顶部】【关闭此页】