お願いします。
コモンガイアログボタンにて、フォルダの位置指定をしたいのですが、
あらかじめきめられたパスの位置に初期値をもっていきたい場合、どうすればいいでしょうか?&選択したパスをINIファイルなどに保存し、次にプログラムを動かしたときはそのINIファイルのパス位置が初期値といったようなことはできないんでしょうか? コモンダイアログのフォルダ指定ができずに困ってます。 お願いします
VB6以下の場合はInitDirプロパティ、VB.NETではInitialDirectoryプロパティで指定してみてください。
編集 削除魔界の仮面弁士様ご教授ありがとうございます。
環境はVB6なのですが、コモンダイアログにて、ファイルまで指定を
してしまうのですが、フォルダまでの指定(ファイル指定不可)の設定は
無理なのでしょうか?
ご教授お願い致します。
コモンダイアログ コントロールで表示されるのは、『ファイル選択用のダイアログ』となります。
[フォルダ]や[ディレクトリ]を選択したい場合は、
・ShellオブジェクトのBrowseForFolderメソッド
・Win32 APIのSHBrowseForFolder関数
などを利用して、『フォルダ選択用のダイアログ』を表示してください。
あるいはディレクトリだけの選択で十分であれば、VB6の
ディレクトリリストボックス (DirListBox) コントロールを
使って、選択画面を作成することもできるかと思います。
魔界の仮面弁士様ご教授ありがとうございます。
ダイアログボックスの種類を変更して、フォルダ選択のダイアログボックスを
表示してみたのですが、やはり、ファイルも選択されてしまいます。
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
これではやはりまちがいでしょうか?
きちんと「引用元」を書かないと、問題になりますよ。
———vbvbvb.com のサンプルの場合は、特に。
それはさておき、今回の場合は、フラグとして指定している BIF_BROWSEINCLUDEFILES を解除すればOKでしょう。
(Browse Include Files …[ファイルも含めて閲覧]のような意味です)