FileDrag中のMouseEnter


テストマン  2006-10-16 10:07:26  No: 23580

初めて質問させて頂きます。

TGraphicControlから継承したコンポーネントを作成中なのですが、
外からのFileDropを受け付けるようにしたいと思っています。

ファイルをDrag中のマウスカーソルがコンポーネント上に来た場合に
表示を一部変更したく(Drop可能を示すように色を変更する等)、
CMMouseEnter、CMMouseLeaveを
拾って処理させてみたのですが、これだけですとファイルのDrag等は関係なく
マウスがコンポーネント上に来ただけでメッセージを拾ってしまいます。

そこで、ファイルのD&Dでもマウスがキャプチャされているのでは?と考え
MouseEnter内でGetCaptureを試してみましたが上手くいきませんでした。

////
procedure TTestCmp.CMMouseEnter(var Message: TMessage);
var
  mc : HDC;
begin
  mc := getCapture;
  if mc <> 0 then MouseOverFlg := true;
  Repaint; // paintメソッド内で上記フラグを見て描画を変更
end;

MouseOver等で色々調べてみてはいるのですが上手い方法が見つかりません。
ファイルをDrag中の状態でのMouseOverに該当するイベント、もしくは
MouseEnter時のイベント内でファイルをDrag中かどうか判断する方法は
ありませんでしょうか?
宜しくご教授下さい。


かみづ  2006-10-17 09:04:55  No: 23581

TWinControlの派生コンポーネントであれば、DragAcceptFilesを使え
ばいいと思いますが、TGraphicControlの場合どうすればいいんでしょうね。

そもそもファイルはどうやって受け取るのでしょうか?


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加