*--------------------------------------------------------------------- *-- GetFile dialog using common dialog ocx *-- Usage: *-- oGetFileX = CREATEOBJECT("GetFileX") *-- lcFileName = oGetFileX.GetFileX("tables") DEFINE CLASS GetFileX AS FORM LEFT = 100 && Set Dialog Position by positioning the form TOP = 100 && Set Dialog Position NAME = "GetFileEx" DOCREATE = .T. VISIBLE = .F. lUserCancel = .F. ADD OBJECT oCDC AS OLECONTROL WITH ; OLECLASS = "MsComDlg.CommonDialog" PROCEDURE oCDC.INIT THIS.Flags = 2+1 THIS.CancelError = .T. ENDPROC PROCEDURE ERROR LPARAMETERS nerror, cMethod, nLine IF nerror = 1429 THIS.lUserCancel = .T. ENDIF ENDPROC PROCEDURE GetFileX(tcFilter,tcFileName) *-- tcFilter, optional, file types to be shown/searched for *-- tcFileName, optional, default file name (can contain path) lcActualDefault = SYS(2003) IF EMPTY(tcFilter) tcFilter = "All files (*.*)|*.*" ELSE DO CASE CASE LOWER(tcFilter) = "tables" tcFilter = "Class Tables (*.dbf)|*.dbf" *-- add more cases here as needed OTHERWISE *-- use what was sent ENDCASE ENDIF IF NOT EMPTY(tcFileName) thisform.oCDC.Filename = ALLTRIM(tcFilename) ENDIF LOCAL nFlags,lcActualDefault nFlags = 0 IF VAL(OS(3)) > 4 nFlags = 0x00080000 ENDIF * Enforce file existence flag IF THISFORM.chkMulti.VALUE m.nFlags = m.nFlags + 4096 ENDIF THISFORM.oCDC.Flags = m.nFlags THISFORM.oCDC.FILTER = tcFilter THISFORM.oCDC.ShowOpen() SET DEFAULT TO (lcActualDefault) IF THISFORM.oCDC.filename = "*.*" RETURN "" ELSE RETURN THISFORM.oCDC.filename ENDIF ENDPROC ENDDEFINE