掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Listviewからドラッグ&ドロップするには。 (ID:34677)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
環境はWindows XP Delphi6 Personalです。 メインFormにListboxと 動的に作成するListview(エクスプローラの詳細表示と同じようなファイルリスト) があります。(作成時にListview.DragMode:=dmAutomatic;) ListboxへドロップしたときとFormへドロップしたときの処理を分けています。 いろいろ参考サイトを探して下記のようにしています。 自分の能力ではなくコピペです。 エクスプローラからのドラッグ&ドロップは旨く行きます。 しかし、Form上のListviewからファイルリストをドラッグ&ドロップ出来ません。 道路標識の通行止めのようなマークがでます。 参考サイトもエクスプローラからのドロップ例で、解決できません。 Listviewから選択した行(ファイル)をドラッグドロップする方法を教えて頂けないでしょうか。 よろしくお願いいたします。 private //------------ドラッグドロップのフック関数変数 ListBox3OldProc: TWndMethod; Form1OldProc: TWndMethod; //---------------------------------- procedure ListBox3NewProc(var message: TMessage); procedure Form1NewProc(var message: TMessage); procedure TForm1.FormCreate(Sender: TObject); Form1OldProc := Form1.WindowProc;// 以前のプロシージャを保存 Form1.WindowProc := Form1NewProc;// 新しいプロシーシャをセット DragAcceptFiles(Form1.Handle, True);// ファイル受け取りの登録 ListBox3OldProc := ListBox3.WindowProc;// 以前のプロシージャを保存 ListBox3.WindowProc := ListBox3NewProc;// 新しいプロシーシャをセット DragAcceptFiles(ListBox3.Handle, True);// ファイル受け取りの登録 end; //フォームへのドロップを受け取る procedure TForm1.Form1NewProc(var message: TMessage); begin if message.Msg = WM_DROPFILES then begin // WM_DROPFILES の処理を横取りする ・・省略 end; //Listboxへのドロップを受け取る procedure TForm1.ListBox3NewProc(var message: TMessage); begin if (message.Msg = WM_DROPFILES) and (ListBox3.Visible=true) then begin // WM_DROPFILES の処理を横取りする ・・・省略 end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.