クリップボード / ペーストボードを使用するには?

VCL の場合だと、Clipborad() を使ってクリップボードを操作できましたが、FireMonkey では TPlatformServicesIFMXClipboardService を問い合わせることによって取得できます。

uses
  ..., FMX.Platform;


// 現在のクリップボードの内容を Edit1 に表示
var
  ClipboardService: IFMXClipboardService;
begin
  if TPlatformServices.Current.SupportsPlatformService(IFMXClipboardService, IInterface(ClipboardService)) then
    Edit1.Text := ClipboardService.GetClipboard.AsString
  else  
    Edit1.Text := '';
end;  

uses
  ..., FMX.Platform;


// 現在のクリップボードの内容を Edit1 に表示
var
  ClipboardService: IFMXClipboardService;
begin
  if TPlatformServices.Current.SupportsPlatformService(IFMXClipboardService, IInterface(ClipboardService)) then
    ClipboardService.SetClipboard(Edit1.Text);
end;

最初からサービスが利用可能だと判明している場合には TPlatformService のクラスメソッドを使って少し短く、かつ簡潔に記述できます。

uses
  ..., FMX.Platform, uPlatformService;


// 現在のクリップボードの内容を Edit1 に表示
var
  Clipboard: IFMXClipboardService;
begin
  Clipboard := TPlatformService.Get<IFMXClipboardService>;
  Edit1.Text := Clipboard.GetClipboard.AsString;
end;

uses
  ..., FMX.Platform, uPlatformService;


// Edit1 の内容をクリップボードに入れる
var
  Clipboard: IFMXClipboardService;
begin
  Clipboard := TPlatformService.Get<IFMXClipboardService>;
  Clipboard.SetClipboard(Edit1.Text);
end;

XE2 の場合には 、PlatForm 変数GetClipBoard() / SetClipBoard() でクリップボードを操作できます。

uses
  ..., FMX.Platform;

  // 現在のクリップボードの内容を Edit1 に表示
  Edit1.Text := Platform.GetClipboard;

uses
  ..., FMX.Platform;

  // Edit1 の内容をクリップボードに入れる
  Platform.SetClipboard(Edit1.Text);

※ Platform 変数は XE3 (FM2) 以降では使えません。

See Also:


 BACK