TOpenDiarogのファイル入力欄にコードでファイル名を入力するには?

解決


こしひかり  2005-05-04 16:19:58  No: 14619  IP: [192.*.*.*]

また初歩的な質問になってしまい申し訳ありません。
TOpenDiarogのファイルの選択欄にフォルダパスを入力して
'OK'ボタンを押してTOpenDiarogの画面を更新するといった
ことをコードで行いたいのですが、どのようにすればいいでしょうか?
よろしくおねがいします。

編集    削除
kkk  2005-05-04 17:03:13  No: 14620  IP: [192.*.*.*]

おっしゃっている意味はダイアログが表示された時に特定のフォルダが表示されているということとは違うのでしょうか?
もしそうなら InitialDirを設定すればよいのですが。

編集    削除
こしひかり  2005-05-05 05:55:33  No: 14621  IP: [192.*.*.*]

kkk様
ありがどうございます。
返事が遅くなってすみません。
>おっしゃっている意味はダイアログが表示された時に特定のフォルダが表示>されているということとは違うのでしょうか?
表示をするときではなくて
TOpenDiarogを表示中にファイル名(&T):のテキスト欄に
フォルダパスをコードで入力(TOpenDiarogをコンポーネント化して
TListBoxをのせているのでそれを選択したとき表示フォルダを変更)
したいのです。

編集    削除
りおりお  2005-05-05 07:01:05  No: 14622  IP: [192.*.*.*]

> TOpenDiarogをコンポーネント化して
> TListBoxをのせているのでそれを選択したとき表示フォルダを変更

うーむ、そんなコンポは誰も知らないので回答できるとは思えません。
そのコンポのソースを示すといいのでは?

編集    削除
通りすがり  2005-05-05 08:50:42  No: 14623  IP: [192.*.*.*]

http://www2.big.or.jp/~osamu/Delphi/MyLibrary.htm
  の
『コモンダイアログ拡張コンポーネント』
みたいなことをしてるってことですか?

編集    削除
こしひかり  2005-05-05 09:42:52  No: 14624  IP: [192.*.*.*]

通りすがり様
ありがとうございます。
>『コモンダイアログ拡張コンポーネント』
>みたいなことをしてるってことですか?
まさにそうです。
この方のコードを参考にして作成しているところです。

編集    削除
kkk  2005-05-05 10:15:56  No: 14625  IP: [192.*.*.*]

そういうことなら以下の方法はどうかな?

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\*.*' みたいな指定の仕方をすると大丈夫です。

編集    削除
こしひかり  2005-05-05 19:33:41  No: 14626  IP: [192.*.*.*]

kkk様
できました!!
ありがとうございます。
>// Editを空っぽにしておく
というのも大変参考になりました。
皆さんどうもありがとうございました。

編集    削除