WinBatch® Technical Support Forum

Archived Boards => WinBatch Dynamic Dialogs => Topic started by: stevengraff on April 10, 2014, 10:21:46 AM

Title: Detect index of selection from droplistbox
Post by: stevengraff on April 10, 2014, 10:21:46 AM
Is there any way to find out precisely which item a user has clicked on in a droplistbox?

In my script, it's possible for there to be non-unique items on the list, and it would help to know whether the Marsha Adams selected by the user was the Marsha Adams in the first, 3rd, or 9th position on the list. Or do I need to modify my list so that each item shows an "index:"

1. Marsha Adams
2. Bob Jones
3. Mike Wilson
4. Marsha Adams
5. Tim Smith
Title: Re: Detect index of selection from droplistbox
Post by: Deana on April 10, 2014, 11:55:57 AM
Maybe check out this code sample: http://techsupt.winbatch.com/webcgi/webbatch.exe?techsupt/tsleft.web+WinBatch/Dialog~Editor/Dialog~Editor~version~6.2+~Index~of~Droplistbox~Selection~.txt
Title: Re: Detect index of selection from droplistbox
Post by: JTaylor on April 10, 2014, 12:42:50 PM
If that doesn't do what you need the ComControl Extender might be useful...

The Dialog Control Extender is located here: http://techsupt.winbatch.com/webcgi/webbatch.exe?techsupt/tsleft.web+WIL~Extenders/_Third~Party~Extenders/Dialog~Controls~Extender+Dialog~Controls~Extender.txt

Jim
Title: Re: Detect index of selection from droplistbox
Post by: stevengraff on April 10, 2014, 09:30:33 PM
Jim, there's a comcontrol.zip file there, but inside the zip I see no help or doc or instructions. You know?
Title: Re: Detect index of selection from droplistbox
Post by: JTaylor on April 11, 2014, 06:51:37 AM
Ooops!!! Wonder how that happened.  Sorry.   

Here it is...

If you find any errors please let me know...amazing how many times I can go through that and still miss stuff.

Guess this probably  tells me how many people have looked at it  ;)

Jim
Title: Re: Detect index of selection from droplistbox
Post by: JTaylor on April 11, 2014, 06:55:58 AM
Hmmmmmmmm....odd....after suggesting this I'm not seeing a function for getting that you wanted.  You can check the selection state of an item but not seeing one for getting the index of the selected item.  I'll do some digging as that seems odd to me.  Maybe I was think of the ListView/ReportView options.

Jim
Title: Re: Detect index of selection from droplistbox
Post by: kdmoyers on April 11, 2014, 06:58:31 AM
Quote from: stevengraff on April 10, 2014, 10:21:46 AM
Is there any way to find out precisely which item a user has clicked on in a droplistbox?

yes, and it's pretty easy. 
before you display your list, for each element, append a hundred spaces and an index number (1,2,3,4...)

when this list displays, the index number will not be visible, it's so far to the right it gets clipped off.

when you get the selected item back, simply treat it like a space delimited list and take the last element of it.
Code (winbatch) Select
itemindex = itemextract(-1,item,' '))

this gives you an index number without affecting what the user sees.
-Kirby
Title: Re: Detect index of selection from droplistbox
Post by: stevengraff on April 11, 2014, 07:10:58 AM
That's pretty clever.
Title: Re: Detect index of selection from droplistbox
Post by: JTaylor on April 11, 2014, 07:41:30 AM
Keep in mind, if you need the selected value, you must keep track of the original value because if you want to use DialogControlSet() it won't work unless you use the the "real" value in the list.   

Jim
Title: Re: Detect index of selection from droplistbox
Post by: stevengraff on April 11, 2014, 11:59:38 AM
Yeah, that's a pain.

One question, probably not related to anyone's deficiency (other than my own)...

when I try to open your (or anyone else's) .chm file, I see the tree structure on the left (books and pages, etc.) but the pane on the right is completely blank. Am I just missing a dll or something? (I'm using server '08).
Title: Re: Detect index of selection from droplistbox
Post by: JTaylor on April 11, 2014, 01:26:06 PM
Do you have it local or on a network drive?  I know there were some security measures implemented a few years ago that affected CHM files and trying to read them from network drives.

Jim
Title: Re: Detect index of selection from droplistbox
Post by: stevengraff on April 11, 2014, 01:35:22 PM
Yes, I was trying from a network location, plus... see: http://www.xyplorer.com/faq-topic.php?id=chm
Title: Re: Detect index of selection from droplistbox
Post by: JTaylor on April 11, 2014, 07:15:37 PM
Probably should just delete this but then my next post won't make sense so......


Was thinking there was another thing too but was in the middle of something and couldn't recall.   

Also, just realized that you were wanting the index of a droplistbox...I've been thinking ItemListBox.  In any event, I spent the afternoon and evening implementing a function to retrieve a Tab-Delimited list of indexes of selected items in an ItemListBox.   Sure wish I knew C as it is about a 2-3 minute job but took me 3-4 hours so I'm posting it even if it isn't helpful :)

All this variable type stuff drives me crazy...guess WinBatch has made me ignorant and lazy...or maybe I'm ignorant because I'm lazy ;)


Jim
Title: Re: Detect index of selection from droplistbox
Post by: JTaylor on April 11, 2014, 09:04:05 PM
Okay...I'm worse than a snapping turtle who has ahold of something...

This version has two functions for getting and setting the current index selection in a DropListBox.

Deana, please replace the one in the Tech DB with this one.  Also, please put the CHM file in the zip file.  The size limits here wouldn't let me combine them.  Thanks.

Jim
Title: Re: Detect index of selection from droplistbox
Post by: ....IFICantBYTE on April 13, 2014, 12:30:15 AM
I'm a bit late to this party, but here is an example of how to get the index of the selected item in a dialog droplist (Combo) box control using a DllCall in a UDF:

