SETAR PASTA

FBUR 10/11/2011 12:04:23
#388886
Boa tarde.

Estou tentando fazer um formulário onde o usuário irá definir um diretório.

Por exemplo: O programa necessita que o usuário mostre o diretório onde se encontram os arquivos que o programa irá utilizar (por exemplo, arquivos .txt). Aí ele clica em um botão (command button) para selecionar o diretório. Como se faz isso?

Eu já uso o CommonDialog, mas só sei usar para definir onde está um arquivo. E o meu objetivo é definir um diretório todo. Depois, este diretório selecionado deveria aparecer em uma textbox.

Dá pra fazer com o CommonDialog?

[ ]'s
CHARLESTON10 10/11/2011 12:48:15
#388888
Setando o local da pasta escolhida sem CommonDialog

Primeiro crie um MODULO

Public Type BrowseInfo
hWndOwner As Long
pIDLRoot As Long
pszDisplayName As Long
lpszTitle As Long
ulFlags As Long
lpfnCallback As Long
lParam As Long
iImage As Long
End Type

Public Const BIF_RETURNONLYFSDIRS = 1
Public Const MAX_PATH = 260

Public Declare Sub CoTaskMemFree Lib [Ô]ole32.dll[Ô] (ByVal hMem As Long)
Public Declare Function lstrcat Lib [Ô]kernel32[Ô] Alias [Ô]lstrcatA[Ô] (ByVal lpString1 As String, ByVal lpString2 As String) As Long
Public Declare Function SHBrowseForFolder Lib [Ô]shell32[Ô] (lpbi As BrowseInfo) As Long
Public Declare Function SHGetPathFromIDList Lib [Ô]shell32[Ô] (ByVal pidList As Long, ByVal lpBuffer As String) As Long




Segundo Coloque no clique do botao

  Private Sub Command1_Click()
Dim iNull As Integer, lpIDList As Long, lResult As Long
Dim sPath As String, udtBI As BrowseInfo

[ô]Variavel que recebe o local da pasta escolhida
Dim PastaEsclhida As String

With udtBI
.hWndOwner = Me.hWnd
.lpszTitle = lstrcat([Ô]C:\[Ô], [Ô][Ô])
.ulFlags = BIF_RETURNONLYFSDIRS
End With

lpIDList = SHBrowseForFolder(udtBI)
If lpIDList Then
sPath = String$(MAX_PATH, 0)
SHGetPathFromIDList lpIDList, sPath
CoTaskMemFree lpIDList
iNull = InStr(sPath, vbNullChar)
If iNull Then
sPath = Left$(sPath, iNull - 1)
End If
End If

PastaEsclhida = sPath


End Sub


Para você saber o diretório escolhido.



[ô]Isso dentro do evento Clicar do botão

txtDiretorio.text= sPath




ONBASS 11/11/2011 08:13:19
#388927
apenas idéia:

experimenta setar o caminho desejado num DirListBox e passa pro Common..
PHOENIX209E 11/11/2011 08:40:26
#388930
Insira um DisListBox e use o comando pra capturar o caminho

Text1.text = (Dir1.Path)
Tópico encerrado , respostas não são mais permitidas