WinBatch Tech Support Home

Database Search

If you can't find the information using the categories below, post a question over in our WinBatch Tech Support Forum.

TechHome

Samples

Can't find the information you are looking for here? Then leave a message over on our WinBatch Tech Support Forum.

File Save As Dialog

 Keywords: File Save As SaveAs 

[fs.zip]
;#DefineFunction FileSaveAs(filetypes)

;============================================================
;============================================================
;============================================================

  GoSub definefuncs

  DirChange(DirScript())                                          ; Set root directory
  currentdirectory = "C:\"
  types = StrCat("Text files - *.txt",@TAB,"WIL Files - *.wbt")       ; Set to what you need
;  types = strcat("*.txt",@tab,"*.wbt")       ; Set to what you need
  firsttype = ItemExtract(1,types,@TAB)
  filetype = StrTrim(ItemExtract(2,firsttype,"-"))
  filesanddirs = GetFilesAndDirs(filetype)

#DefineSubRoutine FSCB(FS_Handle,FS_Message,FS_ID,rsvd1,rsvd2)

  ;DialogprocOptions Constants
  MSG_INIT=0                ; The one-time initilization
  MSG_TIMER=1               ; Timer event
  MSG_BUTTONPUSHED=2        ; Pushbutton or Picturebutton
  MSG_RADIOPUSHED=3         ; Radiobutton clicked
  MSG_CHECKBOX=4            ; Checkbox clicked
  MSG_EDITBOX=5             ; Editbox or Multilinebox
  MSG_FILESELECT=6          ; Filelistbox
  MSG_ITEMSELECT=7          ; Itembox
  MSG_COMBOCHANGE=8         ; Combobox/Droplistbox
  MSG_CALENDAR=9            ; Calendar date change
  MSG_SPINNER=10            ; Spinner number change
  MSG_CLOSEVIA49=11         ; Close clicked (Enabled via Intcontrol 49)
  MSG_FILEBOXDOUBLECLICK=12 ; Get double-click message on a FileListBox
  MSG_ITEMBOXDOUBLECLICK=13 ; Get double-click message on an ItemBox
  DPO_DISABLESTATE=1000     ; codes -1=GetSetting 0=EnableDialog 1=DisableDialog
  DPO_CHANGEBACKGROUND=1001 ; -1=GetSetting otherise bitmap or color string

  ;DialogControlState Constants
  DCSTATE_SETFOCUS=1        ; Give Control Focus
  DCSTATE_QUERYSTYLE=2      ; Query control's style
  DCSTATE_ADDSTYLE=3        ; Add control style
  DCSTATE_REMOVESTYLE=4     ; Remove control style
  DCSTATE_GETFOCUS=5        ; Get control that has focus
  DCSTYLE_INVISIBLE=1       ; Set Control Invisible
  DCSTYLE_DISABLED=2        ; Set Control Disabled
  DCSTYLE_NOUSERDATA=4      ; Note: Setable via DialogControlState function ONLY SPINNER control only
  DCSTYLE_READONLY=8        ; Sets control to read-only (user cannot type in data) EDITBOX MULTILINEBOX SPINNER
  DCSTYLE_PASSWORD=16       ; Sets 'password mode' where only *'s are displayed EDITBOX
  DCSTYLE_DEFAULTBUTTON=32  ; Sets a button as a the default button PUSHBUTTON PICTUREBUTTON
  DCSTYLE_DIGITSONLY=64     ; Set edit box to accept digits only EDITMOX MULTILINEBOX
  DCSTYLE_FLAT=128          ; Makes a 'flat' hyperlink-looking button PUSHBUTTON PICTUREBUTTON

  ;DialogControlSet / DialogControlGet Constants
  DC_CHECKBOX=1             ; CHECKBOX
  DC_RADIOBUTTON=2          ; RADIOBUTTON
  DC_EDITBOX=3              ; EDITBOX MULTILINEBOX
  DC_TITLE=4                ; PICTURE RADIOBUTTON CHECKBOX PICTUREBUTTON VARYTEXT STATICTEXT GROUPBOX PUSHBUTTON
  DC_ITEMBOXCONTENTS=5      ; ITEMBOX FILELISTBOX DROPLISTBOX
  DC_ITEMBOXSELECT=6        ; ITEMBOX FILELISTBOX DROPLISTBOX
  DC_CALENDAR=7             ; CALENDAR
  DC_SPINNER=8              ; SPINNER
  DC_MULTITABSTOPS=9        ; MULTILINEBOX
  DC_ITEMSCROLLPOS=10       ; ITEMBOX FILELISTBOX
  DC_BACKGROUNDCOLOR=11     ; RADIOBUTTON CHECKBOX VARYTEXT STATICTEXT GROUPBOX PUSHBUTTON ITEMBOX FILELISTBOX DROPLISTBOX SPINNER EDITBOX MULTILINEBOX
  DC_PICTUREBITMAP=12       ; PICTURE PICTUREBUTTON
  DC_TEXTCOLOR=13           ; RADIOBUTTON CHECKBOX VARYTEXT STATICTEXT GROUPBOX PUSHBUTTON ITEMBOX FIELLISTBOX DROPLISTBOX SPINNER EDITBOX MULTILINEBOX
  DC_ITEMBOXADD=14          ; ITEMBOX FILELISTBOX DROPLISTBOX
  DC_ITEMBOXREMOVE=15       ; ITEMBOX FILELISTBOX DROPLISTBOX

  Switch FS_Message
    Case MSG_INIT
      DialogProcOptions(FS_Handle,MSG_BUTTONPUSHED,@TRUE)
      DialogProcOptions(FS_Handle,MSG_EDITBOX,@TRUE)
      DialogProcOptions(FS_Handle,MSG_COMBOCHANGE,@TRUE)
      DialogProcOptions(FS_Handle,MSG_ITEMBOXDOUBLECLICK,@TRUE)
      DialogProcOptions(FS_Handle,MSG_ITEMSELECT,@TRUE)
      DialogControlSet(FS_Handle,008,DC_ITEMBOXSELECT,firsttype)
      Return(-1)

    Case MSG_BUTTONPUSHED
      Switch FS_ID
        Case 001             ; Save
          filename = DialogControlGet(FS_Handle,007,DC_EDITBOX)
          If filename == "" Then Return(-2)
          currentdir = DirGet()
          If FileExtension(filename) == ""
            ext = ItemExtract(2,filetype,".")
            SaveAsName = StrCat(currentdir,filename,".",ext)
          Else
            SaveAsName = StrCat(currentdir,filename)
          EndIf
          Return(-1)

        Case 002             ; Cancel
          SaveAsName = "*error*"
          Return(-1)

        Case 009             ; Move up one level (parent directory)
          If currentdirectory == "C:\" Then Break(-2)
          DirChange("..")
          currentdirectory = DirGet()
          filesanddirs = GetFilesAndDirs(filetype)
          DialogControlSet(FS_Handle,004,DC_EDITBOX,currentdirectory)
          DialogControlSet(FS_Handle,011,DC_ITEMBOXCONTENTS,filesanddirs)

          Return(-2)

        Case 010             ; Create new directory
          While @TRUE
            newdirname = AskLine("Create New Directory","Enter the new directory name:","")
            dirchars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890$%%'`-@{}~!#()&_^+,.=[]"
            test1 = StrClean(newdirname,dirchars,"",@FALSE,1)
            If StrLen(test1) > 0
              Message("Error!","Invalid characters entered in new directory name")
              Continue
            EndIf
            Break
          EndWhile

          If newdirname == "" Then Return(-2)
          ErrorMode(@OFF)
          ret = DirMake(newdirname)
          ErrorMode(@CANCEL)
          If !ret
            Message("Error","Unable to create directory - %newdirname%")
            Return(-2)
          EndIf
          filesanddirs = StrCat(filesanddirs,@TAB,"[",newdirname,"]")
          newdirpos = ItemCount(filesanddirs,@TAB)
          DialogControlSet(FS_Handle,011,DC_ITEMBOXCONTENTS,filesanddirs)
          DialogControlSet(FS_Handle,011,DC_ITEMSCROLLPOS,0)
          DialogControlSet(FS_Handle,011,DC_ITEMBOXSELECT,StrCat("[",newdirname,"]"))
          :CANCEL
          Return(-2)

      EndSwitch    ; Button press

