Folder?

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Nick 'The Database Guy'

    #1

    Folder?

    Hi All,

    I want to browse to a particular folder, not a particular file.

    The reason for this is that I have a utility that asks people to browse
    to a certain file, and I want them to be able to choose the location
    that they start browsing.

    Thanks in advance.

    Regards,

    Nick

  • Allen Browne

    #2
    Re: Folder?

    You can call the Windows Browse Filter dialog:


    --
    Allen Browne - Microsoft MVP. Perth, Western Australia.
    Tips for Access users - http://allenbrowne.com/tips.html
    Reply to group, rather than allenbrowne at mvps dot org.

    "Nick 'The Database Guy'" <nickmcm@btinte rnet.comwrote in message
    news:1154361835 .480028.209300@ i42g2000cwa.goo glegroups.com.. .
    Hi All,
    >
    I want to browse to a particular folder, not a particular file.
    >
    The reason for this is that I have a utility that asks people to browse
    to a certain file, and I want them to be able to choose the location
    that they start browsing.
    >
    Thanks in advance.
    >
    Regards,
    >
    Nick
    >

    Comment

    • Terry Kreft

      #3
      Re: Folder?

      I've tried that one and it insists on showing a list of folders not filters,
      what am I doing wrong ??

      <g>

      --

      Terry Kreft


      "Allen Browne" <AllenBrowne@Se eSig.Invalidwro te in message
      news:44ce2ab0$0 $1497$5a62ac22@ per-qv1-newsreader-01.iinet.net.au ...
      You can call the Windows Browse Filter dialog:

      >
      --
      Allen Browne - Microsoft MVP. Perth, Western Australia.
      Tips for Access users - http://allenbrowne.com/tips.html
      Reply to group, rather than allenbrowne at mvps dot org.
      >
      "Nick 'The Database Guy'" <nickmcm@btinte rnet.comwrote in message
      news:1154361835 .480028.209300@ i42g2000cwa.goo glegroups.com.. .
      Hi All,

      I want to browse to a particular folder, not a particular file.

      The reason for this is that I have a utility that asks people to browse
      to a certain file, and I want them to be able to choose the location
      that they start browsing.

      Thanks in advance.

      Regards,

      Nick
      >
      >

      Comment

      • Nick 'The Database Guy'

        #4
        Re: Folder?

        Thanks for pointing that out Allen.

        Cheers,

        Nick

        Allen Browne wrote:
        You can call the Windows Browse Filter dialog:

        >
        --
        Allen Browne - Microsoft MVP. Perth, Western Australia.
        Tips for Access users - http://allenbrowne.com/tips.html
        Reply to group, rather than allenbrowne at mvps dot org.
        >
        "Nick 'The Database Guy'" <nickmcm@btinte rnet.comwrote in message
        news:1154361835 .480028.209300@ i42g2000cwa.goo glegroups.com.. .
        Hi All,

        I want to browse to a particular folder, not a particular file.

        The reason for this is that I have a utility that asks people to browse
        to a certain file, and I want them to be able to choose the location
        that they start browsing.

        Thanks in advance.

        Regards,

        Nick

        Comment

        • Nick 'The Database Guy'

          #5
          Re: Folder?

          But I wanted to browse a list of folders. Carrying on from there I
          would like to know how I start browsing from a particular location.
          Both in a full browser window and in the folder
          browser?

          Thanks,

          Nick

          Terry Kreft wrote:
          I've tried that one and it insists on showing a list of folders not filters,
          what am I doing wrong ??
          >
          <g>
          >
          --
          >
          Terry Kreft
          >
          >
          "Allen Browne" <AllenBrowne@Se eSig.Invalidwro te in message
          news:44ce2ab0$0 $1497$5a62ac22@ per-qv1-newsreader-01.iinet.net.au ...
          You can call the Windows Browse Filter dialog:


          --
          Allen Browne - Microsoft MVP. Perth, Western Australia.
          Tips for Access users - http://allenbrowne.com/tips.html
          Reply to group, rather than allenbrowne at mvps dot org.

          "Nick 'The Database Guy'" <nickmcm@btinte rnet.comwrote in message
          news:1154361835 .480028.209300@ i42g2000cwa.goo glegroups.com.. .
          Hi All,
          >
          I want to browse to a particular folder, not a particular file.
          >
          The reason for this is that I have a utility that asks people to browse
          to a certain file, and I want them to be able to choose the location
          that they start browsing.
          >
          Thanks in advance.
          >
          Regards,
          >
          Nick
          >

          Comment

          • Nick 'The Database Guy'

            #6
            Re: Folder?

            I have had some success with the full browser, it is not a complete
            success though as the 'File name' box has the last folder of the tree
            in it.

            Nick

            Nick 'The Database Guy' wrote:
            But I wanted to browse a list of folders. Carrying on from there I
            would like to know how I start browsing from a particular location.
            Both in a full browser window and in the folder
            browser?
            >
            Thanks,
            >
            Nick
            >
            Terry Kreft wrote:
            I've tried that one and it insists on showing a list of folders not filters,
            what am I doing wrong ??

            <g>

            --

            Terry Kreft


            "Allen Browne" <AllenBrowne@Se eSig.Invalidwro te in message
            news:44ce2ab0$0 $1497$5a62ac22@ per-qv1-newsreader-01.iinet.net.au ...
            You can call the Windows Browse Filter dialog:

            >
            --
            Allen Browne - Microsoft MVP. Perth, Western Australia.
            Tips for Access users - http://allenbrowne.com/tips.html
            Reply to group, rather than allenbrowne at mvps dot org.
            >
            "Nick 'The Database Guy'" <nickmcm@btinte rnet.comwrote in message
            news:1154361835 .480028.209300@ i42g2000cwa.goo glegroups.com.. .
            Hi All,

            I want to browse to a particular folder, not a particular file.

            The reason for this is that I have a utility that asks people to browse
            to a certain file, and I want them to be able to choose the location
            that they start browsing.

            Thanks in advance.

            Regards,

            Nick

            >
            >

            Comment

            • Terry Kreft

              #7
              Re: Folder?

              Nick,
              Allen inadvertently typed "Windows Browse Filter" instead of Windows Browse
              Folder, I was trying to be amusing.

              The code for the browse dialog at the access web doesn't allow you to define
              a start folder, you need a call back procedure to do this, the code below
              will allow you to define a start folder.

              If you go to http://www.mvps.org/access/api/api0001.htm you can download
              code which allows you to call the open/save file dialog and allows you to
              define a start folder.

              '************** *************** *
              'Browse Folder Code Start
              '************** *************** *
              Option Explicit

              Private Type BROWSEINFO
              hOwner As Long
              pidlRoot As Long
              pszDisplayName As Long
              lpszTitle As Long
              ' lpszTitle As Byte
              ulFlags As Long
              lpfn As Long
              lParam As Long
              iImage As Long
              End Type

              '************** *************** *
              'Functions in BrowseFolder
              '************** *************** *
              Private Declare Function SHGetPathFromID List _
              Lib "shell32.dl l" Alias "SHGetPathFromI DListA" _
              (ByVal pidl As Long, ByVal pszPath As String) _
              As Long
              Private Declare Function SHBrowseForFold er _
              Lib "shell32.dl l" Alias "SHBrowseForFol derA" _
              (lpBrowseInfo As BROWSEINFO) _
              As Long
              Private Declare Sub ZeroMemory _
              Lib "kernel32" Alias "RtlZeroMem ory" _
              (dest As Long, ByVal numBytes As Long)
              Private Declare Function lstrcat _
              Lib "kernel32" Alias "lstrcatA" _
              (ByVal lpString1 As String, _
              ByVal lpString2 As String) _
              As Long
              '************** *************** *
              '/Functions in BrowseFolder
              '************** *************** *

              Private Declare Function GetFileVersionI nfoSize Lib "version.dl l" _
              Alias "GetFileVersion InfoSizeA" _
              (ByVal lptstrFilename As String, _
              lpdwHandle As Long) As Long

              Private Declare Function GetFileVersionI nfo Lib "version.dl l" _
              Alias "GetFileVersion InfoA" _
              (ByVal lptstrFilename As String, _
              ByVal dwHandle As Long, _
              ByVal dwLen As Long, _
              lpData As Any) As Long

              Private Declare Function VerQueryValue Lib "version.dl l" _
              Alias "VerQueryValueA " _
              (pBlock As Any, _
              ByVal lpSubBlock As String, _
              lpBuffer As Any, _
              nVerSize As Long) As Long

              Private Declare Sub CopyMemory Lib "kernel32" _
              Alias "RtlMoveMem ory" _
              (Destination As Any, _
              Source As Any, _
              ByVal Length As Long)



              '************** *************** *
              'Functions used in call back
              '************** *************** *
              Private Declare Function GetCurrentDirec tory _
              Lib "kernel32" Alias "GetCurrentDire ctoryA" _
              (ByVal nBufferLength As Long, _
              ByVal lpBuffer As String) _
              As Long
              Private Declare Function SendMessage _
              Lib "user32" Alias "SendMessag eA" _
              (ByVal hWnd As Long, ByVal wMsg As Long, _
              ByVal wParam As Long, lParam As Any) _
              As Long
              '************** *************** *
              '/Functions used in call back
              '************** *************** *

              '************** *************** *
              'Root pidls
              '************** *************** *
              Private Const CSIDL_DESKTOP = &H0
              Private Const CSIDL_PROGRAMS = &H2
              Private Const CSIDL_CONTROLS = &H3
              Private Const CSIDL_PRINTERS = &H4
              Private Const CSIDL_PERSONAL = &H5
              Private Const CSIDL_FAVORITES = &H6
              Private Const CSIDL_STARTUP = &H7
              Private Const CSIDL_RECENT = &H8
              Private Const CSIDL_SENDTO = &H9
              Private Const CSIDL_BITBUCKET = &HA
              Private Const CSIDL_STARTMENU = &HB
              Private Const CSIDL_DESKTOPDI RECTORY = &H10
              Private Const CSIDL_DRIVES = &H11
              Private Const CSIDL_NETWORK = &H12
              Private Const CSIDL_NETHOOD = &H13
              Private Const CSIDL_FONTS = &H14
              Private Const CSIDL_TEMPLATES = &H15
              '************** *************** *
              'Root pidls
              '************** *************** *

              '************** *************** *
              'uFlag consts
              '************** *************** *
              Private Const BIF_DONTGOBELOW DOMAIN = &H2
              Private Const BIF_STATUSTEXT = &H4
              Private Const BIF_RETURNFSANC ESTORS = &H8
              Private Const BIF_BROWSEFORCO MPUTER = &H1000
              Private Const BIF_BROWSEFORPR INTER = &H2000
              Private Const BIF_RETURNONLYF SDIRS = &H1
              Private Const BIF_EDITBOX = &H10
              Private Const BIF_VALIDATE = &H20
              Private Const BIF_NEWDIALOGST YLE As Long = &H40
              Private Const BIF_USENEWUI As Long = (BIF_NEWDIALOGS TYLE Or BIF_EDITBOX)
              '************** *************** *
              '/uFlag consts
              '************** *************** *

              Private Const WM_USER = &H400

              '************** *************** *
              'Messages from dialog consts
              '************** *************** *
              Private Const BFFM_INITIALIZE D = 1
              Private Const BFFM_SELCHANGED = 2
              Private Const BFFM_VALIDATEFA ILEDA = 3
              Private Const BFFM_VALIDATEFA ILED = BFFM_VALIDATEFA ILEDA
              '************** *************** *
              '/Messages from dialog consts
              '************** *************** *

              '************** *************** *
              'Messages to dialog consts
              '************** *************** *
              Private Const BFFM_SETSELECTI ONA = WM_USER + 102
              Private Const BFFM_SETSELECTI ON = BFFM_SETSELECTI ONA
              Private Const BFFM_SETSTATUST EXTA = WM_USER + 100
              Private Const BFFM_SETSTATUST EXT = BFFM_SETSTATUST EXTA
              '************** *************** *
              '/Messages to dialog consts
              '************** *************** *

              Private Const MAX_PATH = 260

              Private strStartDir As String
              '

              Public Function BrowseFolder(sz DialogTitle As String, _
              Optional StartDir As String = vbNullString, Optional hWnd As Long = 0) As
              String
              '************** *************** **************
              'Name: BrowseFolder (Function)
              'Purpose: Open API browse for folder dialog
              'Author: Terry Kreft
              'Date: January 28, 2001, 09:50:20
              'Called by: Any
              'Calls: AddrOf _
              Various API calls defined on this module
              'Inputs: szDialogTitle - dialog prompt _
              StartDir - Directory to start the _
              browse in (Optional)
              'Output: Directory selected in browse folder
              '************** *************** **************

              Dim x As Long
              Dim BI As BROWSEINFO
              Dim dwIList As Long
              Dim szPath As String
              Dim wPos As Integer
              Dim lngPtr As Long
              Dim bytBuffer() As Byte

              strStartDir = StartDir
              BrowseFolder = ""

              Call ZeroMemory(VarP tr(BI), Len(BI))

              ' This has to be 1 element larger than the length
              ' of the string so that it contains the terminating
              ' Null character
              ReDim bytBuffer(0 To Len(szDialogTit le))
              For lngPtr = 1 To Len(szDialogTit le)
              bytBuffer(lngPt r - 1) = Asc(Mid(szDialo gTitle, lngPtr, 1))
              Next

              With BI
              .pidlRoot = CSIDL_DESKTOP
              .hOwner = hWnd
              .lpszTitle = VarPtr(bytBuffe r(0))
              .ulFlags = BIF_RETURNONLYF SDIRS Or BIF_STATUSTEXT _
              Or BIF_EDITBOX Or BIF_VALIDATE
              If IsShellVersion( 5) Then
              .ulFlags = .ulFlags Or BIF_NEWDIALOGST YLE
              End If
              .lpfn = AddrOf2k(Addres sOf BrowseCallbackP roc)
              End With
              dwIList = SHBrowseForFold er(BI)
              If dwIList Then
              szPath = Space$(512)
              x = SHGetPathFromID List(dwIList, szPath)
              If x Then
              wPos = InStr(szPath, Chr(0))
              BrowseFolder = Left$(szPath, wPos - 1)
              End If
              End If
              End Function

              Function BrowseCallbackP roc(ByVal hWnd As Long, ByVal uMsg As Long, _
              ByVal lp As Long, ByVal pData As Long) As Long
              '************** *************** **************
              'Name: BrowseCallbackP roc (Function)
              'Purpose: Call back function for BrowseFolder
              'Author: Terry Kreft
              'Date: January 28, 2001, 09:52:56
              'Called by: API Browse Folder dialog
              'Calls: Various API functions
              'Inputs: See MSDN for description of inputs
              'Output:
              '************** *************** **************
              Dim lngRet As Long
              Dim nBufferLength As Long
              Dim lpBuffer As String

              Const apiTrue = 1
              Const apiFalse = 0
              Const BAD_DIR = "The directory selected is invalid." _
              & vbCrLf _
              & "Do you want to try again"

              lngRet = apiFalse
              Select Case uMsg
              Case BFFM_INITIALIZE D
              If Len(strStartDir ) < 1 Then
              nBufferLength = MAX_PATH
              lpBuffer = String(MAX_PATH , 0)
              If GetCurrentDirec tory(nBufferLen gth, lpBuffer) Then
              Call SendMessage(hWn d, BFFM_SETSELECTI ON, apiTrue, ByVal lpBuffer)
              End If
              Else
              Call SendMessage(hWn d, BFFM_SETSELECTI ON, apiTrue, ByVal strStartDir)
              End If
              Case BFFM_SELCHANGED
              'Set the status window to the currently selected path.
              lpBuffer = String(MAX_PATH , 0)
              If SHGetPathFromID List(lp, lpBuffer) Then
              lpBuffer = Left(lpBuffer, InStr(lpBuffer, Chr(0)) - 1)
              Call SendMessage(hWn d, BFFM_SETSTATUST EXT, apiTrue, ByVal lpBuffer)
              End If
              Case BFFM_VALIDATEFA ILED
              'If the user types an invalid path
              If MsgBox(BAD_DIR, vbYesNo) = vbYes Then
              lngRet = apiTrue
              End If
              ' Case BFFM_IUNKNOWN

              Case Else
              Debug.Print uMsg
              End Select
              BrowseCallbackP roc = lngRet
              End Function

              Function AddrOf2k(ByVal lngFnPtr As Long) As Long
              AddrOf2k = lngFnPtr
              End Function

              Private Function IsShellVersion( ByVal Version As Long) As Boolean

              'returns True if the Shell version
              '(shell32.dll) is equal or later than
              'the value passed as 'version'
              Dim nBufferSize As Long
              Dim nUnused As Long
              Dim lpBuffer As Long
              Dim nVerMajor As Integer
              Dim bBuffer() As Byte

              Const sDLLFile As String = "shell32.dl l"

              nBufferSize = GetFileVersionI nfoSize(sDLLFil e, nUnused)

              If nBufferSize 0 Then

              ReDim bBuffer(nBuffer Size - 1) As Byte

              Call GetFileVersionI nfo(sDLLFile, 0&, nBufferSize, bBuffer(0))

              If VerQueryValue(b Buffer(0), "\", lpBuffer, nUnused) = 1 Then

              CopyMemory nVerMajor, ByVal lpBuffer + 10, 2

              IsShellVersion = nVerMajor >= Version

              End If 'VerQueryValue
              End If 'nBufferSize

              End Function

              '************** *************** *
              'Browse Folder Code Start
              '************** *************** *


              --

              Terry Kreft


              "Nick 'The Database Guy'" <nickmcm@btinte rnet.comwrote in message
              news:1154366355 .696379.42180@s 13g2000cwa.goog legroups.com...
              But I wanted to browse a list of folders. Carrying on from there I
              would like to know how I start browsing from a particular location.
              Both in a full browser window and in the folder
              browser?
              >
              Thanks,
              >
              Nick
              >
              Terry Kreft wrote:
              I've tried that one and it insists on showing a list of folders not
              filters,
              what am I doing wrong ??

              <g>

              --

              Terry Kreft


              "Allen Browne" <AllenBrowne@Se eSig.Invalidwro te in message
              news:44ce2ab0$0 $1497$5a62ac22@ per-qv1-newsreader-01.iinet.net.au ...
              You can call the Windows Browse Filter dialog:

              >
              --
              Allen Browne - Microsoft MVP. Perth, Western Australia.
              Tips for Access users - http://allenbrowne.com/tips.html
              Reply to group, rather than allenbrowne at mvps dot org.
              >
              "Nick 'The Database Guy'" <nickmcm@btinte rnet.comwrote in message
              news:1154361835 .480028.209300@ i42g2000cwa.goo glegroups.com.. .
              Hi All,

              I want to browse to a particular folder, not a particular file.

              The reason for this is that I have a utility that asks people to
              browse
              to a certain file, and I want them to be able to choose the location
              that they start browsing.

              Thanks in advance.

              Regards,

              Nick

              >
              >
              >

              Comment

              • CDMAPoster@FortuneJames.com

                #8
                Re: Folder?

                Nick 'The Database Guy' wrote:
                Hi All,
                >
                I want to browse to a particular folder, not a particular file.
                >
                The reason for this is that I have a utility that asks people to browse
                to a certain file, and I want them to be able to choose the location
                that they start browsing.
                >
                Thanks in advance.
                >
                Regards,
                >
                Nick
                From:
                http://msdn.microsoft.com/library/de.../folder_id.asp

                "When the user selects a folder, SHBrowseForFold er returns the folder's
                fully-qualified PIDL..."

                So if your default folder is not going to change you could pick the
                folder you want to be the default, return the PIDL using
                SHBrowseForFold er, then use that PIDL to set the default folder in the
                BROWSEINFO structure. I have tried this and it works well. If the
                default folder needs to be changed at will then I believe the addition
                of that flexibility can be found here:



                James A. Fortune
                CDMAPoster@Fort uneJames.com

                Comment

                • Nick 'The Database Guy'

                  #9
                  Re: Folder?

                  My thanks go out to James and all other who posted a response.

                  CDMAPoster@Fort uneJames.com wrote:
                  Nick 'The Database Guy' wrote:
                  Hi All,

                  I want to browse to a particular folder, not a particular file.

                  The reason for this is that I have a utility that asks people to browse
                  to a certain file, and I want them to be able to choose the location
                  that they start browsing.

                  Thanks in advance.

                  Regards,

                  Nick
                  >
                  From:
                  http://msdn.microsoft.com/library/de.../folder_id.asp
                  >
                  "When the user selects a folder, SHBrowseForFold er returns the folder's
                  fully-qualified PIDL..."
                  >
                  So if your default folder is not going to change you could pick the
                  folder you want to be the default, return the PIDL using
                  SHBrowseForFold er, then use that PIDL to set the default folder in the
                  BROWSEINFO structure. I have tried this and it works well. If the
                  default folder needs to be changed at will then I believe the addition
                  of that flexibility can be found here:
                  >

                  >
                  James A. Fortune
                  CDMAPoster@Fort uneJames.com

                  Comment

                  • Nick 'The Database Guy'

                    #10
                    Re: Folder?

                    others *

                    CDMAPoster@Fort uneJames.com wrote:
                    Nick 'The Database Guy' wrote:
                    Hi All,

                    I want to browse to a particular folder, not a particular file.

                    The reason for this is that I have a utility that asks people to browse
                    to a certain file, and I want them to be able to choose the location
                    that they start browsing.

                    Thanks in advance.

                    Regards,

                    Nick
                    >
                    From:
                    http://msdn.microsoft.com/library/de.../folder_id.asp
                    >
                    "When the user selects a folder, SHBrowseForFold er returns the folder's
                    fully-qualified PIDL..."
                    >
                    So if your default folder is not going to change you could pick the
                    folder you want to be the default, return the PIDL using
                    SHBrowseForFold er, then use that PIDL to set the default folder in the
                    BROWSEINFO structure. I have tried this and it works well. If the
                    default folder needs to be changed at will then I believe the addition
                    of that flexibility can be found here:
                    >

                    >
                    James A. Fortune
                    CDMAPoster@Fort uneJames.com

                    Comment

                    Working...