FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour Folder Viewport
Posts: 1392
Joined: Mon May 14, 2007 09:49 AM
Folder Viewport
Posted: Thu Oct 26, 2023 11:01 AM

Hi,

There are several disks on the computer - C:\,D:\, E:..

I need to select a folder from disk c D:\ (c getDir() or cGetDir32()).

Is it possible to make only the D:\ drive available ?

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Folder Viewport
Posted: Thu Oct 26, 2023 11:04 AM

You could build and show a tree using only the folders in such drive

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1392
Joined: Mon May 14, 2007 09:49 AM
Re: Folder Viewport
Posted: Thu Oct 26, 2023 11:09 AM

Sorry, Antonio, I didn't understand. I can specify the initial path, but the rest of the disks will also be visible and can be selected

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Folder Viewport
Posted: Thu Oct 26, 2023 11:57 AM
Code (fw): Select all Collapse
#include "FiveWin.ch"

function Main()

    local oDlg, oTree

    DEFINE DIALOG oDlg TITLE "Select a folder" SIZE 600, 400

    @ 10, 10 TREEVIEW oTree OF oDlg SIZE 200, 180 PIXEL

    @ 0.5, 40 BUTTON "OK" OF oDlg ACTION MsgInfo( oTree:GetSelected():cPrompt ) SIZE 50, 15
 
    ACTIVATE DIALOG oDlg CENTER ;
      ON INIT ( oDlg:Show(), GetFolders( "c:", oTree ), .T. )

return nil    

function GetFolders( cPath, oItem )

   local aFolders := Directory( cPath + "\*.*", "D" )

   AEval( aFolders, { | aFolder, oNewItem | If( aFolder[ 5 ] == "D" .and. aFolder[ 1 ] != "." .and. aFolder[ 1 ] != "..",;
                      ( oNewItem := oItem:Add( Upper( aFolder[ 1 ] ) ), GetFolders( cPath + "\" + aFolder[ 1 ], oNewItem ) ),) } )

return nil
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1392
Joined: Mon May 14, 2007 09:49 AM
Re: Folder Viewport
Posted: Thu Oct 26, 2023 12:14 PM

That is, make your own version of the cGetDir() function? Thank you, Antonio! I'll try

Continue the discussion