Folder Viewport

Post Reply
Natter
Posts: 1241
Joined: Mon May 14, 2007 9:49 am

Folder Viewport

Post by Natter »

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 ?
User avatar
Antonio Linares
Site Admin
Posts: 42519
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 31 times
Been thanked: 75 times
Contact:

Re: Folder Viewport

Post by Antonio Linares »

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

Antonio Linares
www.fivetechsoft.com
Natter
Posts: 1241
Joined: Mon May 14, 2007 9:49 am

Re: Folder Viewport

Post by Natter »

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
User avatar
Antonio Linares
Site Admin
Posts: 42519
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 31 times
Been thanked: 75 times
Contact:

Re: Folder Viewport

Post by Antonio Linares »

Code: Select all | Expand

#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
Natter
Posts: 1241
Joined: Mon May 14, 2007 9:49 am

Re: Folder Viewport

Post by Natter »

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