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)を配置します。
フォームの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;