Delphi XE8でFiremonkeyアプリケーションでクリップボードに文字列をコピーする

Delphi XE8でFiremonkeyアプリケーションでクリップボードに文字列をコピーする方法を紹介します。

クリップボードを使用するには、IFMXClipboardServiceインターフェースを使用します。

アプリケーションを実行しているプラットフォームがIFMXClipboardServiceを利用可能かどうかを調べます。

var
  ClipboardService: IFMXClipboardService;

if TPlatformServices.Current.SupportsPlatformService(
  IFMXClipboardService, IInterface(ClipboardService)) then
begin
  //IFMXClipboardServiceが利用な可能なとき
end;

IFMXClipboardServiceが利用可能であれば、変数ClipboardServiceにIFMXClipboardServiceのインスタンスが入っています。

クリップボードに文字列をコピーするには、IFMXClipboardServiceのSetClipboardメソッドを使用します。

ClipboardService.SetClipboard('コピーする文字列');

クリップボードに文字列をコピーするコードは次のようになります。

uses FMX.Platform;

procedure TForm1.Button1Click(Sender: TObject);
var
  ClipboardService: IFMXClipboardService;
begin
  if TPlatformServices.Current.SupportsPlatformService(
    IFMXClipboardService, IInterface(ClipboardService)) then
  begin
    ClipboardService.SetClipboard('コピーする文字列');
  end;
end;

次のサンプルアプリケーションでは、アプリケーションを実行しているプラットフォームで利用できるディレクトリのパスを取得して、クリップボードにコピーします。

フォームにボタンコンポーネント(TButton)とメモコンポーネント(TMemo)を配置します。

03

フォームのOnCreateイベントと、ボタンのOnClickイベントを記述します。

uses System.IOUtils, FMX.Platform;

procedure TForm1.Button1Click(Sender: TObject);
var
  ClipboardService: IFMXClipboardService;
begin
  Memo1.SelectAll;

  if TPlatformServices.Current.SupportsPlatformService(
    IFMXClipboardService, IInterface(ClipboardService)) then
  begin
    ClipboardService.SetClipboard(Memo1.Text);
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Memo1.Lines.Add('System.IOUtils.TPath.GetLibraryPath='+System.IOUtils.TPath.GetLibraryPath);
  Memo1.Lines.Add('System.IOUtils.TPath.GetDocumentsPath='+System.IOUtils.TPath.GetDocumentsPath);
  Memo1.Lines.Add('System.IOUtils.TPath.GetHomePath='+System.IOUtils.TPath.GetHomePath);
  Memo1.Lines.Add('System.IOUtils.TPath.GetSharedAlarmsPath='+System.IOUtils.TPath.GetSharedAlarmsPath);
  Memo1.Lines.Add('System.IOUtils.TPath.GetPublicPath='+System.IOUtils.TPath.GetPublicPath);
  Memo1.Lines.Add('System.IOUtils.TPath.GetSharedDocumentsPath='+System.IOUtils.TPath.GetSharedDocumentsPath);
  Memo1.Lines.Add('System.IOUtils.TPath.GetDownloadsPath='+System.IOUtils.TPath.GetDownloadsPath);
  Memo1.Lines.Add('System.IOUtils.TPath.GetMoviesPath='+System.IOUtils.TPath.GetMoviesPath);
  Memo1.Lines.Add('System.IOUtils.TPath.GetMusicPath='+System.IOUtils.TPath.GetMusicPath);
  Memo1.Lines.Add('System.IOUtils.TPath.GetPicturesPath='+System.IOUtils.TPath.GetPicturesPath);
  Memo1.Lines.Add('System.IOUtils.TPath.GetRingtonesPath='+System.IOUtils.TPath.GetRingtonesPath);
  Memo1.Lines.Add('System.IOUtils.TPath.GetSharedDownloadsPath='+System.IOUtils.TPath.GetSharedDownloadsPath);
  Memo1.Lines.Add('System.IOUtils.TPath.GetSharedMoviesPath='+System.IOUtils.TPath.GetSharedMoviesPath);
  Memo1.Lines.Add('System.IOUtils.TPath.GetSharedMusicPath='+System.IOUtils.TPath.GetSharedMusicPath);
  Memo1.Lines.Add('System.IOUtils.TPath.GetSharedCameraPath='+System.IOUtils.TPath.GetSharedCameraPath);
  Memo1.Lines.Add('System.IOUtils.TPath.GetSharedPicturesPath='+System.IOUtils.TPath.GetSharedPicturesPath);
  Memo1.Lines.Add('System.IOUtils.TPath.GetSharedRingtonesPath='+System.IOUtils.TPath.GetSharedRingtonesPath);
end;

RAD Studio XE8のGetItでライブラリをインストールしてみる

RAD Studio XE8のGetItでBoostをインストールしてみました。

メニューの「ツール」→「GetIt…」を選択します。

01

GetItのウィンドウが表示されます。

02

「Boost 1.39 1.55」の「インストール」ボタンを押します。

03

ライセンスの画面が表示されます。

04

「すべて同意する」をクリックすると、インストーラのダウンロードが始まります。

05

ダウンロードが完了すると、インストーラが起動します。

06

見覚えのある画面が表示されます。

07

インストールするファイルのダウンロードが始まります。
かなり時間がかかりました。

08

09

10

11

コンポーネントのパスなどが追加されるため、RAD Studioの再起動が必要です。

12

13

再びGitItを開くと、インストール済みのライブラリはボタンが「インストール」から「アンインストール」に変わっていました。

14

Delphi XE7/C++Builder XE7のGlyFXアイコンの場所

Delphi XE7/C++Builder XE7のGlyFXのアイコンは、次の場所にあります。

C:\Program Files (x86)\Embarcadero\Studio\15.0\Images\GlyFX\glyFX.zip

Delphi XE7でOSのプラットフォームとバージョンを取得するには

System.SysUtilsユニットTOSVersionを使うと、プラットフォームとバージョンを取得することができます。

procedure TForm1.FormCreate(Sender: TObject);
var
  OSVersion: TOSVersion;
begin
  Memo1.Lines.Add(Format('Major=%d', [OSVersion.Major]));
  Memo1.Lines.Add(Format('Minor=%d', [OSVersion.Minor]));
  Memo1.Lines.Add(Format('Build=%d', [OSVersion.Build]));
  Memo1.Lines.Add(Format('Architecture=%d', [Ord(OSVersion.Architecture)]));
  Memo1.Lines.Add(Format('Name=%s', [OSVersion.Name]));
  Memo1.Lines.Add(Format('Platform=%d', [Ord(OSVersion.Platform)]));
end;

Nexus7(2013)(Android 5.0.2)

android

Max OS X

osx

Windows 8.1

win