Subject Re: ?array
From Charlie <tm@tc.com>
Date Tue, 13 Nov 2018 14:39:17 -0500
Newsgroups dbase.getting-started

Hi Mervyn.  Thanks so much for these.  These or a combination will do the trick!

Mervyn Bick Wrote:

> On 2018-11-12 11:10 PM, Charlie wrote:
> > I think this is going to require an array which I have little experience with.  I may be wrong, so if it is possible to do this without an array, please let me know.
> >
> > I am trying to find what tables are located on a flash drive directory.  (Not associated with a database.)   I would like to identify them and display the content of the directory so one or all can be chosen to import.
> >
> > What would be the best way to display them and  how that might work.
> >
> > Thanks for any help.....
> >
>
> As with most things in dBASE there is more than one way to tackle this.
>
> For "quick and dirty" you could use the dBASE function getfile(). See
> the attached select_file.wfm.
>
> A more elegant way is to use some routines from the dUFLP.  See
> list_files.wfm.   If you really want to this could be expanded to use a
> treeview instead of a plain listbox.
>
> The one draw back with list_files.wfm is that it only sees flash drives
> which are plugged in when the form opens.  If you plug another flash
> drive in while the form is open you will need to close the form and then
> reopen it.
>
> Mervyn.
>
>
> ** END HEADER -- do not remove this line
> //
> // Generated on 2018-11-13
> //
> parameter bModal
> local f
> f = new select_fileForm()
> if (bModal)
>    f.mdi = false // ensure not MDI
>    f.readModal()
> else
>    f.open()
> endif
>
> class select_fileForm of FORM
>    with (this)
>       height = 16.0
>       left = 26.7143
>       top = 5.6818
>       width = 78.4286
>       text = ""
>    endwith
>
>    this.PUSHBUTTON1 = new PUSHBUTTON(this)
>    with (this.PUSHBUTTON1)
>       onClick = class::PUSHBUTTON1_ONCLICK
>       height = 1.0909
>       left = 29.8571
>       top = 5.0
>       width = 15.2857
>       text = "Select File"
>    endwith
>
>    this.ENTRYFIELD1 = new ENTRYFIELD(this)
>    with (this.ENTRYFIELD1)
>       height = 1.0
>       left = 7.0
>       top = 10.0
>       width = 61.0
>       value = ""
>    endwith
>
>    this.TEXTLABEL1 = new TEXTLABEL(this)
>    with (this.TEXTLABEL1)
>       height = 1.0
>       left = 32.0
>       top = 8.5
>       width = 18.0
>       text = "Selected file"
>    endwith
>
>
>    function PUSHBUTTON1_onClick()
>       form.entryfield1.value = getfile()
>       return
>
> endclass
>
> ** END HEADER -- do not remove this line
> //
> // Generated on 2018-11-13
> //
> parameter bModal
> local f
> f = new list_filesForm()
> if (bModal)
>    f.mdi = false // ensure not MDI
>    f.readModal()
> else
>    f.open()
> endif
>
> class list_filesForm of FORM
>    with (this)
>       onSize = class::FORM_ONSIZE
>       onOpen = class::FORM_ONOPEN
>       height = 22.1364
>       left = 35.4286
>       top = 2.5
>       width = 53.1429
>       text = ""
>    endwith
>
>    this.COMBOBOX1 = new COMBOBOX(this)
>    with (this.COMBOBOX1)
>       onChange = class::COMBOBOX1_ONCHANGE
>       onOpen = class::COMBOBOX1_ONOPEN
>       height = 1.0
>       left = 5.0
>       top = 2.0
>       width = 31.0
>       style = 1        // DropDown
>    endwith
>
>    this.LISTBOX1 = new LISTBOX(this)
>    with (this.LISTBOX1)
>       onSelChange = class::LISTBOX1_ONSELCHANGE
>       height = 13.0
>       left = 5.0
>       top = 6.0
>       width = 44.0
>       id = 102
>       colorHighLight = "HighLightText/HighLight"
>    endwith
>
>    this.TEXTLABEL1 = new TEXTLABEL(this)
>    with (this.TEXTLABEL1)
>       height = 1.0
>       left = 5.0
>       top = 0.5
>       width = 18.0
>       text = "Removable Drives"
>    endwith
>
>    this.ENTRYFIELD1 = new ENTRYFIELD(this)
>    with (this.ENTRYFIELD1)
>       height = 1.0
>       left = 5.0
>       top = 20.0
>       width = 44.0
>       value = ""
>    endwith
>
>    this.TEXTLABEL2 = new TEXTLABEL(this)
>    with (this.TEXTLABEL2)
>       height = 1.0
>       left = 16.0
>       top = 4.0
>       width = 21.0
>       text = "Form can be resized"
>    endwith
>
>
>    function COMBOBOX1_onChange()
>       form.entryfield1.value = ''
>       aFiles = new array()
>       oFiles = new FileRecurser(substr(this.value,1,at(':',this.value) ))
>       oFiles.processFile := {|d,f|; aFiles.Add(d + f)}
>       oFiles.search()      
>       form.listbox1.datasource = 'array aFiles'
>       return
>
>    function COMBOBOX1_onOpen()
>       this.value = 'Select drive'
>       return
>
>    function LISTBOX1_onSelChange()
>       form.entryfield1.value = this.value
>       return
>
>    function form_onOpen()
>       set procedure to :duflp:miscWSH.prg
>       set procedure to :dUFLP:FileRecurser.cc
>       set procedure to :duflp:miscapi.prg
>       aDirs = new array()
>       fso = new OleAutoClient("Scripting.FileSystemObject").drives
>       a = new array(fso.count,2)
>       for n = 0 to fso.count-1
>          a[n+1,1] = fso[n].path
>          a[n+1,2] = getDriveType(fso[n].driveType)
>       next
>       for n = 1 to a.size step 2
>          if a[n+1] = 'Removable'
>            cVol = getlabel(a[n])  // get volume label
>            aDirs.add(a[n]+' '+cVol)
>          endif  
>       next    
>       form.combobox1.dataSource = 'array aDirs'        
>       return
>
>    function form_onSize(nSizeType, nWidth, nHeight)
>       form.listbox1.width = this.width - 10
>       form.listbox1.height = this.height - 10
>       form.entryfield1.width = this.width - 10      
>       form.entryfield1.top = form.height - 2
>       return
>
> endclass
>