Code (winbatch) Select
;Make an example list to use in the ComboBox later:
dlVariable1 = "Apples":@TAB:"Apples":@TAB:"Grapes":@TAB:"Pears":@TAB:"Bananas":@TAB:"Apples":@TAB:"Grapes"

;The UDF

;-----------------------------------------------------------------------------------------------------------------------------------------;
;CBGet : Get info about ComboBox items                                                                             v1.0  ....IFICantBYTE  ;
;-----------------------------------------------------------------------------------------------------------------------------------------;
;hComboCtrl  : Handle to the Combo (DropList) Control                                                                                     ;
;GetWhat     : Use 1 to get the total number of items, anything else to get the index number of the selected item (in a zero based list)  ;
;-----------------------------------------------------------------------------------------------------------------------------------------;
;Returns     : Returns the total number of items, or the selected item's index number, depending on the request in the GetWhat parameter  ;
;-----------------------------------------------------------------------------------------------------------------------------------------;
#Definefunction CBGet(hComboCtrl,GetWhat)
User32=StrCat(DirWindows(1),"user32.dll")
CB_GETCOUNT = 326;Gets the number of items in the list box of a combo box.
CB_GETCURSEL = 327;Gets the index of the currently selected item, if any, in the list box of a combo box.
If GetWhat == 1
CB_Msg = CB_GETCOUNT
Else
CB_Msg = CB_GETCURSEL
EndIf
Return DllCall(user32,long:"SendMessageA",long:hComboCtrl,long:CB_Msg,long:0,long:0)
#Endfunction
;##########################################################################################################################################


;TEST DIALOG BELOW:

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


#DefineSubRoutine InitDialogConstants()
   ;DialogprocOptions Constants
   MSG_INIT=0                    ; The one-time initialization
   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 DialogProcOptions 1002
   MSG_FILEBOXDOUBLECLICK=12     ; Get double-click message on a FileListBox
   MSG_ITEMBOXDOUBLECLICK=13     ; Get double-click message on an ItemBox
   MSG_COMEVENT=14               ; COMCONTROL Event notification from DialogObject (NOT DialogProcOptions)
   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 changed text of first column
   MSG_RVHEADER=22               ; Reportview header clicked

   DPO_DISABLESTATE=1000         ; codes -1=GetSetting 0=EnableDialog 1=DisableDialog
   DPO_CHANGEBACKGROUND=1001     ; -1=Get Current 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          ; Set/Get Dialog Title - (-1 to get)
   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 a space delimited list of the width and height of the client area.

   ;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_DEFAULT=0             ; Set Default Style
   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 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_NOADJUST=256          ; Turns off auto-height adjustment  ITEMBOX FILELISTBOX
   DCSTYLE_TEXTCENTER=512        ; Center text in control VARYTEXT STATICTEXT
   DCSTYLE_TEXTRIGHT=1024        ; Flush-Right text in control VARYTEXT STATICTEXT
   DCSTYLE_NOSELCURLEFT=2048     ; No selection, cursor left 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        ; Separator bar graphic MENUITEM
   DCSTYLE_MENUBREAK=262144      ; Column break MENUBAR
   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

   ;DialogControlSet / DialogControlGet Constants
   DC_CHECKBOX=1             ; CHECKBOX REPORTVIEW
   DC_RADIOBUTTON=2          ; RADIOBUTTON
   DC_EDITBOX=3              ; EDITBOX MULTILINEBOX
   DC_TITLE=4                ; PICTURE RADIOBUTTON CHECKBOX PICTUREBUTTON VARYTEXT STATICTEXT GROUPBOX PUSHBUTTON MENUITEM
   DC_ITEMBOXCONTENTS=5      ; ITEMBOX FILELISTBOX DROPLISTBOX REPORTVIEW
   DC_ITEMBOXSELECT=6        ; ITEMBOX FILELISTBOX DROPLISTBOX REPORTVIEW
   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 REPORTVIEW
   DC_PICTUREBITMAP=12       ; PICTURE PICTUREBUTTON
   DC_TEXTCOLOR=13           ; RADIOBUTTON CHECKBOX VARYTEXT STATICTEXT GROUPBOX PUSHBUTTON ITEMBOX FILELISTBOX DROPLISTBOX SPINNER EDITBOX MULTILINEBOX REPORTVIEW
   DC_ITEMBOXADD=14          ; ITEMBOX FILELISTBOX DROPLISTBOX REPORTVIEW
   DC_ITEMBOXREMOVE=15       ; ITEMBOX FILELISTBOX DROPLISTBOX REPORTVIEW
   DC_RADIOVALUE=16          ; RADIOBUTTON
   DC_POSITION=17            ; ALL CONTROLS (Except MENUBAR and MENUITEM)
   DC_MENUNAMES=18           ; ALL CONTROLS
   DC_HANDLE=19              ; ALL CONTROLS (Except MENUBAR and MENUITEM)
   DC_RVCOLHEAD=20           ; REPORTVIEW
   DC_RVCOLWIDTH=21          ; REPORTVIEW
   DC_RVADDCOL=22            ; REPORTVIEW
   DC_RVREMOVECOL=23         ; REPORTVIEW
   DC_RVMATCHCOL=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_STOPEVENT=2     ; Stop calling dialog callback when an event previously requested with
   DLGOBJECT_GETOBJECT=3     ; Return an object references to the specified control
   DLGOBJECT_GETPICTURE=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
   return
#EndSubroutine
;============================================================
;============================================================
;============================================================


InitDialogConstants()                                       ; Initialize Dialog Constants (need only be done once usually)

