nao さん
こんにちは
細川です。
かなり遅レスですが…
> 表題のようにFiremonkeyでエクスプローラーからのファイルを
> Formにドラグアンドドロップしてwm_dropfilesをhookすることは可能でしょうか?
WM_DROPFILES を使う必要があれば、記事を参考にした WindowProc を置き換えるのが一番簡単です。
そうではなく、単純に Drag & Drop を受取りたいのであれば、もっと簡単な方法があります。
TCommonCustomForm は Drag & Drop の機構を持っているので、その処理を override して変更します。
具体的には下記の様に DragOver, DragDrop メソッドを定義してその中でやりたいことをします。
----------
TForm1 = class(TForm)
public
procedure DragOver(
const Data: TDragObject;
const Point: TPointF;
var Operation: TDragOperation); override;
procedure DragDrop(const Data: TDragObject; const Point: TPointF); override;
end;
procedure TForm1.DragDrop(const Data: TDragObject; const Point: TPointF);
begin
inherited;
// ドロップされたファイルの一覧を表示
for var F in Data.Files do
Memo1.Lines.Add(F);
end;
procedure TForm1.DragOver(
const Data: TDragObject;
const Point: TPointF;
var Operation: TDragOperation);
begin
inherited;
// TDragOperation.None 以外を指定する
Operation := TDragOperation.Copy;
end;
----------
FireMonkey のコントロールは OS から見て「ただの絵」です。
ですのですべてのイベントは一旦 Form を通ります。
なので、TForm のメソッドを override するとすべての処理をフックできます。
> Dragを認識するエリアが何故か狭かったり(左上の1/4くらいですかね)する
これは 10.4 の High Resolution 対応が中途半端だったせいで 11.0 では修正されています(別の問題が起こっていますが…)
2022年4月30日(土) 14:24 nao <
jake....@gmail.com>:
> --
> このメールは Google グループのグループ「Japan RAD Studio User Group」に登録しているユーザーに送られています。
> このグループから退会し、グループからのメールの配信を停止するには
radstudio-jp...@googlegroups.com にメールを送信してください。
> このディスカッションをウェブ上で閲覧するには
https://groups.google.com/d/msgid/radstudio-jp/4987f8c6-5f30-4bfc-ae8f-eac87632efa4n%40googlegroups.com にアクセスしてください。