;     case MSG_EDITBOX
;        switch FS_ID
;           case 004
;              return(-1)

;           case 008
;              return(-1)

;        endswitch    ;FS_ID
;        return(-1)      ;  Do default processing

    Case MSG_COMBOCHANGE            ; ID 008
      newmask = DialogControlGet(FS_Handle,008,DC_ITEMBOXSELECT)
      filetype = StrTrim(ItemExtract(2,newmask,"-"))
      filesanddirs = GetFilesAndDirs(filetype)
      DialogControlSet(FS_Handle,011,DC_ITEMBOXCONTENTS,filesanddirs)

      Return(-2)                    ; Do default processing

     Case MSG_ITEMBOXDOUBLECLICK     ; ID 011
        filesel = DialogControlGet(FS_Handle,011,DC_ITEMBOXSELECT)
        If StrSub(filesel,1,1) == "["
          filesel = StrClean(filesel,"[]","",@FALSE,1)
          If currentdirectory == "C:\"
            newdir = StrCat(currentdirectory,filesel)
          Else
            newdir = StrCat(currentdirectory,"\",filesel)
          EndIf
          DialogControlSet(FS_Handle,004,DC_EDITBOX,newdir)
          DirChange(newdir)
          currentdirectory = newdir
          filesanddirs = GetFilesAndDirs(filetype)
          DialogControlSet(FS_Handle,011,DC_ITEMBOXCONTENTS,filesanddirs)
        EndIf
        Return(-2)             ;  Do default processing

     Case MSG_ITEMSELECT       ;ID 011
        filesel = DialogControlGet(FS_Handle,011,DC_ITEMBOXSELECT)
        If StrSub(filesel,1,1) != "["   ; Not a directory
          DialogControlSet(FS_Handle,007,DC_EDITBOX,filesel)
        EndIf
        Return(-2)             ;  Do default processing

  EndSwitch                   ; FS_Message
  Return(-1)                  ;  Do default processing

#EndSubRoutine

;============================================================
;============================================================
;============================================================

FSFormat=`WWWDLGED,6.1`

FSCaption=`Save as`
FSX=-01
FSY=-01
FSWidth=214
FSHeight=128
FSNumControls=011
FSProcedure=`FSCB`
FSFont=`DEFAULT`
FSTextColor=`DEFAULT`
FSBackground=`DEFAULT,DEFAULT`
FSConfig=0

FS001=`165,093,036,012,PUSHBUTTON,DEFAULT,"Save",1,1,32,DEFAULT,DEFAULT,DEFAULT`
FS002=`165,109,036,012,PUSHBUTTON,DEFAULT,"Cancel",99,2,DEFAULT,DEFAULT,DEFAULT,DEFAULT`
FS003=`007,005,020,008,STATICTEXT,DEFAULT,"Look in:",DEFAULT,9,DEFAULT,DEFAULT,DEFAULT,DEFAULT`
FS004=`031,003,142,012,EDITBOX,CurrentDirectory,DEFAULT,DEFAULT,8,0,DEFAULT,DEFAULT,DEFAULT`
FS005=`005,095,030,008,STATICTEXT,DEFAULT,"File name:",DEFAULT,10,DEFAULT,DEFAULT,DEFAULT,DEFAULT`
FS006=`005,109,034,008,STATICTEXT,DEFAULT,"Files of type:",DEFAULT,11,DEFAULT,DEFAULT,DEFAULT,DEFAULT`
FS007=`041,093,114,012,EDITBOX,filename,DEFAULT,DEFAULT,3,DEFAULT,DEFAULT,DEFAULT,DEFAULT`
FS008=`041,109,114,056,DROPLISTBOX,types,DEFAULT,DEFAULT,4,DEFAULT,DEFAULT,DEFAULT,DEFAULT`
FS009=`177,003,012,012,PICTUREBUTTON,DEFAULT,"Pict button 3",2,6,DEFAULT,DEFAULT,DEFAULT,"UpOne.bmp"`
FS010=`193,003,012,012,PICTUREBUTTON,DEFAULT,"Pict button 4",3,7,DEFAULT,DEFAULT,DEFAULT,"NewDir.bmp"`
FS011=`005,019,200,070,ITEMBOX,filesanddirs,DEFAULT,DEFAULT,5,DEFAULT,DEFAULT,DEFAULT,DEFAULT`

ButtonPushed=Dialog("FS")

Message("",saveasname)
Exit

;===========================================================================
:definefuncs

#DefineFunction GetFilesAndDirs(filetype)

  dirs = ItemSort(DirItemize("*.*"),@TAB)
  files = ItemSort(FileItemize(filetype),@TAB)
  If dirs != ""
    dirs = StrReplace(dirs,@TAB,StrCat("]",@TAB,"["))
    dirs = StrCat("[",dirs,"]")
    filesanddirs = StrCat(dirs,@TAB,files)
  Else
    filesanddirs = files
  EndIf

  Return(filesanddirs)

#EndFunction

Return

;            #DefineSubroutine NDCBP(ND_Handle,ND_Message,ND_ID,rsvd1,rsvd2)
;
;              ;DialogprocOptions Constants
;              MSG_INIT=0                ; The one-time initilization
;              MSG_BUTTONPUSHED=2        ; Pushbutton or Picturebutton
;              MSG_EDITBOX=5             ; Editbox or Multilinebox
;
;              ;DialogControlSet / DialogControlGet Constants
;              DC_EDITBOX=3              ; EDITBOX MULTILINEBOX
;
;              switch ND_Message
;                case MSG_INIT
;                  DialogProcOptions(ND_Handle,MSG_BUTTONPUSHED,@TRUE)
;
;                  return(-1)
;
;                case MSG_BUTTONPUSHED
;                  switch ND_ID
;                    case 001
;                      dirchars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890$%%'`-@{}~!#()&_^+,.=[]"
;                      newdirname = DialogControlGet(ND_Handle,003,DC_EDITBOX)
;                      test1 = strclean(newdirname,dirchars,"",@false,1)
;                      if strlen(test1) > 0
;                        Message("Error!","Invalid characters entered in new directory name")
;                        DialogControlSet(ND_Handle,003,DC_EDITBOX,"")
;                        return(-2)
;                      endif
;                      return(-1)
;
;                    case 002
;                      return(-1)
;
;                  endswitch    ;ND_ID
;                  return(-1)      ;  Do default processing
;
;               endswitch       ; ND_Message
;               return(-1)      ;  Do default processing
;
;            #EndSubroutine       ;End of Dialog Callback NDCallbackProc
;
;            ;============================================================
;
;            NDFormat=`WWWDLGED,6.1`
;
;            NDCaption=`Create New Directory`
;            NDX=-01
;            NDY=-01
;            NDWidth=096
;            NDHeight=046
;            NDNumControls=004
;            NDProcedure=`NDCBP`
;            NDFont=`DEFAULT`
;            NDTextColor=`DEFAULT`
;            NDBackground=`DEFAULT,DEFAULT`
;            NDConfig=0
;
;            ND001=`007,027,036,012,PUSHBUTTON,DEFAULT,"OK",1,2,32,DEFAULT,DEFAULT,DEFAULT`
;            ND002=`049,027,036,012,PUSHBUTTON,DEFAULT,"Cancel",99,3,DEFAULT,DEFAULT,DEFAULT,DEFAULT`
;            ND003=`007,011,078,012,EDITBOX,newdirname,DEFAULT,DEFAULT,1,DEFAULT,DEFAULT,DEFAULT,DEFAULT`
;            ND004=`007,001,072,008,STATICTEXT,DEFAULT,"Enter new directory name:",DEFAULT,4,DEFAULT,DEFAULT,DEFAULT,DEFAULT`
;
;            ButtonPushed=Dialog("ND")
;


;#EndFunction

Article ID:   W17400
File Created: 2019:08:14:09:21:40
Last Updated: 2019:08:14:09:21:40