喫茶XRAYトップページ

[スレッド全体
]

[4024] Re9:947_ExplorerBrowser の plExplorerFolderTreeにて返信 削除
2010/12/16 (木) 23:23:15 Mr.XRAY
▼ Saraさん,どうも

> plExplorerFolderTreeにOnMouseEnterイベントを発生させるには、
> どうすればよいでしょうか?


http://mrxray.on.coocan.jp/Delphi/plSamples/947_ExplorerBrowsert.htm#03
ですよね.
これは,
http://msdn.microsoft.com/en-us/library/bb774328%28v=VS.85%29.aspx
のリストの,INameSpaceTreeControlCustomDrawインターフェイスを
使用しています.

インターフェイスのリストから,使えそうなのを調べて,そのインターフェイス
を実装することになります.
ただし,インターフェイスの組合せによっては,正常に機能しない場合があります.

今,ちょっとみたところでは,
INameSpaceTreeControlEvents:
http://msdn.microsoft.com/en-us/library/bb761567%28v=VS.85%29.aspx

が使えそうですね.ここの
OnItemClick MethodのnsctsFlags [in]に
Indicates which button was clicked and the kind of click.
One of the following values:
という説明があります.

サンプルでは,

  TplCNameSpaceTreeControlHost = class(TInterfacedObject,
                                       INameSpaceTreeControlCustomDraw)

となっていますから,

  TplCNameSpaceTreeControlHost = class(TInterfacedObject,
                                       INameSpaceTreeControlCustomDraw,
                                       INameSpaceTreeControlEvents)
として,このINameSpaceTreeControlEventsの定義のところを開いて,
([Ctrl]+クリックでShlObj.pasの定義のところを開く)
メソッド(関数類)を全て実装します.インターフェイスでは,必要な関数だけを
実装するということはできません.全てです.
戻り値は,とりあえず,Result := S_OK などとしておいて,
MSDNの英語の記事を解読しながら,作成していくことになります.


[4025] Re10:947_ExplorerBrowser の plExplorerFolderTreeにて返信 削除
2010/12/16 (木) 23:29:23 Mr.XRAY
> 戻り値は,とりあえず,Result := S_OK などとしておいて,

イベントの検出だけですから,MSDNの該当関数の説明を全て読んだわけでは
ないですが,何もすることはないようなきがします.
(Result := S_OKでいいという意味です)

Result := E_NOTIMPL;
という,何もしないというのもあります.


[4026] Re10:947_ExplorerBrowser の plExplorerFolderTreeにて返信 削除
2010/12/16 (木) 23:37:25 Mr.XRAY
> として,このINameSpaceTreeControlEventsの定義のところを開いて,
> ([Ctrl]+クリックでShlObj.pasの定義のところを開く)
> メソッド(関数類)を全て実装します.


釈迦に説法になってしまうと思いますが,定義してある関数のコードを,
全てコピーして,自分のプロジェクトのところに貼り付け,後は,
[Ctrl]+ [Shift] + [C]
で一揆に実装部を作ってしまうと便利です.


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