如何在Delphi中使用剪贴板??? 1、如何将abcde这个字符串复制到剪贴板?2、如何释放剪贴板的内容?谢谢各位的帮助!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 clipboard.assign('abcde');clipboard.assign(nil); ---- 首先,使用SetClipboardViewer(HWND)函数向剪贴板观察链中加入一个观察窗口。当剪贴板的内容发生变化时,该窗口会接收到一个WM_DRAWCLIPBOARD消息。该函数需要传递的参数是观察窗口的句柄。返回值也是一个窗口句柄类型,标识了将要加入的下一个窗口。 ---- 然后,响应WM_DRAWCLIPBOARD消息处理剪贴板内容的变化。 ---- 最后,在程序退出或关闭时需要调用ChangeClipboardChain函数来将自己从观察链中删除。然后调用SendMessage函数把这些消息传递到观察链中的下一个观察窗口。函数ChangeClipboardChain原型如下: BOOL ChangeClipboardChain(HWND hWndRemove, //将要删除的窗口的句柄HWND hWndNewNext //观察链中下一个窗口的句柄 ); ---- Delphi的clipbrd.pas单元中定义了一个类TClipboard,它封装了Windows剪贴板,简化了大量复杂的处理过程。我们在程序中可以直接调用全局函数Clipboard,该函数用于返回TClipboard对象实例,使用这个实例对剪贴板进行剪切、复制和粘贴等操作。下面是TClipboard对象的几个常用的方法和属性的简单介绍。 ---- 方法: ---- Assign:将指定的对象放入剪贴板中。 ---- Open:打开剪贴板,防止其他程序改写剪贴板。在向剪贴板加入多项数据时尤其有用。 ---- Close:关闭剪贴板。应该与打开剪贴板成对使用。 ---- Clear:清空剪贴板。 ---- GetAsHandle:返回剪贴板中指定格式数据的句柄。使用前必须打开剪贴板。 ---- GetComponent:返回剪贴板中的一个控件。Delphi自己使用得多。 ---- HasFormat:查询剪贴板中是否有指定格式的内容。 ---- 属性: ---- AsText:用于读写剪贴板文字内容。 ---- FormatCount:读剪贴板中数据格式的种数。 ---- Formats:返回剪贴板中各种格式的列表。 ---- 此外,Delphi中的许多控件中也封装了有关剪贴板处理的操作。下面的一个处理剪贴板的简单例子,只是将剪贴板的文字内容显示为窗口标题。 unit Unit1;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Clipbrd;//加入clipbrd单元type TForm1 = class(TForm) procedure FormCreate(Sender: TObject);procedure FormClose(Sender: TObject; var Action: TCloseAction); private { Private declarations } public NextClipHwnd:HWND;//观察链中下一个窗口句柄procedure WMDrawClipBoard(var AMessage:TMessage); message WM_DRAWCLIPBOARD;//处理WM_DRAWCLIPBOARD消息过程 end;var Form1: TForm1;implementation{$R *.DFM}{ TForm1 }procedure TForm1.WMDrawClipBoard(var AMessage: TMessage);begin //将WM_DRAWCLIPBOARD消息传递到下一个观察链中的窗口 SendMessage(NextClipHwnd,AMessage.Msg,AMessage.WParam,AMessage.LParam); //查询剪贴板中特定格式的数据内容 if (Clipboard.HasFormat(CF_TEXT) or Clipboard.HasFormat(CF_OEMTEXT)) then begin //处理剪贴板中内容 Caption:=Clipboard.asText; end;end;procedure TForm1.FormCreate(Sender: TObject);begin //获得观察链中下一个窗口句柄 NextClipHwnd:=SetClipBoardViewer(Handle);end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);begin //从观察链中删除本观察窗口 ChangeClipboardChain(Handle,NextClipHwnd); //将WM_DRAWCLIPBOARD消息传递到下一个观察链中的窗口 SendMessage(NextClipHwnd,WM_CHANGECBCHAIN,Handle,NextClipHwnd);end;end. uses Clipbrd;就有了一个全局变量ClipBoard。用它就可以了。 clipboard.assign('abcde');clipboard.assign(nil);上面2句试过了,不管。 为什么我做的界面字显示不全? vc++翻译成Delphi 函数二 怎么取‘//’在字符串中的位置 停止正在计算程序,以便回到应用程序的主窗口的问题。 在ActiveX中使用URLDownLoadToFile函数中的参数问题 关于对象生命期 一个关于BitBtn控件的问题? 要使一个工程的标题变成中文怎么变啊? 在任务栏上单击图标,当最小化时单击后回恢复,当窗口显示时单击会最小化(不是在系统托盘上单击),请问这个东西,怎么处理的?我怎样改 为什么我的窗口一移动,程序就死机了呢? 关于一个修改的功能用存储过程和DBGRID怎么实现 关于Delphi 和 VB 的讨论,请大家发言。
clipboard.assign(nil);
HWND hWndRemove, //将要删除的窗口的句柄
HWND hWndNewNext //观察链中下一个窗口的句柄
); ---- Delphi的clipbrd.pas单元中定义了一个类TClipboard,它封装了Windows剪贴板,简化了大量复杂的处理过程。我们在程序中可以直接调用全局函数Clipboard,该函数用于返回TClipboard对象实例,使用这个实例对剪贴板进行剪切、复制和粘贴等操作。下面是TClipboard对象的几个常用的方法和属性的简单介绍。 ---- 方法: ---- Assign:将指定的对象放入剪贴板中。 ---- Open:打开剪贴板,防止其他程序改写剪贴板。在向剪贴板加入多项数据时尤其有用。 ---- Close:关闭剪贴板。应该与打开剪贴板成对使用。 ---- Clear:清空剪贴板。 ---- GetAsHandle:返回剪贴板中指定格式数据的句柄。使用前必须打开剪贴板。 ---- GetComponent:返回剪贴板中的一个控件。Delphi自己使用得多。 ---- HasFormat:查询剪贴板中是否有指定格式的内容。 ---- 属性: ---- AsText:用于读写剪贴板文字内容。 ---- FormatCount:读剪贴板中数据格式的种数。 ---- Formats:返回剪贴板中各种格式的列表。 ---- 此外,Delphi中的许多控件中也封装了有关剪贴板处理的操作。下面的一个处理剪贴板的简单例子,只是将剪贴板的文字内容显示为窗口标题。 unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes,
Graphics, Controls, Forms, Dialogs,
Clipbrd;//加入clipbrd单元type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject;
var Action: TCloseAction);
private
{ Private declarations }
public
NextClipHwnd:HWND;//观察链中下一个窗口句柄
procedure WMDrawClipBoard
(var AMessage:TMessage);
message WM_DRAWCLIPBOARD;
//处理WM_DRAWCLIPBOARD消息过程
end;var
Form1: TForm1;implementation{$R *.DFM}{ TForm1 }procedure TForm1.WMDrawClip
Board(var AMessage: TMessage);
begin
//将WM_DRAWCLIPBOARD
消息传递到下一个观察链中的窗口
SendMessage(NextClipHwnd,AMessage.
Msg,AMessage.WParam,AMessage.LParam);
//查询剪贴板中特定格式的数据内容
if (Clipboard.HasFormat(CF_TEXT) or
Clipboard.HasFormat(CF_OEMTEXT)) then
begin
//处理剪贴板中内容
Caption:=Clipboard.asText;
end;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
//获得观察链中下一个窗口句柄
NextClipHwnd:=SetClipBoardViewer(Handle);
end;procedure TForm1.FormClose
(Sender: TObject; var Action: TCloseAction);
begin
//从观察链中删除本观察窗口
ChangeClipboardChain(Handle,NextClipHwnd);
//将WM_DRAWCLIPBOARD
消息传递到下一个观察链中的窗口
SendMessage(NextClipHwnd,WM_
CHANGECBCHAIN,Handle,NextClipHwnd);
end;end.
用它就可以了。
clipboard.assign(nil);
上面2句试过了,不管。