喫茶XRAYトップページ

[スレッド全体
]

[4096] Re6:plExplorerFolderTreeにて返信 削除
2010/12/27 (月) 22:48:34 Sara
▼ Mr.XRAYさん こんばんは

> procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
>
> すみません。これにメッセージが返ってきませんが・・・


ちなみに、
procedure TplExplorerFolderTreeThread.MessageLoop;

    DispatchMessage(Amsg);
    Application.ProcessMessages;
とすると、メッセージが返ってきます・・・終了できなくなりますが・・・(^^;

あと、面白いことに、WM_MOUSEMOVEだけ検出してみると、plExplorerFolderTree
のアイテム上でしか、WM_MOUSEMOVEが検出されないようです。
(背景の白い部分や、他のコンポーネント上は未検出)



[4097] Re7:plExplorerFolderTreeにて返信 削除
2010/12/27 (月) 22:54:05 Mr.XRAY
▼ Saraさん

> > procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
> >
> > すみません。これにメッセージが返ってきませんが・・・


今ちょっとやってみました.
はは〜ん,おそらく,こういうことではないかと思います.
このApplicationのOnMessageはコードでも作成できますが,
TApplicationコンポーネントというのがあります.これを使用してください.
この方が簡単です.[4085]参照

とりあえず,ここの部分だけ


[4098] Re8:plExplorerFolderTreeにて返信 削除
2010/12/27 (月) 23:01:02 Mr.XRAY
ちょっと待ってください.
今,やったら,フォルダツリーからのメッセージが来ません.
表示前なら来るのですが.


[4099] Re9:plExplorerFolderTreeにて返信 削除
2010/12/27 (月) 23:12:17 Sara
▼ Mr.XRAYさん
> ちょっと待ってください.
> 今,やったら,フォルダツリーからのメッセージが来ません.
> 表示前なら来るのですが.


そうなんですよね・・・

で、ちょっと試しに

//  if FThread = nil then begin
//    FThread := TplExplorerFolderTreeThread.Create;
//  end;

としてみたんです・・・すると・・・メッセージきますね・・・
処理も正常に動いているっぽいんですが・・・
(フォルダ追加、削除にちゃんと追従しますし)
このスレッドっていったい・・・(^^;

[4100] Re10:plExplorerFolderTreeにて返信 削除
2010/12/27 (月) 23:16:35 Mr.XRAY
▼ Saraさん

> (フォルダ追加、削除にちゃんと追従しますし)
> このスレッドっていったい・・・(^^;


ファイルかフォルダの名前を変更してみてください.
[F2]でも,マウスを静かにクリックでも.


[4101] Re11:plExplorerFolderTreeにて返信 削除
2010/12/27 (月) 23:24:34 Mr.XRAY
▼ Saraさん

やっぱりローカルフックでないと無理ですね.

7−2 ローカルフック : WH_GETMESSAGE
http://mrxray.on.coocan.jp/Halbow/VCL07.html

のList 3

でやってみました.OKです.
これが一番簡単でしょう.




[4102] Re12:plExplorerFolderTreeにて返信 削除
2010/12/27 (月) 23:27:16 Mr.XRAY
一応コードです.

var
  Hook: HHOOK;

function GetMsgProc(code:integer;wparam:WPARAM;lparam:LPARAM):LRESULT;stdcall;
var
  Msg: PMsg;
begin
  if (code < 0) then begin
    result := CallNextHookEx(Hook,code,wparam,lparam);
    exit;
  end;

  if (code = HC_ACTION) then begin
    Msg := PMsg(lparam);
    case Msg^.message of
      WM_MOUSEMOVE:begin
       if wparam = PM_REMOVE then
          //処理
      end;
    end;
  end;

  result := CallNextHookEx(Hook,code,wparam,lparam);
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  Hook := SetWindowsHookEx(WH_GETMESSAGE,GetMsgProc,0,GetCurrentThreadID);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  UnHookWindowsHookEx(Hook);
end;



[4103] Re11:plExplorerFolderTreeにて返信 削除
2010/12/27 (月) 23:33:11 Sara
▼ Mr.XRAYさん
> ▼ Saraさん
>
> > (フォルダ追加、削除にちゃんと追従しますし)
> > このスレッドっていったい・・・(^^;
>
> ファイルかフォルダの名前を変更してみてください.
> [F2]でも,マウスを静かにクリックでも.


なるほど・・・F2だと、フォーカスに関係なく別な処理が割り当てられていると
そちらにいってしまいますね・・・クリックならなんとか変更可能ですが、
矢印キーが使えないですね・・・マウスと併用なら何とか変更可ですが・・・
使いづらい・・・(^^;

しかし、このスレッドがあると、F2がフォーカスに関係なくplExplorerFolderTreeに
持って行かれますね・・・
っていうか キーボードー系のイベントが全て持って行かれる?・・・(^^;

これは、困った・・・

[4104] Re12:plExplorerFolderTreeにて返信 削除
2010/12/27 (月) 23:43:12 Mr.XRAY
▼ Saraさん

> しかし、このスレッドがあると、F2がフォーカスに関係なくplExplorerFolderTreeに
> 持って行かれますね・・・
> っていうか キーボードー系のイベントが全て持って行かれる?・・・(^^;
>
> これは、困った・・・


「弊社としてましては,この現象を認識しています.
これは,エクスプローラーのオブジェクトを正常に動作させるための仕様
と認識しています.
お客様は,仕様の範囲内でのご利用をお勧めいたします」

という感じの文章を,とあるサイトでよく見かけます.
フォルダビュー(ファイルリスト)だと,TranslateAcceleratorという関数が
あり,この現象をある程度回避できるんですけどね.


[4105] Re13:plExplorerFolderTreeにて返信 削除
2010/12/28 (火) 00:34:37 Sara
▼ Mr.XRAYさん

> という感じの文章を,とあるサイトでよく見かけます.
> フォルダビュー(ファイルリスト)だと,TranslateAcceleratorという関数が
> あり,この現象をある程度回避できるんですけどね.


なるほど、参考になります・・・

なにかできないか、調べてみますm(_ _)m

[4106] マウスだけの操作たったらマウスフック返信 削除
2010/12/28 (火) 13:15:49 Mr.XRAY
▼ Saraさん

マウスの動作だけの操作が対象であれば,
マウスの,ローカルフックでいいのではないかと思います.


[4109] Re14:plExplorerFolderTreeにて返信 削除
2010/12/28 (火) 20:24:50 Sara
▼ Mr.XRAYさん
 
> > フォルダビュー(ファイルリスト)だと,TranslateAcceleratorという関数が
> > あり,この現象をある程度回避できるんですけどね.

 
> なにかできないか、調べてみますm(_ _)m

というわけで、強引な方法で解決策を作ってみました・・・(^^;
この方法で問題ないかどうかは、まだ何とも言えませんが、
今のところ、問題なく動いているようです。(^^;

で、具体的に何をしたかですが・・・(あまり言いたくないかも・・・)

plExplorerFolderTreeにマウスカーソルが入った時に、FThreadをCreateして
マウスが出た時に、FThreadをTerminateしましたとさ・・・

問題がでなければ、この方法で進んでみます。(^^;;

[4110] Re15:plExplorerFolderTreeにて返信 削除
2010/12/28 (火) 23:59:30 Mr.XRAY
▼ Saraさん

> plExplorerFolderTreeにマウスカーソルが入った時に、FThreadをCreateして
> マウスが出た時に、FThreadをTerminateしましたとさ・・・


なるほど....
 
> 問題がでなければ、この方法で進んでみます。(^^;;

了解しました.
では,がんばってくたさい (^^)


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82