コモンダイアログの初期値


コモン  2004-02-13 13:09:23  No: 82025  IP: [192.*.*.*]

お願いします。
コモンガイアログボタンにて、フォルダの位置指定をしたいのですが、
あらかじめきめられたパスの位置に初期値をもっていきたい場合、どうすればいいでしょうか?&選択したパスをINIファイルなどに保存し、次にプログラムを動かしたときはそのINIファイルのパス位置が初期値といったようなことはできないんでしょうか?  コモンダイアログのフォルダ指定ができずに困ってます。  お願いします

編集 削除
魔界の仮面弁士  2004-02-13 13:55:05  No: 82026  IP: [192.*.*.*]

VB6以下の場合はInitDirプロパティ、VB.NETではInitialDirectoryプロパティで指定してみてください。

編集 削除
コモン  2004-02-16 09:56:42  No: 82027  IP: [192.*.*.*]

魔界の仮面弁士様ご教授ありがとうございます。
環境はVB6なのですが、コモンダイアログにて、ファイルまで指定を
してしまうのですが、フォルダまでの指定(ファイル指定不可)の設定は
無理なのでしょうか?
ご教授お願い致します。

編集 削除
魔界の仮面弁士  2004-02-16 10:28:00  No: 82028  IP: [192.*.*.*]

コモンダイアログ コントロールで表示されるのは、『ファイル選択用のダイアログ』となります。

[フォルダ]や[ディレクトリ]を選択したい場合は、
・ShellオブジェクトのBrowseForFolderメソッド
・Win32 APIのSHBrowseForFolder関数
などを利用して、『フォルダ選択用のダイアログ』を表示してください。

あるいはディレクトリだけの選択で十分であれば、VB6の
ディレクトリリストボックス (DirListBox) コントロールを
使って、選択画面を作成することもできるかと思います。

編集 削除
コモン  2004-02-16 16:56:43  No: 82029  IP: [192.*.*.*]

魔界の仮面弁士様ご教授ありがとうございます。
ダイアログボックスの種類を変更して、フォルダ選択のダイアログボックスを
表示してみたのですが、やはり、ファイルも選択されてしまいます。
BASファイル
Option Explicit
' パスの最大長を示す定数の宣言
Public Const MAX_PATH = 260
Type BROWSEINFO
hwndOwner      As Long
pidlRoot       As Long
pszDisplayName As Long
lpszTitle      As Long
ulFlags        As Long
lpfn           As Long
lParam         As Long
iImage         As Long
End Type

Public Const BIF_RETURNONLYFSDIRS = &H1
Public Const BIF_DONTGOBELOWDOMAIN = &H2
Public Const BIF_STATUSTEXT = &H4
Public Const BIF_EDITBOX = &H10
Public Const BIF_VALIDATE = &H20
Public Const BIF_BROWSEINCLUDEFILES = &H4000
Declare Function SHBrowseForFolder Lib "shell32.dll" (lpbi As Any) As Long
Declare Function SHGetPathFromIDList Lib "shell32.dll" (lpbi As Any, ByVal pszPath As String) As Long
Declare Function CoTaskMemFree Lib "ole32.dll" (pv As Any) As Long

FORMボタン押したとき
Option Explicit
Private Sub Command1_Click()
Dim udtBrowseInfo         As BROWSEINFO
Dim lngPidl               As Long
Dim strPath               As String * MAX_PATH
Dim lngWin32apiResultCode As Long
With udtBrowseInfo
 .hwndOwner = Me.hWnd
 .ulFlags = BIF_RETURNONLYFSDIRS Or BIF_DONTGOBELOWDOMAIN Or BIF_STATUSTEXT Or BIF_EDITBOX Or BIF_BROWSEINCLUDEFILES Or BIF_VALIDATE
End With
 lngPidl = SHBrowseForFolder(udtBrowseInfo)
 If lngPidl Then
 lngWin32apiResultCode = SHGetPathFromIDList(ByVal lngPidl, strPath)
Label2.Caption = Left(strPath, InStr(strPath, vbNullChar) - 1)
CoTaskMemFree ByVal lngPidl
Else
Label2.Caption = "キャンセルされました。"
 End If
 End Sub
Private Sub Form_Load()
' ラベルを右揃えに設定
Label1.Alignment = vbRightJustify
' ラベルを初期化
Label1.Caption = "選択結果"
Label2.Caption = ""
' コマンドボタンを初期化
Command1.Caption = "実行"
End Sub

これではやはりまちがいでしょうか?

編集 削除
魔界の仮面弁士  2004-02-16 18:12:47  No: 82030  IP: [192.*.*.*]

きちんと「引用元」を書かないと、問題になりますよ。
———vbvbvb.com のサンプルの場合は、特に。


それはさておき、今回の場合は、フラグとして指定している BIF_BROWSEINCLUDEFILES を解除すればOKでしょう。
(Browse Include Files …[ファイルも含めて閲覧]のような意味です)

編集 削除