また初歩的な質問になってしまい申し訳ありません。
TOpenDiarogのファイルの選択欄にフォルダパスを入力して
'OK'ボタンを押してTOpenDiarogの画面を更新するといった
ことをコードで行いたいのですが、どのようにすればいいでしょうか?
よろしくおねがいします。
おっしゃっている意味はダイアログが表示された時に特定のフォルダが表示されているということとは違うのでしょうか?
もしそうなら InitialDirを設定すればよいのですが。
kkk様
ありがどうございます。
返事が遅くなってすみません。
>おっしゃっている意味はダイアログが表示された時に特定のフォルダが表示>されているということとは違うのでしょうか?
表示をするときではなくて
TOpenDiarogを表示中にファイル名(&T):のテキスト欄に
フォルダパスをコードで入力(TOpenDiarogをコンポーネント化して
TListBoxをのせているのでそれを選択したとき表示フォルダを変更)
したいのです。
> TOpenDiarogをコンポーネント化して
> TListBoxをのせているのでそれを選択したとき表示フォルダを変更
うーむ、そんなコンポは誰も知らないので回答できるとは思えません。
そのコンポのソースを示すといいのでは?
http://www2.big.or.jp/~osamu/Delphi/MyLibrary.htm
の
『コモンダイアログ拡張コンポーネント』
みたいなことをしてるってことですか?
通りすがり様
ありがとうございます。
>『コモンダイアログ拡張コンポーネント』
>みたいなことをしてるってことですか?
まさにそうです。
この方のコードを参考にして作成しているところです。
そういうことなら以下の方法はどうかな?
uses ...,, Dlgs, Commdlg, ...; // << usesに追加
・・・・
procedure DlgSetFolder(hDlg: THandle; APath: string);
var
DlgParent: HWND;
begin
DlgParent := GetParent(hDlg); // 親のハンドル
// フォルダをセット
SendMessage(
DlgParent,
CDM_SETCONTROLTEXT,
Edt1,
Integer(PChar(APath))
);
SendMessage(DlgParent, WM_COMMAND, IDOK, 0); // 開くボタンを押す
// Editを空っぽにしておく
SendMessage(
DlgParent,
CDM_SETCONTROLTEXT,
Edt1,
Integer(PChar(''))
);
end;
・・・・
// 必要なところで
DlgSetFolder(OpenDialog1.Handle, 'c:\temp'); // テスト
・・・・
注意
存在しないフォルダを指定するとダイアログが閉じます。
閉じたくない場合は前もって確認しておくか
Pathに 'c:\temp\*.*' みたいな指定の仕方をすると大丈夫です。
kkk様
できました!!
ありがとうございます。
>// Editを空っぽにしておく
というのも大変参考になりました。
皆さんどうもありがとうございました。