#DefineSubroutine MyDialogCallbackProc(MyDialog_Handle,MyDialog_Message,MyDialog_Name,MyDialog_EventInfo,MyDialog_ChangeInfo)
   ON_EQUAL = @TRUE                                         ; Initialize variable ON_EQUAL
   switch MyDialog_Message                                  ; Switch based on Dialog Message type
      case MSG_INIT                                         ; Standard Initialization message
;         DialogProcOptions(MyDialog_Handle,MSG_TIMER,1000)
;         DialogProcOptions(MyDialog_Handle,MSG_BUTTONPUSHED,@TRUE)
         DialogProcOptions(MyDialog_Handle,MSG_COMBOCHANGE,@TRUE)
hCombo = DialogControlGet(MyDialog_Handle,"DropListBox_1",19); get the windows handle of the DropList (Combo) control in the dialog


         return(RET_DO_DEFAULT)

;     case MSG_BUTTONPUSHED
;        if MyDialog_Name == "PushButton_OK"                ; OK
;              return(RET_DO_DEFAULT)

;        elseif MyDialog_Name == "PushButton_Cancel"        ; Cancel
;              return(RET_DO_DEFAULT)

;        endif                                              ; MyDialog_Name
;        return(RET_DO_DEFAULT)

     case MSG_COMBOCHANGE                                  ; ID "DropListBox_1"  dlVariable1
  TotalItems = CBGet(hCombo,1);Call the UDF to get the total number of items in the Combo (DropList) Box control
  SelectedItemIndex = CBGet(hCombo,0);Call the UDF to get the index of the selected item in the Combo control's list
  SelectedItemText = DialogControlGet(MyDialog_Handle,"DropListBox_1",6)
  Message("Returned result:","There are ":TotalItems:" items in the list.":@CR:"Item 0 (zero) is at the top, and you just selected the item with index number ":SelectedItemIndex:@CR:"which displays the text: ":SelectedItemText)

   endswitch                                                ; MyDialog_Message
   return(RET_DO_DEFAULT)
#EndSubroutine                                              ; End of Dialog Callback MyDialogCallbackProc

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


MyDialogFormat=`WWWDLGED,6.2`

MyDialogCaption=`Use the droplist (Combo) box to select an item`
MyDialogX=100
MyDialogY=100
MyDialogWidth=180
MyDialogHeight=167
MyDialogNumControls=003
MyDialogProcedure=`MyDialogCallbackProc`
MyDialogFont=`DEFAULT`
MyDialogTextColor=`DEFAULT`
MyDialogBackground=`DEFAULT,DEFAULT`
MyDialogConfig=0

MyDialog001=`013,145,036,012,PUSHBUTTON,"PushButton_OK",DEFAULT,"OK",1,10,32,DEFAULT,DEFAULT,DEFAULT`
MyDialog002=`131,145,036,012,PUSHBUTTON,"PushButton_Cancel",DEFAULT,"Cancel",0,20,DEFAULT,DEFAULT,DEFAULT,DEFAULT`
MyDialog003=`013,019,148,118,DROPLISTBOX,"DropListBox_1",dlVariable1,DEFAULT,DEFAULT,30,DEFAULT,DEFAULT,DEFAULT,DEFAULT`

ButtonPushed=Dialog("MyDialog")
Title: Re: Detect index of selection from droplistbox
Post by: Deana on April 14, 2014, 08:47:57 AM
Quote from: stevengraff on April 11, 2014, 11:59:38 AM
Yeah, that's a pain.

One question, probably not related to anyone's deficiency (other than my own)...

