ドラッグアンドドロップの情報を受け取るには?

解決


灼熱  2006-07-19 02:09:05  No: 22658

こんにちわ。
単にエクスプローラーからドラッグアンドドロップの情報を受け取る
方法は、分かります。分からないのは、
1.フォームの上に複数のボタンを用意します。
2.エクスプローラーから、あるボタンに向かって
    ドロップしたときに、そのボタンのキャプションにファイル名称を
    設定したいのです。
いろいろやってみましたが、どのボタンの上でドロップされたのかが、
取得できませんでした。
どなたかお願いしいます。


deldel  2006-07-19 18:05:18  No: 22659

var
  saFileName: AnsiString;
  Pos: TPoint;
  Contr: TControl;
begin
  //ファイルがドロップされたときのマウスカーソルの位置を取得
  DragQueryPoint(Msg.Drop, Pos);

  //マウスカーソル上のコントロールを取得
  Contr := FindDragTarget(ClientToScreen(Pos), False);

  if Contr = Button1 then begin
    //ドロップされたファイルの名前を取得
    SetLength(saFileName, MAX_PATH);
    DragQueryFile(Msg.Drop, 0, PChar(saFileName), MAX_PATH + 1);
    SetLength(saFileName, StrLen(PChar(saFileName)));

    Button1.Caption := saFileName;
  end;

  //ドラッグ&ドロップ用メモリ解放
  DragFinish(Msg.Drop);
end;


灼熱  2006-07-19 19:13:18  No: 22660

ありがとうございます。

////マウスカーソル上のコントロールを取得
//  Contr := FindDragTarget(ClientToScreen(Pos), False);
なるほど、こ〜やって取得すればできるんですね。
まだまだ勉強不足です。
助かりました。


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

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






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