ABRIR DIRETORIO COMMON DIALOG

MRADO.VB 24/08/2009 09:52:22
#320759
Olá amigos!

Amigos, gostaria de ver com vcs, se tem como, através de um common dialog (para abrir aqrquivos tem como), indicar um diretório ao invés de um arquivo específico. E caso contrário, como eu poderia fazer para abrir apenas o diretório para indicar...

Era isso.

Simples né? PARA MIM NÃO é!
ASHKATCHUP 24/08/2009 09:53:33
#320760
Olha, eu nunca fiz isso usando common dialog. Geralmente, utilizo os componentes [Ô]DriveListbox[Ô] e [Ô]DirListBox[Ô], que são nativos do VB.
MRADO.VB 24/08/2009 10:00:22
#320763
Se contiver qualquer arquivo no Diretório, está blz. Mas o problema é qdo o diretório estiver vazio... Não sei como eu poderia fazer nesse caso... Já que o Common não segue adiante se não indicar um arquivo do diretório...

COMO FAZER???
RRANGON 24/08/2009 10:05:54
#320764
Resposta escolhida
Dica direto da microsoft...

Option Explicit

Private Const BIF_RETURNONLYFSDIRS = 1
Private Const BIF_DONTGOBELOWDOMAIN = 2
Private Const MAX_PATH = 260

Private Declare Function SHBrowseForFolder Lib [Ô]shell32[Ô] _
(lpbi As BrowseInfo) As Long

Private Declare Function SHGetPathFromIDList Lib [Ô]shell32[Ô] _
(ByVal pidList As Long, _
ByVal lpBuffer As String) As Long

Private Declare Function lstrcat Lib [Ô]kernel32[Ô] Alias [Ô]lstrcatA[Ô] _
(ByVal lpString1 As String, ByVal _
lpString2 As String) As Long

Private 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

Private Sub Command1_Click()
[ô]Opens a Treeview control that displays the directories in a computer

Dim lpIDList As Long
Dim sBuffer As String
Dim szTitle As String
Dim tBrowseInfo As BrowseInfo

szTitle = [Ô]This is the title[Ô]
With tBrowseInfo
.hWndOwner = Me.hWnd
.lpszTitle = lstrcat(szTitle, [Ô][Ô])
.ulFlags = BIF_RETURNONLYFSDIRS + BIF_DONTGOBELOWDOMAIN
End With

lpIDList = SHBrowseForFolder(tBrowseInfo)

If (lpIDList) Then
sBuffer = Space(MAX_PATH)
SHGetPathFromIDList lpIDList, sBuffer
sBuffer = Left(sBuffer, InStr(sBuffer, vbNullChar) - 1)
MsgBox sBuffer
End If
End Sub

ALVAROVB2009 24/08/2009 10:21:22
#320767
MIRADO_VB tem sim, pelo que entendi esse artigo tem o que você precisa e muito mais
http://www.macoratti.net/dica51.htm

Caso não seja isso, posta ai para a gente poder te ajudar
MRADO.VB 24/08/2009 10:32:35
#320770
Esse exemplo da microsoft eu já tinha o achado em um outro site de visual basic... Agradeço aos amigos. Vou encerrar o tópico...

Um abraço
Tópico encerrado , respostas não são mais permitidas