在你的跨平台应用中使用剪贴板进行复制粘贴

[FMX]在你的跨平台应用中使用剪贴板进行复制粘贴

2017-08-10 ? AndroidC++ BuilderDelphiiOS教程 ? 暂无评论 ? swish ?浏览 681 次

VCL 中如何使用剪贴板咱就不说了,FMX 做为一个新的框架,提供了跨平台的剪贴板支持。FMX 对剪贴板的支持来自两个接口:

  • IFMXClipboardService:位于 FMX.Platform.pas 中

    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;

  • IFMXExtendedClipboardService:位于 FMX.Clipboard.pas 中

    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 为准,未来版本请自行查看):

  1. Windows 平台(FMX.Clipboard.Win.pas):文本、位图
  2. Android 平台(FMX.Clipboard.Android.pas):文本
  3. iOS 平台(FMX.Clipboard.iOS.pas):文本、位图
  4. OSX 平台(FMX.Clipboard.Mac.pas):文本、位图

注意一下,支持位图的平台,实际上 TValue 支持的是 TBitmapSurface,当然设置值时也支持 TBitmap ,但 GetClipboard 返回的就只是 TBitmapSurface 类型的对象了。

好了,回归正转,说一下基本的使用步骤:

  1. 引用 fmx.platform 单元,如果使用第二个接口,同时使用 fmx.clipboard 单元。
  2. 用  TPlatformServices.Current.SupportsPlatformService 函数来获取剪贴板服务接口实例。
  3. 调用获取的接口实例的相关函数来执行相关的功能。

一个简单的示例:

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;

至于其它的几个接口,大家看相关接口的帮助就可以了。

FMXWindows剪贴板

原创文章转载请注明:转载自:[FMX]在你的跨平台应用中使用剪贴板进行复制粘贴

原文地址:https://www.cnblogs.com/westsoft/p/8975855.html

时间: 2024-08-11 23:44:23

在你的跨平台应用中使用剪贴板进行复制粘贴的相关文章

[FMX]在你的跨平台应用中使用剪贴板进行复制粘贴

[FMX]在你的跨平台应用中使用剪贴板进行复制粘贴 2017-08-10 ? Android.C++ Builder.Delphi.iOS.教程 ? 暂无评论 ? swish ?浏览 516 次 VCL 中如何使用剪贴板咱就不说了,FMX 做为一个新的框架,提供了跨平台的剪贴板支持.FMX 对剪贴板的支持来自两个接口: IFMXClipboardService:位于 FMX.Platform.pas 中 1 2 3 4 5 6 7 8 9 10 11 IFMXClipboardService =

解决Fedora中由于clipit导致复制/粘贴无法使用问题

在Fedora中clipit用于剪贴板管理使用之后,爱不释手. 但是,最进发现由于clipit导致复制/粘贴无法使用问题. 卸载了clipit就可以,正常在桌面使用复制/粘贴 若是要继续使用clipit 可以使用https://github.com/rainsome/myutils/blob/master/clipitrc 替换 ~/.config/clipit/clipitrc 文件 重启clipit既可以正常使用复制/粘贴 原文地址:http://blog.51cto.com/200355/

delphi edit 中undo 和clearundo 复制粘贴等总结

edit 和memo都有undo功能, Undo:恢复到改动前. ClearUndo:撤销掉Undo缓冲区的内容,则将无法恢复到改动前的 从该文本框的撤销缓冲区中清除关于最近操作的信息,根据应用 程序的状态,可以使用此方法防止重复执行撤销操作.调用的一般格式如下: 文本框对象.ClearUndo()该方法无参数. 撤销编辑框所选内容删除写法: edt1.Undo; 彻底删除无法撤销的写法: edt1.ClearSelection;edt1.ClearUndo; 删除选择的内容: edt1.Cle

使用C# 将Excel1 中sheet1 的数据复制粘贴到Excel2中的sheet2

最近在项目中有这个需求, 在网上找的资料哦也有限 . 最开始想的是用openxmlsdk  只能在同一个Excel表中数据复制! 1.使用openxml sdk 复制Excel 中Sheet1 的数据到sheet2: 1 /// <summary> 2 ///使用openxmlsdk 转换数据 原理是通过CloneNode克隆 目前只完成同表之间的全部复制! 3 /// </summary> 4 /// <param name="path">Exce

关于在WP8.1中使用剪贴板的问题

熟悉WindowsPhone8.0和WindowsPhone8.1开发的朋友都应该很清楚,在windowphone8.0的 开发时代下,我们可以很轻松的使用系统提供的API进行简单的文本拷贝和复制.但是,到了WindowsPhone8.1时代,情况却大不相同,微软竟然把这个API接口给阉割了,这令很多开发者所发指,说实话,我也是很无语的,还好在即将到来的Windows10中,微软又为开发者加上了这个API接口方便开发者进行使用.在本文中,笔者主要讲述在WindowsPhone8.1下该如何解决无

【vim小小记】vim的复制粘贴(包括系统剪贴板)

1.vim常用复制粘贴命令 Vim的复制粘贴命令无疑是y (yank),p(paster),加上yy,P PS: vim有个很有意思的约定(我觉得是一种约定),就是某个命令的大小写都是实现某种功能,只是方向不同,比如: w 跳转到下个word,W:跳转到上个word f 某行正向查找并跳转 F: 反向.... 然后部分双写的字母有行操作: yy 复制一行 dd 删除一行 所以, p就是在当前光标后粘贴,P就是在当前光标前粘贴 另外,说完p,其实还有几个命令有时也是很有用的 gp,和p的功能基本一

Android中的复制粘贴

The Clipboard Framework 当使用clipboard framework时,把数据放在一个剪切对象(clip object)里,然后这个对象会放在系统的剪贴板里. clip object可以有三种形式: Text:文字字符串. 文字是直接放在clip对象中,然后放在剪贴板里:粘贴这个字符串的时候直接从剪贴板拿到这个对象,把字符串放入你的应用存储中. URI:一个Uri 对象. 表示任何形式的URI.这种形式主要用于从一个content provider中复制复杂的数据. 复制

Android 复制 粘贴 剪贴板的使用 ClipboardManager

Copy and Paste 版本:Android 4.0 r1 快速查看 用于复制粘贴数据的基于剪贴板的框架. 同时支持简单和复杂的数据,包括文本串.复杂的数据结构.文本和二进制流数据.程序 asset. 直接从剪贴板复制粘贴简单文本. 用content provider复制粘贴复杂数据. 需要API 11版本. 在本文中 剪贴板框架 剪贴板类 ClipboardManager ClipData.ClipDescription和ClipData.Item ClipData常用方法 将剪贴板中数

在CMD命令行和PowerShell中实现复制粘贴功能

在CMD命令行和PowerShell中实现复制粘贴功能 经常使用命令行或者PowerShell的朋友肯定会遇到这种情况:粘贴文本很简单,右键--选择粘贴即可,但是想要复制命令行或者PowerShell中的命令,倒是不知道怎么办了.其实只需要更改其属性. PS:PowerShell是基于任务的命令行外壳,这里和CMD命令行设置一样. 左键点击CMD处理程序左上角,选择属性.(或者按下Alt+空格). 选中快速编辑模式,点击确定. 这时,我们可以选择命令行中的文本了. 在新命令行中双击右键,即可实现