WinBatch® Technical Support Forum

Archived Boards => WinBatch Script Exchange => Topic started by: JTaylor on August 22, 2014, 12:02:13 PM

Title: Testing Compatibility of SET/GET and Styles of Controls
Post by: JTaylor on August 22, 2014, 12:02:13 PM
A UDS for when one might want to test the ability to perform a GET/SET or apply a Style to a control.   Useful if one loops through the controls in a dialog performing a certain action but need to skip those that are incompatible.  Thought I would also throw a way to retrieve the Control Type.

Jim

Code (winbatch) Select

    dname = "YOUR DIALOG VARIABLE"
    For x = 1 to %dname%NumControls
      x = StrFixLeft(x,"0",3)
      ctype = ItemExtract(5,%dname%%x%,",")
      Message(x,ctype)
    Next



Code (winbatch) Select


#DefineSubRoutine DC_Compatible(dvar,cnum,const,dfunc)
  ;###########################################################
  ;dvar = Dialog Variable
  ;cnum = Control Number
  ;const = Dialog Constant.  List can be obtained from the right-click menu in WinBatch Studio under Code-Blocks.
  ;dfunc = "style" or "set" or "get". 
  ;Leave no spaces in your lists

  ;Example: 

  ;          IsCompat = DC_Compatible("COMPAT_TEST",DialogProcOptions(Dlg_Handle,dpo_getnumber,DCID),dcstyle_invisible,"style")

  ;###########################################################

  Init_Dialog_Constants()
  If !IsDefined(style_list_1) Then GoSub Init_Lists

  cnum = StrFixLeft(cnum,"0",3)
  ctype = ItemExtract(5,%dvar%%cnum%,",")
  IsCompat = 0

  If StrLower(dfunc) == "style" Then
    If const == DCSTYLE_INVISIBLE Then Return 1
    If ItemLocate(ctype,style_list_%const%,",") > 0 Then Return 1
  EndIf

  If StrLower(dfunc) == "get" || StrLower(dfunc) == "set" Then
    If const == DC_POSITION && (ctype == "MENUBAR" || ctype == "MENUITEM") Then Return 0
    If const == DC_POSITION Then Return 1
    If const == DC_RADIOCONTROL  && StrLower(dfunc) == "set" Then Return 0
    If const == DC_MULTITABSTOPS && StrLower(dfunc) == "get" Then Return 0
    If ItemLocate(ctype,setget_list_%const%,",") > 0 Then Return 1
  EndIf

  Return 0

  :INIT_LISTS
    style_list_1         = "All"
    style_list_2         = "PUSHBUTTON,RADIOBUTTON,CHECKBOX,PICTUREBUTTON,EDITBOX,MULTILINEBOX,ITEMBOX,FILELISTBOX,CALENDAR,DROPLISTBOX,REPORTVIEW,SPINNER,GROUPBOX,VARYTEXT,STATICTEXT,MENUITEM"
    style_list_4         = ""
    style_list_8         = "EDITBOX,MULTILINEBOX,SPINNER"
    style_list_16        = "EDITBOX"
    style_list_32        = "PUSHBUTTON,PICTUREBUTTON"
    style_list_64        = "EDITBOX,MULTILINEBOX"
    style_list_128       = "PUSHBUTTON,PICTUREBUTTON"
    style_list_256       = ""
    style_list_512       = "VARYTEXT,STATICTEXT"
    style_list_1024      = "VARYTEXT,STATICTEXT"
    style_list_2048      = "EDITBOX,MULTILINEBOX"
    style_list_4096      = "EDITBOX,MULTILINEBOX"
    style_list_8192      = "PUSHBUTTON,PICTUREBUTTON"
    style_list_32768     = "MENUITEM"
    style_list_65536     = "MENUITEM"
    style_list_131072    = "MENUITEM"
    style_list_262144    = "MENUITEM"
    style_list_524288    = "REPORTVIEW"
    style_list_1048576   = "REPORTVIEW"
    style_list_2097152   = "REPORTVIEW"
    style_list_4194304   = "REPORTVIEW"
    style_list_8388608   = "REPORTVIEW"
    style_list_16777216  = "REPORTVIEW"
    style_list_33554432  = "REPORTVIEW"
    style_list_67108864  = "REPORTVIEW"
    style_list_134217728 = "REPORTVIEW"

    setget_list_1  = "CHECKBOX,REPORTVIEW"
    setget_list_2  = "RADIOBUTTON"
    setget_list_3  = "EDITBOX"
    setget_list_4  = "PICTURE,RADIOBUTTON,CHECKBOX,PICTUREBUTTON,VARYTEXT,STATICTEXT,GROUPBOX,PUSHBUTTON,MENUITEM"
    setget_list_5  = "ITEMBOX,FILELISTBOX,DROPLISTBOX,REPORTVIEW"
    setget_list_6  = "ITEMBOX,FILELISTBOX,DROPLISTBOX,REPORTVIEW"
    setget_list_7  = "CALENDAR"
    setget_list_8  = "SPINNER"
    setget_list_9  = "MULTILINEBOX"
    setget_list_10 = "ITEMBOX,FILELISTBOX,MULTILINEBOX,REPORTVIEW"
    setget_list_11 = "RADIOBUTTON,CHECKBOX,VARYTEXT,STATICTEXT,GROUPBOX,PUSHBUTTON,ITEMBOX,FILELISTBOX,DROPLISTBOX,REPORTVIEW,SPINNER,EDITBOX,MULTILINEBOX"
    setget_list_12 = "PICTURE,PICTUREBUTTON"
    setget_list_13 = "RADIOBUTTON,CHECKBOX,VARYTEXT,STATICTEXT,GROUPBOX,PUSHBUTTON,ITEMBOX,FILELISTBOX,DROPLISTBOX,REPORTVIEW,SPINNER,EDITBOX,MULTILINEBOX"
    setget_list_14 = "ITEMBOX,FILELISTBOX,DROPLISTBOX,REPORTVIEW"
    setget_list_15 = "ITEMBOX,FILELISTBOX,DROPLISTBOX,REPORTVIEW"
    setget_list_16 = "RADIOBUTTON"   ; Valid for DialogControlGet only.
    setget_list_17 = "ALL CONTROLS"  ; (Except MENUBAR and MENUITEM)"
    setget_list_20 = "REPORTVIEW"
    setget_list_21 = "REPORTVIEW"
    setget_list_22 = "REPORTVIEW"
    setget_list_23 = "REPORTVIEW"
    setget_list_25 = "REPORTVIEW"
    setget_list_27 = "REPORTVIEW"
     
  Return   
   
