掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
オープンダイアログの初期値を設定するには? (ID:21818)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
いつか役に立つかもしれないで、ちょっと調査してみました。 Googleのキャッシュから拾ってくると(ほかでは見つからず) > CDN_INITDONE ではListViewのウィンドウハンドルが得られない様 とのことで、FolderChange イベントで実行することにしました。 「レポート(詳細)表示」については、「かみづ」さんと「えーとね」の回答と同じ手順で行います。 また、並べ替えは、カラムをクリックしたことにして、昇順・降順で表示します。 たぶん、uses に Commctrlが追加で必要。 フォームにOpenDialogを一個置いて、OnFolderChangeイベントを記述します。 procedure TForm1.OpenDialog1FolderChange(Sender: TObject); var fhShellDll, fhListVw: HWND; wmNotify: TWMNotify; hdNotify: THDNotify; begin fhShellDll := FindWindowEx(GetParent(OpenDialog1.Handle), 0, 'SHELLDLL_DefView', nil); if fhShellDll <> 0 then begin {詳細表示} SendMessage(fhShellDll, WM_COMMAND, $702c, 0); //WC_LISTVIEW='SysListView32': commctrl.pas fhListVw := FindWindowEx(fhShellDll, 0, WC_LISTVIEW, nil); if fhListVw <> 0 then begin hdNotify.Hdr.hwndFrom := FHListVw; hdNotify.Hdr.idFrom := 1; //LVN_COLUMNCLICK: commctrl.pas hdNotify.Hdr.code := LVN_COLUMNCLICK; hdNotify.Item := -1; //3列目:更新日時 hdNotify.Button := 3; hdNotify.PItem := nil; wmNotify.Msg := WM_NOTIFY; wmNotify.IDCtrl := 1; wmNotify.NMHdr := @hdNotify; //カラムをクリックしたことにして、昇順に並び替えてもらう SendMessage(fhShellDll, WM_NOTIFY, TMessage(wmNotify).WParam, TMessage(wmNotify).LParam); //降順にするときは、もう一回 //SendMessage(fhShellDll, WM_NOTIFY, TMessage(wmNotify).WParam, TMessage(wmNotify).LParam); end; end; end; 以上 問題点 ・3列目が、更新日時とは限らないのではないかと思うが、よくわからない。 ・ファイル数が多いと、ソートに時間がかかると思われる。 動作確認 Windows XP SP1(実機) Windows95(たぶんB) (in VirtualPC) Windows98 SE (in VirtualPC) WindowsNT4.0 (in VirtualPC) WindowsXP SP2 (in VirtualPC)
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.