Toon posts:

[VB6] Wachten met functie-return tot OK_click

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi mensen,

Ik heb gemerkt dat er in VB geen common control is voor het browsen naar een Map (Directory). Dus ben ik zelf ff aan het programmeren gegaan.

Wat nog niet lukt is om het geheel als 1 functie aan te bieden, die pas een return geeft als er op OK of Cancel geklikt wordt.
Ik wil als client het commando "BrowseDir" geven, en dan gewoon de keuze van de gebruiker terugkrijgen.
Hieronder een voorbeeldje.

Het stukje:
'Do While m_beenClicked = False
'--wait--
'Loop
Werkt natuurlijk niet - maar hoe weet ik wanneer de gebruiker klaar is met browsen?? Nu krijg ik onmiddelijk een return van de functie, hoewel ik nog helemaal niet klaar ben met browsen. Als ik dan eindelijk OK klik, heeft het dus geen effect meer.

'--------------------------------------------------------------


Public Function BrowseDir(Optional startPath As String, Optional DialogTitle As String) As String
Me.Show

If Len(DialogTitle) > 0 Then
Me.Caption = DialogTitle
End If

If Len(startPath) > 0 Then
txtPath.Text = startPath
updateControlPath
End If

'Do While m_beenClicked = False
'--wait--
'Loop

BrowseDir = FinalLocation

End Function

  • Markieman
  • Registratie: December 2001
  • Laatst online: 15-05 12:16
Ik heb gemerkt dat er in VB geen common control is voor het browsen naar een Map (Directory).
Het zit niet in een common control, maar wel in een API:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
'====Declaraties

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

'====== functie

Public Function ShowDirList(Optional ByVal vsTitel As String = "") As String
'Opens a Treeview control that displays the directories in a computer

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

ShowDirList = ""

If vsTitel = "" Then
    vsTitel = "Selecteer een directory:"
End If

With tBrowseInfo
   .hWndOwner = 0
   .lpszTitle = lstrcat(vsTitel, "")
   .ulFlags = BIF_RETURNONLYFSDIRS + BIF_DONTGOBELOWDOMAIN
End With

lpIDList = SHBrowseForFolder(tBrowseInfo)

If (lpIDList) Then
    sBuffer = String(MAX_PATH, 0)
    SHGetPathFromIDList lpIDList, sBuffer
    sBuffer = Left(sBuffer, InStr(sBuffer, vbNullChar) - 1)
    ShowDirList = sBuffer
End If

End Function

[ Voor 9% gewijzigd door Markieman op 10-05-2004 13:46 ]

You do not fear them? - The Wraith? Naah. Now *clowns*, that's another story.


Verwijderd

Topicstarter
Wow!

Bedankt Markieman! Het werkt.
Heb dank.

Willy-Bas Loos
SOVON Vogelonderzoek Nederland