#EndSubRoutine


#DefineSubRoutine Init_Dialog_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
   MSG_COMEVENT           = 14   ; Get double-click message on an ItemBox
   MSG_MENUITEM           = 15   ; MenuItem selected
   MSG_MENUITEMINIT       = 16   ; MenuItem initialized
   MSG_RESIZE             = 17   ; Dialog resized
   MSG_RVITEMSELROW       = 18   ; Reportview item select row
   MSG_RVDBLCLICKROW      = 19   ; Reportview double-click row
   MSG_RVCHECKEDITEM      = 20   ; Reportview checked/unchecked Item
   MSG_RVITEMTEXT         = 21   ; Reportview item text
   MSG_RVHEADER           = 22   ; Reportview header clicked

   DPO_DISABLESTATE       = 1000 ; codes -1=GetSetting 0=EnableDialog 1=DisableDialog
   DPO_CHANGEBACKGROUND   = 1001 ; -1=GetSetting otherise bitmap or color string
   DPO_CHANGESYSMENU      = 1002 ; -1=Get Current 0=none 1=close 2=close/min 3=close/max 4=close/min/max
   DPO_CHANGETITLE        = 1003 ; -1=Get Current otherise new title
   DPO_GETNAME            = 1004 ;  Returns the name associated with a control's number.
   DPO_GETNUMBER          = 1005 ;  Returns the number associated with a control's name.
   DPO_GETCLIENTAREA      = 1007 ;  Returns the number associated with a control's name.


   ;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
   DCSTATE_MOVEMOUSEOVER  = 6      ; Move the mouse over the control

   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
   DCSTYLE_HEIGHT         = 256    ; Turns off automatic height adjustment on ItemBoxes and FileListBoxes
   DCSTYLE_CENTER         = 512    ; Center Text in VARYTEXT and STATICTEXT Controls
   DCSTYLE_RIGHT          = 1024   ; Right Justify Text in VARYTEXT and STATICTEXT Controls
   DCSTYLE_NOSELCURLEFT   = 2048   ; No selection, cursor left EDITBOX MULTILINEBOX
   DCSTYLE_NOSELCURRIGHT  = 4096   ; No selection, cursor right EDITBOX MULTILINEBOX
   DCSTYLE_NOSELCURRIGHT  = 4096   ; No selection, cursor right EDITBOX MULTILINEBOX
   DCSTYLE_SHIELD         = 8192   ; Display Security Shield icon on button (Vista only) PUSHBUTTON PICTUREBUTTON
   DCSTYLE_MENUCHECK      = 32768  ; Adds a check mark to the left of a menu item MENUITEM
   DCSTYLE_MENURADIO      = 65536  ; Adds a radio button like dot graphic to the left of a menu item MENUITEM
   DCSTYLE_MENUSEP        = 131072 ; Causes a separator bar graphic to display instead of text at the menu item's location in the menu MENUITEM
   DCSTYLE_MENUBREAK      = 262144 ; Cause a column break to occur at the specific item when used with drop-down, context, or submenus.  Causes a line break (new row) with menu items hosted directly by the MENUBAR MENUITEM
   DCSTYLE_NOHEADER       = 524288    ; No header bar REPORTVIEW
   DCSTYLE_COLHEADER      = 1048576   ; First row column header REPORTVIEW
   DCSTYLE_GRIDLINES      = 2097152   ; Grid lines REPORTVIEW
   DCSTYLE_SELONEROW      = 4194304   ; Only one row can be selected at a time REPORTVIEW
   DCSTYLE_SELALLROW      = 8388608   ; Highlight complete row REPORTVIEW
   DCSTYLE_SORTASC        = 16777216  ; Ascending sort REPORTVIEW
   DCSTYLE_SORTDESC       = 33554432  ; Descending sort REPORTVIEW
   DCSTYLE_EDITCOL        = 67108864  ; Edit first columns text REPORTVIEW
   DCSTYLE_COLCHECKBOX    = 134217728 ; Add checkbox to first column REPORTVIEW
   DCSTYLE_INSHEADER=268435456   ; Include column header text REPORTVIEW



   ;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
   DC_RADIOCONTROL        = 16   ; RADIOBUTTON
   DC_POSITION            = 17   ; RADIOBUTTON
   DC_MENUNAMES           = 18   ; ALL CONTROLS
   DC_HANDLE              = 19   ; ALL CONTROLS (Except MENUBAR and MENUITEM)
   DC_RVCOLHEAD           = 20   ; REPORTVIEW
   DC_RVCOLWIDTH          = 21   ; REPORTVIEW
   DC_RVCOLMATCH          = 24   ; REPORTVIEW
   DC_RVCANCELEDIT        = 25   ; REPORTVIEW
   DC_RVCHECKEDROWS       = 26   ; REPORTVIEW
   DC_RVJUSTIFY           = 27   ; REPORTVIEW

   ;DialogObject constants
   
   DLGOBJECT_ADDEVENT     = 1    ; Call dialog callback when the specified event occurs 
   DLGOBJECT_REMOVEEVENT  = 2    ; Stop calling dialog callback when an event previously requested with 
   DLGOBJECT_GETOBJECT    = 3    ; Return an object references to the specified control
   DLGOBJECT_GETPICOBJECT = 4    ; Create and return an object reference to a picture object

   ;Return code constants
   RET_DO_CANCEL          =  0   ; Cancels dialog
   RET_DO_DEFAULT         = -1   ; Continue with default processing for control
   RET_DO_NOT_EXIT        = -2   ; Do not exit the dialog

#EndSubRoutine
   


Modify message



Title: Re: Testing Compatibility of SET/GET and Styles of Controls
Post by: stanl on September 01, 2014, 06:20:54 AM
Good stuff, Jim!!!

Title: Re: Testing Compatibility of SET/GET and Styles of Controls
Post by: kdmoyers on September 02, 2014, 09:01:58 AM
Thanks Jim!
Title: Re: Testing Compatibility of SET/GET and Styles of Controls
Post by: JTaylor on September 02, 2014, 09:48:13 AM
Thanks guys....hope it is useful.

Jim