Hi Kristi,
you need to call Windows API functions to get those Dialog Box like Excel or Outlook: GetOpenFileName
There is a question that use this API, but their sample is to change CurrentPath:
http://www.experts-exchang
I just create an user object that use this ideas and make a full functional sample, you can get sample code here: http://berxpert.googlepage
And here is the code:
//------------------------
// Button click on a window
//------------------------
String pathNames[], FileNames[], filter
uo_winfile luo_winfile
Int i
luo_winfile = Create uo_WinFile
FileNames[1] = ''
Filter = "Excel Files (*.xls)|*.XLS|Access Files (*.mda, *.mdb)|*.MDA;*.MDB|Text Files (*.txt)|*.TXT|All Files (*.*)|*.*"
i = luo_winfile.Open(Handle(pa
// i = 0 User Pressed Cancel
if i > 0 then
MessageBox(pathNames[1], FileNames[1] )
end if
//------------------------
// Api functions
//------------------------
Function boolean GetOpenFileName(ref OPENFILENAME lpofn) Library "COMDLG32.DLL" Alias For "GetOpenFileNameA"
Function boolean GetSaveFileName(ref OPENFILENAME lpofn) Library "COMDLG32.DLL" Alias For "GetOpenFileNameA"
Function long CommDlgExtendedError() Library "COMDLG32.DLL"
//------------------------
// File Constants
//------------------------
Protectedwrite CONSTANT long OFN_NOLONGNAMES = 262144 //&H40000
Protectedwrite CONSTANT long OFN_NONETWORKBUTTON = 131072 //&H20000
Protectedwrite CONSTANT long OFN_NOREADONLYRETURN = 32768 //&H8000
Protectedwrite CONSTANT long OFN_NOTESTFILECREATE = 65536 //&H10000
Protectedwrite CONSTANT long OFN_READONLY = 1 //&H1
Protectedwrite CONSTANT long OFN_OVERWRITEPROMPT = 2 //&H2
Protectedwrite CONSTANT long OFN_HIDEREADONLY = 4 //&H4
Protectedwrite CONSTANT long OFN_NOCHANGEDIR = 8 //&H8
Protectedwrite CONSTANT long OFN_SHOWHELP = 16 //&H10
Protectedwrite CONSTANT long OFN_ENABLEHOOK = 32 //&H20
Protectedwrite CONSTANT long OFN_ENABLETEMPLATE = 64 //&H40
Protectedwrite CONSTANT long OFN_ENABLETEMPLATEHANDLE = 128 //&H80
Protectedwrite CONSTANT long OFN_NOVALIDATE = 256 //&H100
Protectedwrite CONSTANT long OFN_EXTENSIONDIFFERENT = 1024 //&H400
Protectedwrite CONSTANT long OFN_PATHMUSTEXIST = 2048 //&H800
Protectedwrite CONSTANT long OFN_FILEMUSTEXIST = 4096 //&H1000
Protectedwrite CONSTANT long OFN_CREATEPROMPT = 8192 //&H2000
Protectedwrite CONSTANT long OFN_SHAREAWARE = 16384 //&H4000
Protectedwrite CONSTANT long OFN_NODEREFERENCELINKS = 1048576 //&H100000
Protectedwrite CONSTANT long OFN_LONGNAMES = 2097152 //&H200000
Protectedwrite CONSTANT long OFN_SHARENOWARN = 1
Protectedwrite CONSTANT long OFN_SHAREFALLTHROUGH = 2
Protectedwrite CONSTANT long OFN_SHAREWARN = 0
Protectedwrite CONSTANT long OFN_EXPLORER = 524288 //&H80000
Protectedwrite CONSTANT long OFN_ALLOWMULTISELECT = 512 //&H200
//------------------------
// File Open function
//------------------------
public function integer open (unsignedlong hwnd, string title, ref string pathname[], ref string filename[], string filter, string initialdirectory, boolean multiselect, boolean explorer, long flags);openfilename ofn
blob lblb_filter
blob lblb_filename
blob lblb_filetitle
double li_pos, li_len, li_count
uint li_rc
string ls_pathname
string ls_filename
string ls_null[]
if isnull(hwnd) then
return -1
end if
ofn.lstructsize = 76
ofn.hwdowner = 0
ofn.hinstance = 0
lblb_filter = blob (filter + space(1))
li_pos = Pos ( filter, '|' )
DO WHILE li_pos > 0
blobedit ( lblb_filter, li_pos, char(0))
li_pos = Pos ( filter, '|', li_pos + 1 )
LOOP
blobedit (lblb_filter,len(lblb_filt
ofn.lpstrfilter = lblb_filter
setnull( ofn.lpstrcustomfilter )
ofn.nmaxcustfilter = 0
ofn.nfilterindex = 1
if multiselect then
ofn.nmaxfile = 2048000
ofn.lpstrfile = blob (space(2047990))
else
ofn.nmaxfile = 25600
ofn.lpstrfile = blob (space(25590))
end if
ls_pathname += Space (ofn.nmaxfile)
blobedit(ofn.lpstrfile,1,c
ofn.nmaxfiletitle = 138
ls_filename = filename[1]
ls_filename += Space ( ofn.nmaxfiletitle - len ( filename[1]) - 10 )
lblb_filetitle = blob (ls_filename)
blobedit(lblb_filetitle,(l
ofn.lpstrfiletitle = lblb_filetitle
ofn.lpstrinitialdir = initialdirectory
ofn.lpstrtitle = title
ls_filename = filename[1]
ls_filename += Space ( ofn.nmaxfiletitle - len ( filename[1]) - 10 )
lblb_filetitle = blob (ls_filename)
blobedit(lblb_filetitle,(l
ofn.lpstrfile = lblb_filetitle
IF multiselect THEN
flags += OFN_ALLOWMULTISELECT
END IF
IF explorer THEN
flags += OFN_EXPLORER
END IF
ofn.flags = flags
//ofn.nfileoffset = 0
//ofn.nfileextension = 0
ofn.lpstrdefext = ''
//ofn.lcustdata = 0
//ofn.lpfnhook = 0
//ofn.lptemplatename = ''
IF NOT this.GetOpenFileName (ofn) THEN
li_rc = CommDlgExtendedError()
if li_rc > 0 then
messagebox ("Error ", "Error No " + string(li_rc))
end if
return li_rc
ELSE
setpointer(hourglass!)
IF multiselect THEN
IF explorer THEN
//For explorer, the first element is the directory, the rest are the filenames
//and then are null seperated
ls_pathname = Trim ( String ( ofn.lpstrfile ) )
li_len = Len ( ls_pathname )
ofn.lpstrfile = BlobMid ( ofn.lpstrfile, li_len + 2 )
ls_filename = Trim ( String ( ofn.lpstrfile ) )
li_len = Len ( ls_filename )
filename[] = ls_null[]
li_count = 0
DO WHILE li_len > 0
filename[UpperBound(filena
pathname[UpperBound(pathna
ofn.lpstrfile = BlobMid ( ofn.lpstrfile, li_len + 2 )
ls_filename = Trim ( String ( ofn.lpstrfile ) )
li_len = Len ( ls_filename )
li_count++
LOOP
if li_count = 0 then
if len(ls_pathname) > 0 then
ls_filename = trim ( string( ofn.lpstrfiletitle ) )
filename[UpperBound(filena
pathname[UpperBound(pathna
end if
end if
ELSE
//For old style, the first element is the directory, the rest are the filenames
//and the are seperated by spaces
ls_pathname = Trim ( String ( ofn.lpstrfile ) )
li_pos = Pos ( ls_pathname, ' ' )
ls_filename = Mid ( ls_pathname, li_pos + 1 )
ls_pathname = Left ( ls_pathname, li_pos - 1 )
li_pos = Pos ( ls_filename, ' ' )
filename[] = ls_null[]
DO WHILE li_pos > 0
filename[UpperBound(filena
pathname[UpperBound(pathna
ls_filename = Mid ( ls_filename, li_pos + 1 )
li_pos = Pos ( ls_filename, ' ' )
LOOP
filename[UpperBound(filena
pathname[UpperBound(pathna
END IF
ELSE
//Only one file, don't need to loop through
pathname[1] = String ( ofn.lpstrfile )
filename[1] = String ( ofn.lpstrfiletitle )
END IF
setpointer(arrow!)
Return 1
END IF
Regards,
BerXpert
Main Topics
Browse All Topics





by: tr1l0b1tPosted on 2006-05-09 at 08:41:12ID: 16640256
Hi,
To displays the system's Open File dialog and allows the user to select a file or enter a filename,
use the GetFileOpenName() and GetFileSaveName() methods. Refer to PB Help for further information
on its use and parameters.
~~~~~~~~~~~~~~~~~~~~~~
Example from PB Help :
~~~~~~~~~~~~~~~~~~~~~~
string docname, named
integer value
value = GetFileOpenName("Select File", &
+ docname, named, "DOC", &
+ "Text Files (*.TXT),*.TXT," &
+ "Doc Files (*.DOC),*.DOC")
IF value = 1 THEN FileOpen(docname)
Regards