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

解決


こしひかり  2005-05-04 16:19:58  No: 14619

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


kkk  2005-05-04 17:03:13  No: 14620

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


こしひかり  2005-05-05 05:55:33  No: 14621

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


りおりお  2005-05-05 07:01:05  No: 14622

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

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


通りすがり  2005-05-05 08:50:42  No: 14623

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


こしひかり  2005-05-05 09:42:52  No: 14624

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


kkk  2005-05-05 10:15:56  No: 14625

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

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

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加