delphi xe 使用剪贴板进行复制粘贴

以下内容转自:http://blog.qdac.cc/?p=4589

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;

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值