when I try to open your (or anyone else's) .chm file, I see the tree structure on the left (books and pages, etc.) but the pane on the right is completely blank. Am I just missing a dll or something? (I'm using server '08).

CHM file downloaded from the internet are blocked. Simply right click on the chm, select properties and click the Unblock button.
Title: Re: Detect index of selection from droplistbox
Post by: Deana on April 14, 2014, 08:58:09 AM
Quote from: ....IFICantBYTE on April 13, 2014, 12:30:15 AM
I'm a bit late to this party, but here is an example of how to get the index of the selected item in a dialog droplist (Combo) box control using a DllCall in a UDF:

Code (winbatch) Select
;Make an example list to use in the ComboBox later:
dlVariable1 = "Apples":@TAB:"Apples":@TAB:"Grapes":@TAB:"Pears":@TAB:"Bananas":@TAB:"Apples":@TAB:"Grapes"

;The UDF

;-----------------------------------------------------------------------------------------------------------------------------------------;
;CBGet : Get info about ComboBox items                                                                             v1.0  ....IFICantBYTE  ;
;-----------------------------------------------------------------------------------------------------------------------------------------;
;hComboCtrl  : Handle to the Combo (DropList) Control                                                                                     ;
;GetWhat     : Use 1 to get the total number of items, anything else to get the index number of the selected item (in a zero based list)  ;
;-----------------------------------------------------------------------------------------------------------------------------------------;
;Returns     : Returns the total number of items, or the selected item's index number, depending on the request in the GetWhat parameter  ;
;-----------------------------------------------------------------------------------------------------------------------------------------;
#Definefunction CBGet(hComboCtrl,GetWhat)
User32=StrCat(DirWindows(1),"user32.dll")
CB_GETCOUNT = 326;Gets the number of items in the list box of a combo box.
CB_GETCURSEL = 327;Gets the index of the currently selected item, if any, in the list box of a combo box.
If GetWhat == 1
CB_Msg = CB_GETCOUNT
Else
CB_Msg = CB_GETCURSEL
EndIf
Return DllCall(user32,long:"SendMessageA",long:hComboCtrl,long:CB_Msg,long:0,long:0)
#Endfunction
;##########################################################################################################################################


;TEST DIALOG BELOW:

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


#DefineSubRoutine InitDialogConstants()
   ;DialogprocOptions Constants
   MSG_INIT=0                    ; The one-time initialization
   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 DialogProcOptions 1002
   MSG_FILEBOXDOUBLECLICK=12     ; Get double-click message on a FileListBox
   MSG_ITEMBOXDOUBLECLICK=13     ; Get double-click message on an ItemBox
   MSG_COMEVENT=14               ; COMCONTROL Event notification from DialogObject (NOT DialogProcOptions)
   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 changed text of first column
   MSG_RVHEADER=22               ; Reportview header clicked

   DPO_DISABLESTATE=1000         ; codes -1=GetSetting 0=EnableDialog 1=DisableDialog
   DPO_CHANGEBACKGROUND=1001     ; -1=Get Current 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          ; Set/Get Dialog Title - (-1 to get)
   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 a space delimited list of the width and height of the client area.

   ;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_DEFAULT=0             ; Set Default Style
   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 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_NOADJUST=256          ; Turns off auto-height adjustment  ITEMBOX FILELISTBOX
   DCSTYLE_TEXTCENTER=512        ; Center text in control VARYTEXT STATICTEXT
   DCSTYLE_TEXTRIGHT=1024        ; Flush-Right text in control VARYTEXT STATICTEXT
   DCSTYLE_NOSELCURLEFT=2048     ; No selection, cursor left 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        ; Separator bar graphic MENUITEM
   DCSTYLE_MENUBREAK=262144      ; Column break MENUBAR
   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

   ;DialogControlSet / DialogControlGet Constants
   DC_CHECKBOX=1             ; CHECKBOX REPORTVIEW
   DC_RADIOBUTTON=2          ; RADIOBUTTON
   DC_EDITBOX=3              ; EDITBOX MULTILINEBOX
   DC_TITLE=4                ; PICTURE RADIOBUTTON CHECKBOX PICTUREBUTTON VARYTEXT STATICTEXT GROUPBOX PUSHBUTTON MENUITEM
   DC_ITEMBOXCONTENTS=5      ; ITEMBOX FILELISTBOX DROPLISTBOX REPORTVIEW
   DC_ITEMBOXSELECT=6        ; ITEMBOX FILELISTBOX DROPLISTBOX REPORTVIEW
   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 REPORTVIEW
   DC_PICTUREBITMAP=12       ; PICTURE PICTUREBUTTON
   DC_TEXTCOLOR=13           ; RADIOBUTTON CHECKBOX VARYTEXT STATICTEXT GROUPBOX PUSHBUTTON ITEMBOX FILELISTBOX DROPLISTBOX SPINNER EDITBOX MULTILINEBOX REPORTVIEW
   DC_ITEMBOXADD=14          ; ITEMBOX FILELISTBOX DROPLISTBOX REPORTVIEW
   DC_ITEMBOXREMOVE=15       ; ITEMBOX FILELISTBOX DROPLISTBOX REPORTVIEW
   DC_RADIOVALUE=16          ; RADIOBUTTON
   DC_POSITION=17            ; ALL CONTROLS (Except MENUBAR and MENUITEM)
   DC_MENUNAMES=18           ; ALL CONTROLS
   DC_HANDLE=19              ; ALL CONTROLS (Except MENUBAR and MENUITEM)
   DC_RVCOLHEAD=20           ; REPORTVIEW
   DC_RVCOLWIDTH=21          ; REPORTVIEW
   DC_RVADDCOL=22            ; REPORTVIEW
   DC_RVREMOVECOL=23         ; REPORTVIEW
   DC_RVMATCHCOL=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_STOPEVENT=2     ; Stop calling dialog callback when an event previously requested with
   DLGOBJECT_GETOBJECT=3     ; Return an object references to the specified control
   DLGOBJECT_GETPICTURE=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
   return
#EndSubroutine
;============================================================
;============================================================
;============================================================


InitDialogConstants()                                       ; Initialize Dialog Constants (need only be done once usually)

#DefineSubroutine MyDialogCallbackProc(MyDialog_Handle,MyDialog_Message,MyDialog_Name,MyDialog_EventInfo,MyDialog_ChangeInfo)
   ON_EQUAL = @TRUE                                         ; Initialize variable ON_EQUAL
   switch MyDialog_Message                                  ; Switch based on Dialog Message type
      case MSG_INIT                                         ; Standard Initialization message
;         DialogProcOptions(MyDialog_Handle,MSG_TIMER,1000)
;         DialogProcOptions(MyDialog_Handle,MSG_BUTTONPUSHED,@TRUE)
         DialogProcOptions(MyDialog_Handle,MSG_COMBOCHANGE,@TRUE)
hCombo = DialogControlGet(MyDialog_Handle,"DropListBox_1",19); get the windows handle of the DropList (Combo) control in the dialog


         return(RET_DO_DEFAULT)

;     case MSG_BUTTONPUSHED
;        if MyDialog_Name == "PushButton_OK"                ; OK
;              return(RET_DO_DEFAULT)

;        elseif MyDialog_Name == "PushButton_Cancel"        ; Cancel
;              return(RET_DO_DEFAULT)

;        endif                                              ; MyDialog_Name
;        return(RET_DO_DEFAULT)

     case MSG_COMBOCHANGE                                  ; ID "DropListBox_1"  dlVariable1
  TotalItems = CBGet(hCombo,1);Call the UDF to get the total number of items in the Combo (DropList) Box control
  SelectedItemIndex = CBGet(hCombo,0);Call the UDF to get the index of the selected item in the Combo control's list
  SelectedItemText = DialogControlGet(MyDialog_Handle,"DropListBox_1",6)
  Message("Returned result:","There are ":TotalItems:" items in the list.":@CR:"Item 0 (zero) is at the top, and you just selected the item with index number ":SelectedItemIndex:@CR:"which displays the text: ":SelectedItemText)

   endswitch                                                ; MyDialog_Message
   return(RET_DO_DEFAULT)
#EndSubroutine                                              ; End of Dialog Callback MyDialogCallbackProc

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


MyDialogFormat=`WWWDLGED,6.2`

MyDialogCaption=`Use the droplist (Combo) box to select an item`
MyDialogX=100
MyDialogY=100
MyDialogWidth=180
MyDialogHeight=167
MyDialogNumControls=003
MyDialogProcedure=`MyDialogCallbackProc`
MyDialogFont=`DEFAULT`
MyDialogTextColor=`DEFAULT`
MyDialogBackground=`DEFAULT,DEFAULT`
MyDialogConfig=0

MyDialog001=`013,145,036,012,PUSHBUTTON,"PushButton_OK",DEFAULT,"OK",1,10,32,DEFAULT,DEFAULT,DEFAULT`
MyDialog002=`131,145,036,012,PUSHBUTTON,"PushButton_Cancel",DEFAULT,"Cancel",0,20,DEFAULT,DEFAULT,DEFAULT,DEFAULT`
MyDialog003=`013,019,148,118,DROPLISTBOX,"DropListBox_1",dlVariable1,DEFAULT,DEFAULT,30,DEFAULT,DEFAULT,DEFAULT,DEFAULT`

ButtonPushed=Dialog("MyDialog")


Thanks for sharing the User Defined Function solution. Posted to the tech database: http://techsupt.winbatch.com/webcgi/webbatch.exe?techsupt/tsleft.web+WinBatch/Dialog~Editor/Dialog~Editor~version~6.2+~Index~of~Droplistbox~Selection~.txt
Title: Re: Detect index of selection from droplistbox
Post by: Deana on April 14, 2014, 09:06:10 AM
Quote from: JTaylor on April 11, 2014, 09:04:05 PM
Okay...I'm worse than a snapping turtle who has ahold of something...

This version has two functions for getting and setting the current index selection in a DropListBox.

Deana, please replace the one in the Tech DB with this one.  Also, please put the CHM file in the zip file.  The size limits here wouldn't let me combine them.  Thanks.

Jim

Jim,

Updated the Dialog Control Extender Extender here: http://techsupt.winbatch.com/webcgi/webbatch.exe?techsupt/tsleft.web+WIL~Extenders/_Third~Party~Extenders
Title: Re: Detect index of selection from droplistbox
Post by: JTaylor on April 14, 2014, 09:25:03 AM
Thanks.

Jim
Title: Re: Detect index of selection from droplistbox
Post by: stevengraff on April 24, 2014, 02:32:20 PM
(Sorry for letting this stew so long...)

Jim, your extender utilizes, as per your help file:

"All the functions will use the ControlHandle for whatever control with which you are working.  This can be obtained via DialogControlGet() similar to the following:

     ControlHandle = DialogControlGet(RV_Handle,"rv_RV_grid",19)"

Safe to assume there's no doing this with older versions of WinBatch? (i.e. 2008-B)
Title: Re: Detect index of selection from droplistbox
Post by: JTaylor on April 24, 2014, 09:29:34 PM
I'm going on memory here so someone may need to correct me....

The controlhandle would be calculated starting at 100 (maybe 101 but I think 100) and then counting by one using the Tab order of the controls.

Jim
Title: Re: Detect index of selection from droplistbox
Post by: Deana on April 25, 2014, 08:02:40 AM
Quote from: stevengraff on April 24, 2014, 02:32:20 PM
(Sorry for letting this stew so long...)

Jim, your extender utilizes, as per your help file:

"All the functions will use the ControlHandle for whatever control with which you are working.  This can be obtained via DialogControlGet() similar to the following:

     ControlHandle = DialogControlGet(RV_Handle,"rv_RV_grid",19)"

Safe to assume there's no doing this with older versions of WinBatch? (i.e. 2008-B)

Here are a couple of udfs that can be used in older versions:
http://techsupt.winbatch.com/webcgi/webbatch.exe?techsupt/tsleft.web+WinBatch/Dialog~Editor/Dialog~Editor~version~6.2/Samples+Get~handle~to~WIL~Dialog~Control.txt
Title: Re: Detect index of selection from droplistbox
Post by: stevengraff on April 25, 2014, 09:51:13 AM
Thanks Deana, but the 1005 in    ctrlnum = DialogProcOptions( dialog_handle, 1005, ctrlname )+99 is also a 6.2-ism, i.e. not recognized/legal in 2008-B.
Title: Re: Detect index of selection from droplistbox
Post by: Deana on April 25, 2014, 10:20:55 AM
Quote from: stevengraff on April 25, 2014, 09:51:13 AM
Thanks Deana, but the 1005 in    ctrlnum = DialogProcOptions( dialog_handle, 1005, ctrlname )+99 is also a 6.2-ism, i.e. not recognized/legal in 2008-B.

Okay so you will just pass the control number and add 99.

Code (winbatch) Select
ctrhandle = DllCall(StrCat(DirWindows(1),'user32.dll'),long:'GetDlgItem',long:dialog_handle,long:ctrlnum+99)
Title: Re: Detect index of selection from droplistbox
Post by: stevengraff on April 25, 2014, 10:23:33 AM
Yeah, I tried that already, but unfortunately I've got a few groupboxes in my dialog, each with a number lower than the droplist control. The droplist control number is 15, and I've tried 110 through 120 so far, but no luck.
Title: Re: Detect index of selection from droplistbox
Post by: stevengraff on April 25, 2014, 11:06:57 AM
Roboscript to the rescue! I found a way to get the handle...

   AddExtender("wwctl44i.dll")
   window1=cWndByWndSpec("wb0wcdl3","WinBatch",13,100,101,102,103,104,105,109,110,106,107,108,111,112)
   ControlHandle=cWndByID(window1,112)
   position = cbGetCurSel(ControlHandle)
   message("Position", position)

I must add, though, it's quite slow!
Title: Re: Detect index of selection from droplistbox
Post by: Deana on April 25, 2014, 11:20:40 AM
Quote from: stevengraff on April 25, 2014, 10:23:33 AM
Yeah, I tried that already, but unfortunately I've got a few groupboxes in my dialog, each with a number lower than the droplist control. The droplist control number is 15, and I've tried 110 through 120 so far, but no luck.

Maybe, launch your dialog then use RoboScripter to determine the actual control id. You will have to hard code the ids. This is one of the reasons the newer dialog format accepts NAMEs.
Title: Re: Detect index of selection from droplistbox
Post by: stevengraff on April 25, 2014, 11:25:05 AM
Well, 2 things:

1. My trick didn't "stick" in the compiled script.

2. It looks like 112, but plugging that number in to Jim's function just returns a "1" regardless of the pick.
Title: Re: Detect index of selection from droplistbox
Post by: Deana on April 25, 2014, 11:33:20 AM
Quote from: stevengraff on April 25, 2014, 11:06:57 AM
Roboscript to the rescue! I found a way to get the handle...

   AddExtender("wwctl44i.dll")
   window1=cWndByWndSpec("wb0wcdl3","WinBatch",13,100,101,102,103,104,105,109,110,106,107,108,111,112)
   ControlHandle=cWndByID(window1,112)
   position = cbGetCurSel(ControlHandle)
   message("Position", position)

I must add, though, it's quite slow!

I suspect it is slow because you are calling cWndByWndSpec. Try using DllHwnd with the dialog caption instead.
Title: Re: Detect index of selection from droplistbox
Post by: stevengraff on April 25, 2014, 11:48:52 AM
Thanks!

The following works real well:

   AddExtender("wwctl44i.dll")
   window1 = dllHwnd( winCaption )
   ControlHandle=cWndByID(window1,112)
   position = cbGetCurSel(ControlHandle)
   message("Position", position)

Title: Re: Detect index of selection from droplistbox
Post by: stevengraff on April 25, 2014, 02:19:57 PM
Quote from: JTaylor on April 11, 2014, 09:04:05 PM
This version has two functions for getting and setting the current index selection in a DropListBox.

Works great, thanks! Where can I send the donation?

Now that I've started in with your extender, I'm on a roll. ToolTips... very nice.

Tried sbCreateStatusBar though and didn't have any luck. Keep getting "3066 Wrong number of arguments" error:

   sbCreateStatusBar(DlgHandle,"This is the status bar",1,0)
Title: Re: Detect index of selection from droplistbox
Post by: stevengraff on April 25, 2014, 02:29:18 PM
OK; this:

   sbHandle = sbCreateStatusBar(DlgHandle,1,0)
   sbSetText(sbHandle,0,"Playing with ToolTips... maybe over-kill?")

works.
Title: Re: Detect index of selection from droplistbox
Post by: stevengraff on April 25, 2014, 02:46:14 PM
I appreciate that I'm taking the thread somewhat diagonal here, but... can you provide an option for ToolTips such that mousing over a control displays the tip in the status bar instead of a bubble?

And I like being able to change the color, but it looks like an all or nothing deal. If I wanted one ToolTip to stand out from the crowd by being in red, for example, I don't think that's presently possible.

ditto re: ToolTip title.
Title: Re: Detect index of selection from droplistbox
Post by: JTaylor on April 25, 2014, 03:13:18 PM
It isn't control number order but tab order + 99 even though I see that in a lot of postings.  Not sure how Group Boxes will affect that though.  Maybe open it in Dialog editor and start pressing TAB and counting?

Wish you had an old version WBRAD as it would give you a list.  I've since changed it to only use 6.2 dialogs though.


Jim
Title: Re: Detect index of selection from droplistbox
Post by: JTaylor on April 25, 2014, 03:17:09 PM
Oops...didn't see page 2 so my post is a bit late.  I'll look at the documentation on the StatusBar  to see if it is wrong.

Jim
Title: Re: Detect index of selection from droplistbox
Post by: JTaylor on April 25, 2014, 03:31:37 PM
Sorry...Bad documentation.  Intended to get the "Parts" stuff working on the StatusBar but apparently never got back to it.  The following should work.   Basically ignore/leave off the last parameter.  What you did is fine but can save the second step.

   sbHandle = sbCreateStatusBar(DlgHandle,"Playing with ToolTips... maybe over-kill?",1)

Jim

Quote from: stevengraff on April 25, 2014, 02:29:18 PM
OK; this:

   sbHandle = sbCreateStatusBar(DlgHandle,1,0)
   sbSetText(sbHandle,0,"Playing with ToolTips... maybe over-kill?")

works.
Title: Re: Detect index of selection from droplistbox
Post by: JTaylor on April 25, 2014, 04:06:44 PM
I don't see a way to set different colors for different tips.   You could use the Title option to make one stand out.    The ToolTip Control "controls" what happens with the display so no way to display it to a different place...at least not using that Control.  Talk the WinBatch folks into implementing a Mouseover event and then you could make that happen...or if you are ambitious enough you could still make it happen.

Jim


Quote from: stevengraff on April 25, 2014, 02:46:14 PM
I appreciate that I'm taking the thread somewhat diagonal here, but... can you provide an option for ToolTips such that mousing over a control displays the tip in the status bar instead of a bubble?

And I like being able to change the color, but it looks like an all or nothing deal. If I wanted one ToolTip to stand out from the crowd by being in red, for example, I don't think that's presently possible.

ditto re: ToolTip title.
Title: Re: Detect index of selection from droplistbox
Post by: stevengraff on April 25, 2014, 04:32:03 PM
From what I could see the Title option is "all or none" also, no?

Quote from: JTaylor on April 25, 2014, 04:06:44 PM
I don't see a way to set different colors for different tips.   You could use the Title option to make one stand out.   

Title: Re: Detect index of selection from droplistbox
Post by: JTaylor on April 25, 2014, 04:52:45 PM
You can't change the color but you can have it display an Icon.

Jim

Quote from: stevengraff on April 25, 2014, 04:32:03 PM
From what I could see the Title option is "all or none" also, no?

Title: Re: Detect index of selection from droplistbox
Post by: stevengraff on April 25, 2014, 05:33:23 PM
The result I am seeing is that the Title and Icon appear in every ToolTip on the dialog.

It looks like the 2nd parameter in

ttSetTitle(TTHandle,ControlHandle,Icon,Title)

is not being enforced.
Title: Re: Detect index of selection from droplistbox
Post by: JTaylor on April 25, 2014, 07:32:54 PM
I think I have it straightened out...The main thing is that my examples were bad and my documentation a bit misleading.   The trick is to Create the tooltip based on the control and not the dialog.   This will allow you to do what you are wanting...that is, doing different things with different tips.

Hopefully I corrected the documentation in all the needed places and the example script should work so looking at that code might help.

I have also tweaked the StatusBar so you can create Parts and set the Text for each part.



Jim

Quote from: stevengraff on April 25, 2014, 05:33:23 PM
The result I am seeing is that the Title and Icon appear in every ToolTip on the dialog.

It looks like the 2nd parameter in

ttSetTitle(TTHandle,ControlHandle,Icon,Title)

is not being enforced.
Title: Re: Detect index of selection from droplistbox
Post by: stevengraff on April 25, 2014, 08:23:05 PM
Quote from: JTaylor on April 25, 2014, 07:32:54 PM
The trick is to Create the tooltip based on the control and not the dialog.   This will allow you to do what you are wanting...that is, doing different things with different tips.
Got it!

The interesting thing is that the original way I was doing it (sort of) worked!

===========

sbCreateStatusBar still seems to require 3 parameters. And sbSetText can no longer use 0 as the 2nd parameter.
Title: Re: Detect index of selection from droplistbox
Post by: JTaylor on April 26, 2014, 04:38:21 AM
Arrrggghhhh....thought I had it all sorted....

Yes.  The issues is that it was creating one tooltip and the text was being set for the control so all the settings were the same except the text.   I figured out we needed to create separate tooltip handles for each control to do what you were wanting.  Not sure what is the best way but this allows for individual settings.

Guess I missed the one thing.   When I got the Parts working for the statusbar the sbSetText now requires a one-based index so it puts the text in the right part.


Deana, would you please replace what is in the Tech Database?



Jim


Quote from: stevengraff on April 25, 2014, 08:23:05 PM

Got it!

The interesting thing is that the original way I was doing it (sort of) worked!

===========

sbCreateStatusBar still seems to require 3 parameters. And sbSetText can no longer use 0 as the 2nd parameter.
Title: Re: Detect index of selection from droplistbox
Post by: stevengraff on April 26, 2014, 07:34:06 AM
This being my 1st experience with 3rd-party extenders... is there something I need to do to get the Shift-F1 key to bring up the help file?
Title: Re: Detect index of selection from droplistbox
Post by: JTaylor on April 26, 2014, 12:45:47 PM
I'll have to defer to someone else on that question...I assume you are speaking of Studio but I don't use it so not sure how that all works.

I gather that last post fixed everything to this point?

Jim
Title: Re: Detect index of selection from droplistbox
Post by: stevengraff on April 26, 2014, 12:59:41 PM
Yes, thanks, we're looking good!

Title: Re: Detect index of selection from droplistbox
Post by: Deana on April 28, 2014, 08:40:37 AM
Quote from: JTaylor on April 26, 2014, 04:38:21 AM
Deana, would you please replace what is in the Tech Database?

Jim

Posted updated extender .zip: http://techsupt.winbatch.com/webcgi/webbatch.exe?techsupt/tsleft.web+WIL~Extenders/_Third~Party~Extenders/Dialog~Controls~Extender+Dialog~Controls~Extender.txt
Title: Re: Detect index of selection from droplistbox
Post by: Deana on April 28, 2014, 09:11:21 AM
Quote from: stevengraff on April 26, 2014, 07:34:06 AM
This being my 1st experience with 3rd-party extenders... is there something I need to do to get the Shift-F1 key to bring up the help file?

Some special setup is required to allow WinBatch Studio to handle this. First you must create a .WEH file that contains all of the indexed functions ( see attached ). Then copy this file here:
C:\Program Files (x86)\WinBatch\System\Help\CommCtrl.weh

Next you will need to modify WSHELP.INI located here: C:\Program Files (x86)\WinBatch\System\Help\WSHELP.INI. Add a new data item to the [WIL} section in the format

QuoteHFx <equals> HelpFileName  HelpFileType

In this case in might look something like:

HF40 = CommCtrl.chm 4

You should now be able to right click on any of the CommCtrl (Dialog Control) extender functions in WinBatch studio and do a keyword look up.
Title: Re: Detect index of selection from droplistbox
Post by: JTaylor on April 28, 2014, 09:23:39 AM
Anything I need to do with Help File to make that work well?

Jim
Title: Re: Detect index of selection from droplistbox
Post by: Deana on April 28, 2014, 09:25:00 AM
Quote from: JTaylor on April 28, 2014, 09:23:39 AM
Anything I need to do with Help File to make that work well?

Jim

Simply make sure all the functions names are in the Index of the help file.
Title: Re: Detect index of selection from droplistbox
Post by: JTaylor on April 28, 2014, 09:55:13 AM
Most were but found 3-4 that weren't...

Jim

Title: Re: Detect index of selection from droplistbox
Post by: Deana on April 28, 2014, 09:59:30 AM
Quote from: JTaylor on April 28, 2014, 09:55:13 AM
Most were but found 3-4 that weren't...

Jim

Okay Jim, I have updated the latest zip file with your CHM file update...
Title: Re: Detect index of selection from droplistbox
Post by: stevengraff on April 29, 2014, 01:20:37 PM
An embarrassment of riches... now two of them pop up for a shift-F1!
Title: Re: Detect index of selection from droplistbox
Post by: Deana on April 29, 2014, 01:32:40 PM
Quote from: stevengraff on April 29, 2014, 01:20:37 PM
An embarrassment of riches... now two of them pop up for a shift-F1!

Not exactly sure why this occurs with Jims CHM Help file. Jim maybe try naming the main window of your helpfile to "$global_main".
Title: Re: Detect index of selection from droplistbox
Post by: JTaylor on April 29, 2014, 01:46:29 PM
Hmmmmmmm...may need a bit more clarification on that suggestion.   Attached is an image of where I *think* you suggest the change but not certain.   It predefines "Main" and doesn't let me change that.  I can define a secondary Window.  Does this look like what you mean or am I looking in the wrong place?  Guess I could fire up Studio and see what happens.

Jim
Title: Re: Detect index of selection from droplistbox
Post by: JTaylor on April 29, 2014, 01:59:26 PM
What I see is that it opens the main help file to the Intro page and then opens a Keyword lookup window with the function info displayed.   So it is "sort of" working.  I'm trying to see if there is some option to make it open to the topic in the main help file.

Jim
Title: Re: Detect index of selection from droplistbox
Post by: Deana on April 29, 2014, 02:13:09 PM
Quote from: JTaylor on April 29, 2014, 01:46:29 PM
Hmmmmmmm...may need a bit more clarification on that suggestion.   Attached is an image of where I *think* you suggest the change but not certain.   It predefines "Main" and doesn't let me change that.  I can define a secondary Window.  Does this look like what you mean or am I looking in the wrong place?  Guess I could fire up Studio and see what happens.

Jim

This issue has to do with how the help file is loaded from wshelp.dll in WinBatch Studio. Either change your help file project to use the '$global_main' window name or modify 'wshelp.dll' to make an exception for your specific help file. I recommend the former option of naming the help window  '$global_main' 

Add a new Window Named '$global_main' to your help file project and use that window name instead. Reference: http://msdn.microsoft.com/en-us/library/windows/desktop/ms670148(v=vs.85).aspx
Title: Re: Detect index of selection from droplistbox
Post by: JTaylor on April 29, 2014, 02:38:54 PM
I think I've done what you have suggested.  But I don't see any behavior change.   Can't say for certain that I am "us[ing] that window name instead" as I don't see any way to reference it other than select it from the Setup page I posted earlier and then "Publish" the project.  Sorry if I am being an idiot.  I've read through the Help in my Help tool (Help & Manual), that page at Microsoft and did some Googling but still not clear if I've done what you want.

Jim

Quote from: Deana on April 29, 2014, 02:13:09 PM

This issue has to do with how the help file is loaded from wshelp.dll in WinBatch Studio. Either change your help file project to use the '$global_main' window name or modify 'wshelp.dll' to make an exception for your specific help file. I recommend the former option of naming the help window  '$global_main' 

Add a new Window Named '$global_main' to your help file project and use that window name instead. Reference: http://msdn.microsoft.com/en-us/library/windows/desktop/ms670148(v=vs.85).aspx
Title: Re: Detect index of selection from droplistbox
Post by: Deana on April 29, 2014, 03:05:07 PM
Quote from: JTaylor on April 29, 2014, 02:38:54 PM
I think I've done what you have suggested.  But I don't see any behavior change.   Can't say for certain that I am "us[ing] that window name instead" as I don't see any way to reference it other than select it from the Setup page I posted earlier and then "Publish" the project.  Sorry if I am being an idiot.  I've read through the Help in my Help tool (Help & Manual), that page at Microsoft and did some Googling but still not clear if I've done what you want.

Jim

Quote from: Deana on April 29, 2014, 02:13:09 PM

This issue has to do with how the help file is loaded from wshelp.dll in WinBatch Studio. Either change your help file project to use the '$global_main' window name or modify 'wshelp.dll' to make an exception for your specific help file. I recommend the former option of naming the help window  '$global_main' 

Add a new Window Named '$global_main' to your help file project and use that window name instead. Reference: http://msdn.microsoft.com/en-us/library/windows/desktop/ms670148(v=vs.85).aspx

Okay so you added the new window named $global_main', compiled the help file and placed the newly compiled help file in the WinBatch subdirectory then tested from WinBatch Studio? yet you are still getting two windows displayed?

Works for me. Attached is a recompiled version of your help file. Place this in your WinBatch subdirectory then test again.
Title: Re: Detect index of selection from droplistbox
Post by: JTaylor on April 29, 2014, 05:48:23 PM
Odd.   I still see the same behavior.   Opens the main file at Intro and then opens a second window with a Keyword Search pane and then the selected Topic opens in the other pane.  I've attached an image.

So, maybe it isn't an issue with the settings on my Help file publishing???  Not sure what else it could be.   Personally it isn't an issue for me but don't want to put something out there that creates problems for anyone or creates extra work for you.   Any other suggestions?  Any related settings in Studio?

Jim
Title: Re: Detect index of selection from droplistbox
Post by: JTaylor on April 29, 2014, 06:41:07 PM
Went back and double-checked the WEH file and noticed it had the wrong name under LOOKUP.  I changed that and now it seems to work so guess I'm doing something wrong in the Publish settings.

Jim