VCL 中如何使用剪贴板咱就不说了,FMX 做为一个新的框架,提供了跨平台的剪贴板支持。FMX 对剪贴板的支持来自两个接口:
1
2
3
4
5
6
7
8
9
10
11
|
IFMXClipboardService = interface(IInterface)
[‘{CC9F70B3-E5AE-4E01-A6FB-E3FC54F5C54E}‘]
/// <summary>
/// Gets current clipboard value
/// </summary>
function GetClipboard: TValue;
/// <summary>
/// Sets new clipboard value
/// </summary>
procedure SetClipboard(Value: TValue);
end;
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
IFMXExtendedClipboardService = interface(IFMXClipboardService)
[‘{E96E4776-8234-49F9-B15F-301074E23F70}‘]
function HasText: Boolean;
function GetText: string;
procedure SetText(const Value: string);
function HasImage: Boolean;
function GetImage: TBitmapSurface;
procedure SetImage(const Value: TBitmapSurface);
procedure RegisterCustomFormat(const AFormatName: string);
function IsCustomFormatRegistered(const AFormatName: string): Boolean;
procedure UnregisterCustomFormat(const AFormatName: string);
function HasCustomFormat(const AFormatName: string): Boolean;
function GetCustomFormat(const AFormatName: string; const AStream: TStream): Boolean;
procedure SetCustomFormat(const AFormatName: string; const AStream: TStream);
end;
|
很明显,第二种更符合VCL中TClipboard的使用习惯。而且如果要使用自定义格式的内容,则必需使用第二种格式,第一种格式的支持情况如下(以10.2 为准,未来版本请自行查看):
注意一下,支持位图的平台,实际上 TValue 支持的是 TBitmapSurface,当然设置值时也支持 TBitmap ,但 GetClipboard 返回的就只是 TBitmapSurface 类型的对象了。
好了,回归正转,说一下基本的使用步骤:
一个简单的示例:
1
2
3
4
5
6
7
8
9
|
procedure TForm1.Button1Click(Sender: TObject);
var
AClipboard:IFMXClipboardService;
begin
if TPlatformServices.Current.SupportsPlatformService(IFMXClipboardService,AClipboard) then
begin
AClipboard.SetClipboard(‘Hello,world from delphi‘);
end;
end;
|
至于其它的几个接口,大家看相关接口的帮助就可以了。
原文:https://www.cnblogs.com/guorongtao/p/11137080.html