delphi xe10 中使用剪贴板(跨平台)
VCL 中如何使用剪贴板咱就不说了,FMX 做为一个新的框架,提供了跨平台的剪贴板支持。FMX 对剪贴板的支持来自两个接口:
- IFMXClipboardService:位于 FMX.Platform.pas 中
1234567891011IFMXClipboardService = 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;
- IFMXExtendedClipboardService:位于 FMX.Clipboard.pas 中
123456789101112131415IFMXExtendedClipboardService = 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 为准,未来版本请自行查看):
- Windows 平台(FMX.Clipboard.Win.pas):文本、位图
- Android 平台(FMX.Clipboard.Android.pas):文本
- iOS 平台(FMX.Clipboard.iOS.pas):文本、位图
- OSX 平台(FMX.Clipboard.Mac.pas):文本、位图
注意一下,支持位图的平台,实际上 TValue 支持的是 TBitmapSurface,当然设置值时也支持 TBitmap ,但 GetClipboard 返回的就只是 TBitmapSurface 类型的对象了。
好了,回归正转,说一下基本的使用步骤:
- 引用 fmx.platform 单元,如果使用第二个接口,同时使用 fmx.clipboard 单元。
- 用 TPlatformServices.Current.SupportsPlatformService 函数来获取剪贴板服务接口实例。
- 调用获取的接口实例的相关函数来执行相关的功能。
一个简单的示例:
|
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;
|
至于其它的几个接口,大家看相关接口的帮助就可以了。
delphi xe10 中使用剪贴板(跨平台)的更多相关文章
- [FMX]在你的跨平台应用中使用剪贴板进行复制粘贴
[FMX]在你的跨平台应用中使用剪贴板进行复制粘贴 2017-08-10 • Android.C++ Builder.Delphi.iOS.教程 • 暂无评论 • swish •浏览 516 次 VC ...
- [原创]Delphi XE10 dxLayoutControl 控件应用指南
DevExpress VCL套件是一套非常强大的界面控件,可惜关于Delphi开发方面的说明太少,有些控件使用起来一头雾水,不知从何下手.本节详细介绍在Delphi Xe10 Seattle中如何利用 ...
- 【转】Delphi XE10 Android Splash设备自适应和沉浸式状态条
再次提笔写博客,已经相隔7年,原来的CSDN账号需要手机验证,而我的手机又捆绑到这个账号了,就用新账号吧,不想折腾了. 原账号的帖子,有研究DICOM3.0的可以看下:http://blog.csdn ...
- Delphi XE10 dxLayoutControl 控件应用指南
https://www.cnblogs.com/Bonny.Wong/p/7440288.html DevExpress VCL套件是一套非常强大的界面控件,可惜关于Delphi开发方面的说明太少,有 ...
- Delphi XE10.1 引用计数
以往的Delphi版本,不支持接口的Weak,和UnSafe的引用,支持对象的Weak, UnSafe,而且仅在Android和Ios平台上支持. 现在Delphi XE10.1 Berlin终于 ...
- 运行Delphi XE10的MongoDB例程,测试Delphi插入记录性能
Delphi XE10支持MongoDB的数据库,提供了个例子restaurants可批量导入数据. 本文对比Delphi例子与MongoDB自带的mongoimport导入批量数据的性能. 步骤: ...
- Delphi XE10.1 引用计数(Delphi XE10.1 Berlin终于增加了对接口的Weak, UnSafe的支持)
以往的Delphi版本,不支持接口的Weak,和UnSafe的引用,支持对象的Weak, UnSafe,而且仅在Android和Ios平台上支持. 现在Delphi XE10.1 Berlin终于增加 ...
- delphi项目中的modelsupport文件夹
delphi项目中的modelsupport文件夹 今天写着写着突然发现多了一个这个文件夹..苦思不得其解 看着又难受 删了又重建 终于找到了 存此备查;Tools--option--toget ...
- 咏南中间件+开发框架支持最新的DELPHI XE10.1(BERLIN) UPDATE1
咏南中间件+开发框架支持最新的DELPHI XE10.1(BERLIN) UPDATE1 购买提供:中间件源码,价格十分优惠!有意者请向本人索取演示程序! 附带福利(赠送): CS开发框架源码BS开发 ...
随机推荐
- HDU-4568 TSP+最短路
题意:给一个n行m列的矩阵,矩阵上的数字代表经过代价(这里要注意每经过一次都要付出代价),矩阵上有几个宝藏,猎人可以从任意边界进去矩阵取完所有宝藏后从任意边界出来. 解法:一看到宝藏数量小于等于13且 ...
- Dubbo---注册中心
1.Multicast 注册中心 1.1 Multicast 注册中心 不需要启动 任何中心节点,只要广播地址一样,就可以互相发现. 1.2 1.3 配置 2.zookeeper 注册中心( ...
- MySQL - 两种存储引擎 (MyISAM PK InnoDB) + MVCC
总结 1.两种存储引擎各有各的有点,MyISAM专注性能,InnoDB专注事务.两者最大的区别就是InnoDB支持事务,和行锁. 2.InnoDB采用MVCC(Multi-Version Concur ...
- 后端异步接口url
/wp-common/products.php?term_id=4&page=1 var currentAjax; var total = 0; function getAjaxData(te ...
- IntelliJ IDEA2016.1 + maven 创建java web 项目[转]
最近开始使用idea 来写java项目了,这个很流行,相比Eclipse方便了很多.功能多了,相对应的使用的复杂度也较高了,因为网上很多的使用和创建项目的简单教程,都是基于老版本的,每个新版本都有不一 ...
- Work 4(通知类) (2019.04.25)
- 高级运维(一):反向代理&使用Varnish加速Web
案例1.反向代理 目标: 1.代理服务器可以将远程的Web服务器页面缓存于本地 2.代理服务器端口设置为80端口 3.用户通过访问代理服务器即可获得远程Web服务器页面上的内容 4.远程We ...
- Linux环境下安装PHP的mbstring模块
cd /home/local/php-5.6.25/ext/mbstring/usr/local/php/bin/phpize./configure --with-php-config=/usr/lo ...
- go指定分隔符格式化时间
一.代码 package main import ( "fmt" "strings" "strconv" "time" ...
- NX二次开发-NXOpen::CoordinateSystemCollection Class Reference
NX11+VS2013 #include <NXOpen/Section.hxx> #include <NXOpen/SectionCollection.hxx> #inclu ...