OVH Cloud OVH Cloud

Common dialog

2 réponses
Avatar
jean saint jalmes
Bonjour,

Sous VB6.0, je veux permettre à l'utilisateur de mon application de
sélectionner un dossier (local ou réseau).

J'ouvre un controle common dialog avec la méthode showOpen mais cela
m'oblige à sélectionner un fichier alors que je veux sélectionner un dossier.

Quelle propriété du controle common dialog dois-je modifier pour permettre
une sélection de dossier et non de fichier ?

Merci d'avance

Jean

2 réponses

Avatar
Aski
Bonjour Jean

Utilise DirListBox qui est fait pour cela.
Avec ShowOpen, il me semble bien que tu es obligé de choisir un fichier.

Aski

"jean saint jalmes" a écrit dans
le message de news:
Bonjour,

Sous VB6.0, je veux permettre à l'utilisateur de mon application de
sélectionner un dossier (local ou réseau).

J'ouvre un controle common dialog avec la méthode showOpen mais cela
m'oblige à sélectionner un fichier alors que je veux sélectionner un


dossier.

Quelle propriété du controle common dialog dois-je modifier pour permettre
une sélection de dossier et non de fichier ?

Merci d'avance

Jean


Avatar
jacques thiery
tu peux voir ce que tu peux fire avec ce code

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

Const BIF_RETURNONLYFSDIRS = 1

Const MAX_PATH = 260

Private Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal hMem As Long)

Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal
lpString1 As String, ByVal lpString2 As String) As Long

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 Sub Form_Load()

'KPD-Team 1998

'URL: http://www.allapi.net/

'

Dim iNull As Integer, lpIDList As Long, lResult As Long

Dim sPath As String, udtBI As BrowseInfo

With udtBI

'Set the owner window

.hWndOwner = Me.hWnd

'lstrcat appends the two strings and returns the memory address

.lpszTitle = lstrcat("C:", "")

'Return only if the user selected a directory

.ulFlags = BIF_RETURNONLYFSDIRS

End With

'Show the 'Browse for folder' dialog

lpIDList = SHBrowseForFolder(udtBI)

If lpIDList Then

sPath = String$(MAX_PATH, 0)

'Get the path from the IDList

SHGetPathFromIDList lpIDList, sPath

'free the block of memory

CoTaskMemFree lpIDList

iNull = InStr(sPath, vbNullChar)

If iNull Then

sPath = Left$(sPath, iNull - 1)

End If

End If

MsgBox sPath

End Sub

Ce code provient de Api - Guide

http://www.mentalis.org/

cordialement

"Aski" a écrit dans le message de news:


Bonjour Jean

Utilise DirListBox qui est fait pour cela.
Avec ShowOpen, il me semble bien que tu es obligé de choisir un fichier.

Aski

"jean saint jalmes" a écrit
dans
le message de news:
Bonjour,

Sous VB6.0, je veux permettre à l'utilisateur de mon application de
sélectionner un dossier (local ou réseau).

J'ouvre un controle common dialog avec la méthode showOpen mais cela
m'oblige à sélectionner un fichier alors que je veux sélectionner un


dossier.

Quelle propriété du controle common dialog dois-je modifier pour
permettre
une sélection de dossier et non de fichier ?

Merci d'avance

Jean