电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

使用剪切板[2]:Assign、HasFormat


发布日期:2018/10/18
 

准备工作

在窗体上放置一个 TPanel 在 TPanel 上放一个 TImage 另外需要三个按钮

本例效果图

第一版代码

unitUnit;

interface

uses

WindowsMessagesSysUtilsVariantsClassesGraphicsControlsForms

DialogsStdCtrlsExtCtrls;

type

TForm=class(TForm)

Button:TButton;

Button:TButton;

Button:TButton;

Panel:TPanel;

Image:TImage;

procedureButtonClick(Sender:TObject);

procedureButtonClick(Sender:TObject);

procedureButtonClick(Sender:TObject);

end;

var

Form:TForm;

implementation

{$R*dfm}

usesClipbrd;

procedureTFormButtonClick(Sender:TObject);

begin

ImageLeft:=;

ImageTop:=;

PanelAutoSize:=True;

ImageAutoSize:=True;

ImagePictureLoadFromFile(c:temptestbmp);

TButton(Sender)Caption:=导入;

end;

procedureTFormButtonClick(Sender:TObject);

begin

ClipboardAssign(ImagePicture);{把Image中的图片放入剪切板}

{现在在图像软件中都可以粘贴了可以用Windows画图板试试}

TButton(Sender)Caption:=复制;

end;

procedureTFormButtonClick(Sender:TObject);

var

bit:TBitmap;{准备用一个TBitmap从剪切板中结束图片}

xy:Integer;

begin

bit:=TBitmapCreate;

bitAssign(Clipboard);{从剪切板获取}

x:=PanelWidth+PanelLeft*;{xy是准备在窗体上的粘贴位置}

y:=PanelTop;

CanvasDraw(xybit);{粘贴就是画出来呗}

bitFree;

TButton(Sender)Caption:=粘贴;

end;

不过现在程序还有漏洞 假如剪切板中没有东西 粘贴什么? 如果剪切板中不是图片 怎么粘贴?

其实我们只用 TClipboardHasFormat 函数判断一下剪切板中是不是图片就行了

第二版代码

unitUnit;

interface

uses

WindowsMessagesSysUtilsVariantsClassesGraphicsControlsForms

DialogsStdCtrlsExtCtrls;

type

TForm=class(TForm)

Button:TButton;

Button:TButton;

Button:TButton;

Panel:TPanel;

Image:TImage;

procedureButtonClick(Sender:TObject);

procedureButtonClick(Sender:TObject);

procedureButtonClick(Sender:TObject);

end;

var

Form:TForm;

implementation

{$R*dfm}

usesClipbrd;

procedureTFormButtonClick(Sender:TObject);

begin

ImageLeft:=;

ImageTop:=;

PanelAutoSize:=True;

ImageAutoSize:=True;

ImagePictureLoadFromFile(c:temptestbmp);

TButton(Sender)Caption:=导入;

end;

procedureTFormButtonClick(Sender:TObject);

begin

{如果Image还没有图片就别复制了退出吧}

ifImagePicture=nilthenExit;

ClipboardAssign(ImagePicture);

TButton(Sender)Caption:=复制;

end;

procedureTFormButtonClick(Sender:TObject);

var

bit:TBitmap;

xy:Integer;

begin

{如果当前剪切板中的东西不是图片就退出}

ifnotClipboardHasFormat(CF_BITMAP)thenExit;

bit:=TBitmapCreate;

bitAssign(Clipboard);

x:=PanelWidth+PanelLeft*;

y:=PanelTop;

CanvasDraw(xybit);

bitFree;

TButton(Sender)Caption:=粘贴;

end;

end

现在有出了新的问题 CF_BITMAP 常量表示图片 其他格式怎么表示? 有多少格式可以用于剪切板?

上一篇:操作系统文件管理问题汇总[2]

下一篇:在Windows XP以幻灯片方式浏览图片