初めて質問させて頂きます。
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中かどうか判断する方法は
ありませんでしょうか?
宜しくご教授下さい。
TWinControlの派生コンポーネントであれば、DragAcceptFilesを使え
ばいいと思いますが、TGraphicControlの場合どうすればいいんでしょうね。
そもそもファイルはどうやって受け取るのでしょうか?
ツイート | ![]() |