お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"OpenDialogを使ったディレクトリ選択Dlg"

この発言に対し以下のコメントが寄せられています
#00944 牧原 博司   さん RE:OpenDialogを使ったディレクトリ選択Dlg

みなさん、こんにちは。#00831 で一度アップしたのですが、キーワード を付け忘れたので、#00831 を削除し、再度アップします。失礼しました。 OpenDialog を使った Directory選択Dialog です。 マズイところがあったら、指摘してください。 implementation {$R *.DFM} var EditHandle, ComboHandle, LabelFNameHandle,LabelFilterHandle,LabelDirHandle, ButtonOpenHandle: Longint; Flag: boolean; function EnumChildProc(const HWND, lParam: Longint): Boolean; stdcall; var cName, cText: array[0..256]of Char; begin Result := True; if (lParam = 1) and (GetClassName(HWND, cName, 255) > 0) then begin // EditFileName if StrComp('Edit', cName) = 0 then EditHandle := HWND // ComboBoxFilter else if (StrComp('ComboBox', cName) = 0) then ComboHandle := HWND // LabelFName else if (StrComp('Static', cName) = 0) and (GetWindowText(HWND, cText, 255) > 0) and (StrComp('ファイル名(&N):', cText) = 0) then LabelFNameHandle := HWND // LabelFilter else if (StrComp('Static', cName) = 0) and (GetWindowText(HWND, cText, 255) > 0) and (StrComp('ファイルの種類(&T):', cText) = 0) then LabelFilterHandle := HWND // LabelDir else if (StrComp('Static', cName) = 0) and (GetWindowText(HWND, cText, 255) > 0) and (StrComp('ファイルの場所(&I):', cText) = 0) then LabelDirHandle := HWND // ButtonOpen else if (StrComp('Button', cName) = 0) and (GetWindowText(HWND, cText, 255) > 0) and (StrComp('開く(&O)', cText) = 0) then ButtonOpenHandle := HWND end; end; function FindEditCombo(const FormHandle: Longint): Boolean; begin Result := False; if IsWindow(FormHandle) then begin EnumChildWindows(FormHandle, @EnumChildProc, 1); Result := IsWindow(EditHandle) and IsWindow(ComboHandle) and IsWindow(LabelFNameHandle) and IsWindow(LabelFilterHandle) and IsWindow(LabelDirHandle) and IsWindow(ButtonOpenHandle); end; end; procedure TForm1.Button1Click(Sender: TObject); begin Flag := True; OpenDialog1.FileName := 'dummy.dat'; // 適当 OpenDialog1.Filter := '*.*|*.*'; OpenDialog1.Title := 'フォルダの選択'; if OpenDialog1.Execute then begin Edit1.Text := ExtractFileDir(OpenDialog1.FileName); Edit2.Text := ExtractFilePath(OpenDialog1.FileName); end; end; procedure TForm1.OpenDialog1Show(Sender: TObject); var DialogHandle: HWND; pc: PChar; begin if OpenDialog1.Title='' then pc := PChar('開く') else pc := PChar(OpenDialog1.Title); DialogHandle := FindWindow('#32770', pc); FindEditCombo(DialogHandle); // FindEditCombo(OpenDialog1.Handle); // これだとうまくいかない end; procedure TForm1.OpenDialog1FolderChange(Sender: TObject); begin if Flag and IsWindow(EditHandle) and IsWindow(ComboHandle) and IsWindow(LabelFNameHandle) and IsWindow(LabelFilterHandle) and IsWindow(LabelDirHandle) and IsWindow(ButtonOpenHandle) then begin Flag := False; ShowWindow(EditHandle,SW_HIDE); ShowWindow(ComboHandle,SW_HIDE); ShowWindow(LabelFNameHandle,SW_HIDE); ShowWindow(LabelFilterHandle,SW_HIDE); SetWindowText(LabelFNameHandle,PChar('')); // '***(&T)' '***(&T)' SetWindowText(LabelFilterHandle,PChar('')); // を無視するように空文字に しておく SetWindowText(LabelDirHandle,PChar('フォルダの場所(&I)')); SetWindowText(ButtonOpenHandle,PChar('OK')); end; end; 牧原博司 QZS03450@nifty.ne.jp - 99年04月21日 (Wed) 23時16分 - Original document by 牧原 博司   氏 ID:(QZS03450)



ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum