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.

Open Dialog Relative to Another Window

 Keywords:  AskItemlist Open Dialog Relative Parent Window

In this example, if you have "WinBatch Studio..." open, the dialog will be relative to it.
#DefineSubRoutine AskItemCallbackProc(AskItem_Handle,AskItem_Message,AskItem_Name,AskItem_EventInfo,AskItem_ChangeInfo)
   ON_EQUAL = @TRUE
   Switch AskItem_Message
      Case 0; MSG_INIT
         DialogProcOptions(AskItem_Handle,1,1000)   ;--MSG_TIMER
         DialogProcOptions(AskItem_Handle,2,@TRUE)  ;--MSG_BUTTONPUSHED
         DialogProcOptions(AskItem_Handle,7,@TRUE)  ;--MSG_ITEMSELECT
         If bSelect
            DialogControlState(AskItem_Handle, "PushButton_Cancel", 3, 1)
         EndIf
         If defaultvalue != ''
            DialogControlSet(AskItem_Handle, "ItemList", 6, StrReplace(defaultvalue, delimiter, @TAB))
         EndIf
         Return(-1)

      Case 2 ;--MSG_BUTTONPUSHED
         Switch ON_EQUAL
            Case AskItem_Name == "PushButton_OK"                    ; OK
               If bSelect && DialogControlGet(AskItem_Handle, "ItemList", 6) == '' Then Return -2
               Return(-1)

            Case AskItem_Name == "PushButton_Cancel"                ; Cancel
               Return(-1)

         EndSwitch
         Return(-1)

      Case 7 ;--MSG_ITEMSELECT
         Return(-1)
   EndSwitch
   Return(-1)
#EndSubRoutine


#DefineFunction DlgAskItemList(parentcaption, dx, dy, title, itemList, defaultvalue, delimiter, bSorted, bSingle, bSelect)
;   *********************************************************
;  * DlgAskItemList
;   * (i) parentcaption: valid caption of open window | ''
;   * (i) dx relative to parentwindow   | screen
;   * (i) dy relative to parentwindow   | screen
;   * (i) title of dialog
;   * (i) itemlist
;   * (i) defaultvalue(s)
;   * (i) delimiter for intemlist and defaultvalue
;   * (i) bSorted @FALSE|@TRUE
;   * (i) bSingle @FALSE|@TRUE
;   * (i) bSelect @FALSE|@TRUE
;   *
;   * (0) list of selected values
;   *
;   * 2011-05-22 Lars M. Doornbos
;   *********************************************************

   pset = IntControl(33,!bSingle,0,0,0)
   itemlist = StrReplace(itemlist, delimiter, @TAB)
   If bSorted Then itemlist = ItemSort(itemlist, @TAB)

;---------------------------------------------------------------------------------------------------------
AskItemFormat=`WWWDLGED,6.2`

AskItemCaption=`DlgAskItemList`
AskItemX=-01
AskItemY=-01
AskItemWidth=176
AskItemHeight=146
AskItemNumControls=003
AskItemProcedure=`AskItemCallbackProc`
AskItemFont=`DEFAULT`
AskItemTextColor=`DEFAULT`
AskItemBackground=`DEFAULT,DEFAULT`
AskItemConfig=3

AskItem001=`127,125,036,012,PUSHBUTTON,"PushButton_OK",DEFAULT,"OK",2,10,32,DEFAULT,DEFAULT,DEFAULT`
AskItem002=`089,125,036,012,PUSHBUTTON,"PushButton_Cancel",DEFAULT,"Cancel",1,20,DEFAULT,DEFAULT,DEFAULT,DEFAULT`
AskItem003=`009,005,154,114,ITEMBOX,"ItemList",ItemList,DEFAULT,DEFAULT,30,DEFAULT,DEFAULT,DEFAULT,DEFAULT`

AskItemButtonPushed=Dialog("AskItem",0) ; WinBatch will not display this dialog.
;---------------------------------------------------------------------------------------------------------

   AskItemCaption=title

   Xdlg = 0
   Ydlg = 0
   If ParentCaption != ''
      ErrorMode(@OFF)
         LastError()
         wp   = WinPosition(ParentCaption)
      ErrorMode(@CANCEL)
      If !LastError()
         Xdlg = ItemExtract(1,wp,',')*(WinMetrics(0)/WinMetrics(-6))/1000
         Ydlg = ItemExtract(2,wp,',')*(WinMetrics(1)/WinMetrics(-5))/1000
      EndIf
   EndIf
   AskItemX = Xdlg  + dx
   AskItemY = Ydlg  + dy

   AskItemButtonPushed=Dialog("AskItem",1) ; WinBatch will not display this dialog.
   If AskItemButtonPushed == 1 Then itemlist = ''  ;--canceled

   IntControl(33,pset,0,0,0)
   Return StrReplace(itemlist,@TAB,';')
#EndFunction

list = 'a;b;c;d;k;l;e;f'

rtv = DlgAskItemList('WinBatch Studio',50,10, 'select one or more characters..', list, 'a;f;k', ';', 1, 0, 0)

Pause('',rtv)

Article ID:   W17753
Filename:   Open Dialog Relative to Another Window.txt
File Created: 2011:05:23:09:19:38
Last Updated: 2011:05:23:09:19:38