喫茶XRAYトップページ

[スレッド全体
]

[8375] Re6:814_コンテキストメニュー コンポーネント返信 削除
2015/1/8 (木) 16:10:31 sato
▼ Mr.XRAYさん

いろいろとご足労をおかけしてありがとうございました。
> http://mrxray.on.coocan.jp/Delphi/zip/ShellComponent_D7.zip
でも、私の環境ではTXTファイルが開けなかったので、しかたなく
ShellListViewのAutoNavigateをFalseにして、ダブルクリック時に
ShellExecuteで開くことにしました。
そうすると、またまた問題が。
ダブルクリックの対象がファイルの時はうまく開くのですが、フォルダーだと
うんともすんとも言わないので(当たり前田の...ですが)、しかたなく
ShellListViewのOnChangeでSelectedFolder.IsFolderがTrueなら、あわてて
AutoNavigateをTrueeにし、FalseならAutoNavigateをFalseにすると
見た目は、いけているようです。  こんなんでいいんですかね。
「動けば官軍」と教えられたもので......

つぎは、ColumnClickでのソートです。(これもやっかいそうですが)

>ただnotepad.exeやFilemaker.exeのプロセスは起動しています。
> これが気になりますね.

これは、私の力には負えません。


[8376] Re7:814_コンテキストメニュー コンポーネント返信 削除
2015/1/8 (木) 19:45:41 Mr.XRAY
▼ satoさん

> >ただnotepad.exeやFilemaker.exeのプロセスは起動しています。
> > これが気になりますね.
> これは、私の力には負えません。


う〜む.なんだべ?
最近何か悪いことしていません ?
ほら,職場の忘年会か新年会で,職場の若くて綺麗で可愛い女の子をホテルに
連れ込もうとして,ローヒールのかかとで殴られそうになったとか ?
(ん? それは私か ?)

覚えがない ? そうですか ?
それとも,そんなの関係ない ?


[8378] Delphi 付属のシエルコンポーネント返信 削除
2015/1/8 (木) 21:53:45 Mr.XRAY
▼ satoさん,ゴメンナサイ.
私が間違っていました.

> >ただnotepad.exeやFilemaker.exeのプロセスは起動しています。
> > これが気になりますね.


これですが,私のテストでは,.txt の関連付けしたアプリは,TEAD という
テキストエディタでした.ゴメンなさい.
先ほど メモ帳(Notepad.exe) でやってみたら,satoさんと同じ現象となりました.

これはですね.Vista 以降の現象ですね.多分(自信なし)
他にもあるかも知れません.


[8379] 付属のシエルコンポーネントは修正が必要返信 削除
2015/1/9 (金) 00:06:38 Mr.XRAY
分かりました.

> これはですね.Vista 以降の現象ですね.多分(自信なし)
> 他にもあるかも知れません.


ググってみたら,ありました.
昔からある現象のようです.DblClick 内での ShellExecute 関数の挙動のようです.
[Enter] キーはコンテキストメニューのコマンドを実行しているようです.
そこで,ShellCtrls.pas 内の以下のようにすれば,現在のところ OK のようです.
動作確認環境は前と同じです.

ShellCtrls.pas 等があるフォルダにパスを通さないと有効になりません.
バスを通して,修正したら,プロジェクトを再構築してください.


procedure TCustomShellListView.DblClick;
begin
  if FAutoNavigate and (Selected <> nil) then
    with Folders[Selected.Index] do
      if IsFolder then
        SetPathFromID(AbsoluteID)
      else
        ExecuteDefault;                                      //追加
//        ShellExecute(Handle, nil, PChar(PathName), nil,    //削除
//          PChar(ExtractFilePath(PathName)), 0);            //削除
  inherited DblClick;
end;


以下をヒントに修正コードを作成しました.

http://www.delphipages.com/forum/showthread.php?t=122681


[備考]
私自身は,Delphi 付属のシェルコンポーネントを使用していませんので,
気づきませんでした.
昔は,サードパーティ製を,今は自作のシェルコンポーネントを使用しています.
特定の Delphi のバージョン用ですので,公開の予定はありません.
サンプルプログラム集の [819] [820] が元となっているコンポーネントです.


前に UP したファイルですが,EXE を作成し直して再 UP しておきます.
http://mrxray.on.coocan.jp/Delphi/zip/ShellComponent_D7.zip


[8381] Re:付属のシエルコンポーネントは修正が必要返信 削除
2015/1/9 (金) 09:39:08 sato
▼ Mr.XRAYさん

ありがとうございました。
結局、
ShellListView1DblClickに書いた
ShellExecute(0,'open',PChar(PathName),nil,nil,SW_NORMAL);
では、notepadで開けて
ShellCtrls.pas 内の
 ShellExecute(Handle, nil, PChar(PathName), nil,PChar(ExtractFilePath(PathName)), 0);            //削除
では開けないということですね。(もう深く追求しないことにします)

教えていただいたように修正してバッチリ確認できました。
本当に助かりました。
以前は、伊藤隆志さんという方のシェルコンポーネントを使用していましたが、
Windows7でShellListViewにアイコンが表示されなくなり、フォルダとファイルの
区別がつかないということから始まった事件でした。
3日間も喫茶室を貸し切りにしていただき感謝の言葉もありません。
ありがとうございました、ヒゲの似合うマスター(?)へ。

[8383] Re2:付属のシエルコンポーネントは修正が必要返信 削除
2015/1/9 (金) 13:12:57 Mr.XRAY
▼ satoさん

> ShellCtrls.pas 内の
>  ShellExecute(Handle, nil, PChar(PathName), nil,PChar(ExtractFilePath(PathName)), 0);            //削除
> では開けないということですね。(もう深く追求しないことにします)


ですね.私もなぜなのかは追及しませんでした.
ShellExecute を単独で実行する分には成功するんですけどね.
[Enter] キーで Notepad.exe 等でテキストファイルを表示するので,
そのコマンドを実行するようにしてみたのです.

やってみてから,ネットを検索したら,そのようなことがあったんです.

> 3日間も喫茶室を貸し切りにしていただき感謝の言葉もありません。

こういうのは,皆さんの参考になると思います.
ここのお客様は,私と同じでおとなしい方々なのでチャチは入れませんが.

> ありがとうございました、ヒゲの似合うマスター(?)へ。

えっ!? スケベなじゃなくて .... ?
あっ,そうだ.今はヒゲないんです.ハハハッ.


[8380] Re:Delphi 付属のシエルコンポーネント返信 削除
2015/1/9 (金) 09:09:53 Mr.XRAY
> 他にもあるかも知れません.

ありましたね.
[TShellListView で複数ファイルのプロパティ参照や「送る」]
http://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+201006/10060017.txt

↑のスレッドにも DblClick の修正コードがありました.


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