Can't find the information you are looking for here? Then leave a message over on our WinBatch Tech Support Forum.
;Dialog Resize/Move example with native Resizing. Requires a WB 2010B version or higher and uses the 6.2 version of dialogs. ;Jim Taylor (jtaylor@jtdata.com) WinHide("") GoSub Function_Definitions IntControl (49, 1, 1, 0, 0) Home_Path = DirScript() DirChange(Home_Path) profile = "RESIZE" System_Ini = StrCat(Home_Path,"resize_move.ini") op_win_size = IniReadPvt(profile,"op_win_size","",System_Ini) op_win_state = IniReadPvt(profile,"op_win_state","",System_Ini) OPROCESSFormat=`WWWDLGED,6.2` OPROCESSCaption=`Order Processing` OPROCESSX=-01 OPROCESSY=-01 OPROCESSWidth=510 OPROCESSHeight=348 OPROCESSMinWidth=510 OPROCESSMinHeight=348 OPROCESSNumControls=015 OPROCESSProcedure=`OP_Sub` OPROCESSFont=`DEFAULT` OPROCESSTextColor=`DEFAULT` OPROCESSBackground=`DEFAULT,0|0|100` OPROCESSConfig=2 OPROCESS001=`003,003,040,026,PUSHBUTTON,"pb_OPR_Complete_1",DEFAULT,"Complete",3,15,DEFAULT,"Microsoft Sans Serif|6656|70|34","0|0|0",DEFAULT` OPROCESS002=`047,003,064,024,VARYTEXT,"vt_OPR_station_1",station_1,"station",DEFAULT,18,DEFAULT,"Microsoft Sans Serif|17920|40|34","255|255|255",DEFAULT` OPROCESS003=`113,003,030,024,VARYTEXT,"vt_OPR_ord_num_c_1",ord_num_c_1,"ord_num_c",DEFAULT,21,DEFAULT,"Microsoft Sans Serif|17920|40|34","255|255|255",DEFAULT` OPROCESS004=`145,015,020,014,PUSHBUTTON,"pb_OPR_X1",DEFAULT,"X",24,24,DEFAULT,"Microsoft Sans Serif|6656|70|34","0|0|0",DEFAULT` OPROCESS005=`003,031,166,312,ITEMBOX,"ib_OPR_igrid_1",DEFAULT,DEFAULT,DEFAULT,27,@csNoAdjust,DEFAULT,DEFAULT,DEFAULT` OPROCESS006=`171,003,040,026,PUSHBUTTON,"pb_OPR_Complete_2",DEFAULT,"Complete",6,30,DEFAULT,"Microsoft Sans Serif|6656|70|34","0|0|0",DEFAULT` OPROCESS007=`215,003,064,024,VARYTEXT,"vt_OPR_station_2",station_2,"station",DEFAULT,33,DEFAULT,"Microsoft Sans Serif|17920|40|34","255|255|255",DEFAULT` OPROCESS008=`281,003,030,024,VARYTEXT,"vt_OPR_ord_num_c_2",ord_num_c_2,"ord_num_c",DEFAULT,36,DEFAULT,"Microsoft Sans Serif|17920|40|34","255|255|255",DEFAULT` OPROCESS009=`313,015,020,014,PUSHBUTTON,"pb_OPR_X2",DEFAULT,"X",18,39,DEFAULT,"Microsoft Sans Serif|6656|70|34","0|0|0",DEFAULT` OPROCESS010=`171,031,166,312,ITEMBOX,"ib_OPR_igrid_2",DEFAULT,DEFAULT,DEFAULT,42,@csNoAdjust,DEFAULT,DEFAULT,DEFAULT` OPROCESS011=`339,003,040,026,PUSHBUTTON,"pb_OPR_Complete_3",DEFAULT,"Complete",9,45,DEFAULT,"Microsoft Sans Serif|6656|70|34","0|0|0",DEFAULT` OPROCESS012=`383,003,064,024,VARYTEXT,"vt_OPR_station_3",station_3,"station",DEFAULT,48,DEFAULT,"Microsoft Sans Serif|17920|40|34","255|255|255",DEFAULT` OPROCESS013=`449,003,030,024,VARYTEXT,"vt_OPR_ord_num_c_3",ord_num_c_3,"ord_num_c",DEFAULT,51,DEFAULT,"Microsoft Sans Serif|17920|40|34","255|255|255",DEFAULT` OPROCESS014=`481,015,020,014,PUSHBUTTON,"pb_OPR_X3",DEFAULT,"X",21,54,DEFAULT,"Microsoft Sans Serif|6656|70|34","0|0|0",DEFAULT` OPROCESS015=`339,031,166,312,ITEMBOX,"ib_OPR_igrid_3",DEFAULT,DEFAULT,DEFAULT,57,@csNoAdjust,DEFAULT,DEFAULT,DEFAULT` ButtonPushed=Dialog("OPROCESS") Exit :FUNCTION_DEFINITIONS #DefineSubRoutine OP_Sub(OPR_Handle,DMsg,DCID,DEInfo,ChangeInfo) Switch (DMsg) Case @deinit DialogProcOptions(OPR_Handle, @declose,1) ; Close selected (IntControl(49....) (1-On, 0-Off). DialogProcOptions(OPR_Handle, @deresize, 1) ; Resize Dialog. DialogProcOptions(OPR_Handle, @depbpush,1) ; Pushbutton/PictureButton. DialogProcOptions(OPR_Handle, @deibselect,1) ; ItemBox. DialogProcOptions(OPR_Handle, @deibdblclick,1) ; ItemBox Double-Clicked. For icol = 1 To 3 ord_num_c_%icol% = icol station_%icol% = "S-":icol igrid_%icol% = "Item Box %icol%" igrid_%icol%_list = "Item Box %icol%" DialogControlSet(OPR_Handle,"vt_OPR_station_%icol%",@dctitle,station_%icol%) DialogControlSet(OPR_Handle,"vt_OPR_ord_num_c_%icol%",@dctitle,ord_num_c_%icol%) DialogControlSet(OPR_Handle,"ib_OPR_igrid_%icol%",@dccontents,igrid_%icol%_list) DialogControlSet(OPR_Handle,"ib_OPR_igrid_%icol%",@dcselect,igrid_%icol%) Next ;################################################################################################ ; GIVE each Dialog a UNIQUE 'win_track' value and be sure to reset when you return from a sub-dialog. ;Get_Control_Movement() gets the initial size of the dialog and builds the array of the grow/move definitions ;you have defined. ;################################################################################################ win_track = "OPROCESS" Get_Control_Movement(OPR_Handle, win_track) ;################################################################################################ ;################################################################################################ ;The following restores the Dialog to the same size and position as when last closed. ;################################################################################################ If op_win_state == @zoomed Then WinZoom("Order Processing") curr_xsize = ItemExtract(1,DialogProcOptions(OPR_Handle, @dpoclientsize,-1)," ") curr_ysize = ItemExtract(2,DialogProcOptions(OPR_Handle, @dpoclientsize,-1)," ") ReSize_It(OPR_Handle) Else If op_win_size != "" && ItemCount(op_win_size,",") == 4 Then WinPlace(ItemExtract(1,op_win_size,","),ItemExtract(2,op_win_size,","),ItemExtract(3,op_win_size,","),ItemExtract(4,op_win_size,","), "Order Processing") curr_xsize = ItemExtract(1,DialogProcOptions(OPR_Handle, @dpoclientsize,-1)," ") curr_ysize = ItemExtract(2,DialogProcOptions(OPR_Handle, @dpoclientsize,-1)," ") ReSize_It(OPR_Handle) EndIf EndIf ;################################################################################################ Break Case @deresize curr_xsize = ItemExtract(1,DialogProcOptions(OPR_Handle, @dpoclientsize,-1)," ") curr_ysize = ItemExtract(2,DialogProcOptions(OPR_Handle, @dpoclientsize,-1)," ") Resize_It(OPR_Handle) Break Case @declose op_win_state = WinState("Order Processing") op_win_size = WinPosition("Order Processing") IniWritePvt(profile,"op_win_size",op_win_size,System_Ini) IniWritePvt(profile,"op_win_state",op_win_state,System_Ini) Return 9 Break Case @deibselect Switch(DialogProcOptions(OPR_Handle,@dpoctlnumber,DCID)) Case DialogProcOptions(OPR_Handle,@dpoctlnumber,"ib_OPR_igrid_1") button_text = DialogControlGet(OPR_Handle,"ib_OPR_igrid_1",@dcselect) button_text_list = DialogControlGet(OPR_Handle,"ib_OPR_igrid_1",@dccontents) Break Case DialogProcOptions(OPR_Handle,@dpoctlnumber,"ib_OPR_igrid_2") button_text = DialogControlGet(OPR_Handle,"ib_OPR_igrid_2",@dcselect) button_text_list = DialogControlGet(OPR_Handle,"ib_OPR_igrid_2",@dccontents) Break Case DialogProcOptions(OPR_Handle,@dpoctlnumber,"ib_OPR_igrid_3") button_text = DialogControlGet(OPR_Handle,"ib_OPR_igrid_3",@dcselect) button_text_list = DialogControlGet(OPR_Handle,"ib_OPR_igrid_3",@dccontents) Break EndSwitch Break Case @deibdblclick Switch(DialogProcOptions(OPR_Handle,@dpoctlnumber,DCID)) Case DialogProcOptions(OPR_Handle,@dpoctlnumber,"ib_OPR_igrid_1") button_text = DialogControlGet(OPR_Handle,"ib_OPR_igrid_1",@dcselect) button_text_list = DialogControlGet(OPR_Handle,"ib_OPR_igrid_1",@dccontents) Break Case DialogProcOptions(OPR_Handle,@dpoctlnumber,"ib_OPR_igrid_2") button_text = DialogControlGet(OPR_Handle,"ib_OPR_igrid_2",@dcselect) button_text_list = DialogControlGet(OPR_Handle,"ib_OPR_igrid_2",@dccontents) Break Case DialogProcOptions(OPR_Handle,@dpoctlnumber,"ib_OPR_igrid_3") button_text = DialogControlGet(OPR_Handle,"ib_OPR_igrid_3",@dcselect) button_text_list = DialogControlGet(OPR_Handle,"ib_OPR_igrid_3",@dccontents) Break EndSwitch Break Case @depbpush Switch(DialogProcOptions(OPR_Handle,@dpoctlnumber,DCID)) Case DialogProcOptions(OPR_Handle,@dpoctlnumber,"pb_OPR_Complete_1") button_text = DialogControlGet(OPR_Handle,"pb_OPR_Complete_1",@dctitle) Break Case DialogProcOptions(OPR_Handle,@dpoctlnumber,"pb_OPR_X1") button_text = DialogControlGet(OPR_Handle,"pb_OPR_X1",@dctitle) Break Case DialogProcOptions(OPR_Handle,@dpoctlnumber,"pb_OPR_Complete_2") button_text = DialogControlGet(OPR_Handle,"pb_OPR_Complete_2",@dctitle) Break Case DialogProcOptions(OPR_Handle,@dpoctlnumber,"pb_OPR_X2") button_text = DialogControlGet(OPR_Handle,"pb_OPR_X2",@dctitle) Break Case DialogProcOptions(OPR_Handle,@dpoctlnumber,"pb_OPR_Complete_3") button_text = DialogControlGet(OPR_Handle,"pb_OPR_Complete_3",@dctitle) Break Case DialogProcOptions(OPR_Handle,@dpoctlnumber,"pb_OPR_X3") button_text = DialogControlGet(OPR_Handle,"pb_OPR_X3",@dctitle) Break EndSwitch Break EndSwitch Return -2 #EndSubRoutine ;################################################################################################ ;################################################################################################ ; ; ; Below are the Routines you can use with any dialog. ; ; The only change is the GROW/MOVE definitions which ; ; are enclosed in IF statements based on the win_track ; ; value. ; ; ***************** ; ; ; ; You may need to tweak some of the code due to the fact ; ; that I have a standard way of naming my control names. ; ; Each Control type has a specific prefix. If you use WB_RAD ; ; to produce your Callback code as a starting point then you ; ; will need to change nothing. I think there is only one place ; ; and it at the end of the last function and it is marked. Apologies ; ; if I missed any others. ; ; ; ;################################################################################################ ;################################################################################################ ;Dialog Resize/Move example. Not sure on WinBatch version required. I do make use of the new dialog CONSTANTS. If you define those then you can ;probably drop back to 2010C. It uses the 6.2 version of dialogs. ;You can set a limit of how small you want to shrink/move controls within the Dialog itself. This must be set or this code will generate an error. ;Jim Taylor (jtaylor@jtdata.com) #DefineSubRoutine Get_Control_Movement(Mov_Handle, win_track) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;The following is the initial sizes, enumeration and settings ;for how a control will be handled during a resize. Obviously, ;it would be nice if this information was contained, and handled, ;by the Dialog. You can GROW and MOVE the same control. You ;must define what percentage of the change the control will receive, ;both vertically and horizontally. ;If you have stacked controls then keep in mind that the ;percentage of the move/grow changes as you move down/across. ;That is, if you have four controls, the first one might stay ;where it is (no move) but have .25 for the grow, ;the second will receive .25 for the move and .25 for the grow, ;the third will have .5 for the move and .25 for the grow ;the fourth will have .75 for the move and .25 for the grow. ;If you have very many controls you may find this easier to maintain ;in an external file and use ArrayFileGetCSV(). The following format ;will work. The header row is important as it fills the first row ;thereby allowing one to use a one-based array. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Decimals(-1) init_xsize%win_track% = ItemExtract(1,DialogProcOptions(Mov_Handle, @dpoclientsize, -1)," ") init_ysize%win_track% = ItemExtract(2,DialogProcOptions(Mov_Handle, @dpoclientsize, -1)," ") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;This is the move/grow definition for each control. Yes, at times it can get a bit tedious. ;Do note that the last line will NOT have a @CR on the end. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; arr_txt = "" arr_txt = arr_txt:"name, movement, x_m, x_g, y_m, y_g":@cr If win_track == "OPROCESS" Then arr_txt = arr_txt:"pb_OPR_Complete_1, POS_FIX, 1, 1, 1, 1":@cr arr_txt = arr_txt:"vt_OPR_station_1, POS_FIX, 1, 1, 1, 1":@cr arr_txt = arr_txt:"vt_OPR_ord_num_c_1, POS_FIX, 1, 1, 1, 1":@cr arr_txt = arr_txt:"pb_OPR_X1, POS_MOVE_H, .33333333334, 1, 1, 1":@cr arr_txt = arr_txt:"ib_OPR_igrid_1, POS_GROW_H|POS_GROW_V, 1, .33333333334, 1, 1":@cr arr_txt = arr_txt:"pb_OPR_Complete_2, POS_MOVE_H, .33333333334, .33333333334, 1, 1":@cr arr_txt = arr_txt:"vt_OPR_station_2, POS_MOVE_H, .33333333334, .33333333334, 1, 1":@cr arr_txt = arr_txt:"vt_OPR_ord_num_c_2, POS_MOVE_H, .33333333334, .33333333334, 1, 1":@cr arr_txt = arr_txt:"pb_OPR_X2, POS_MOVE_H, .66666666667, .33333333334, 1, 1":@cr arr_txt = arr_txt:"ib_OPR_igrid_2, POS_MOVEGROW_H|POS_GROW_V, .33333333334, .33333333334, 1, 1":@cr arr_txt = arr_txt:"pb_OPR_Complete_3, POS_MOVE_H, .66666666667, .33333333334, 1, 1":@cr arr_txt = arr_txt:"vt_OPR_station_3, POS_MOVE_H, .66666666667, .33333333334, 1, 1":@cr arr_txt = arr_txt:"vt_OPR_ord_num_c_3, POS_MOVE_H, .66666666667, .33333333334, 1, 1":@cr arr_txt = arr_txt:"pb_OPR_X3, POS_MOVE_H, 1, .33333333334, 1, 1":@cr arr_txt = arr_txt:"ib_OPR_igrid_3, POS_MOVEGROW_H|POS_GROW_V, .66666666667, .33333333334, 1, 1" EndIf arr_txt = StrReplace(arr_txt," ","") o_array%win_track% = Arrayize(arr_txt,@cr) ArrayRedim(o_array%win_track%,-1,7) xcnt = ArrInfo(o_array%win_track%,1)-1 For x = 0 To xcnt txt = o_array%win_track%[x,0] o_array%win_track%[x,5] = ItemExtract(6,txt,",") o_array%win_track%[x,4] = ItemExtract(5,txt,",") o_array%win_track%[x,3] = ItemExtract(4,txt,",") o_array%win_track%[x,2] = ItemExtract(3,txt,",") o_array%win_track%[x,1] = ItemExtract(2,txt,",") o_array%win_track%[x,0] = ItemExtract(1,txt,",") If x > 0 Then o_array%win_track%[x,6] = DialogControlGet(Mov_Handle,o_array%win_track%[x,0],@dcposition) Next #EndSubRoutine #DefineFunction Set_Control_Movement(Mov_Handle,xy,xdiff,ydiff,xt,yt,xb,yb,o_array) POS_FIX = 0 ; Allow Move/Resize of Control POS_GROW_H = 1 ; Fixed Position but grow Horizontally POS_GROW_V = 2 ; Fixed Position but grow Vertically POS_MOVE_H = 4 ; Move Horizontally with Resize but no growth POS_MOVE_V = 8 ; Move Vertically with Resize but no growth POS_MOVEGROW_H = 16 ; Grow and Move Horizontally POS_MOVEGROW_V = 32 ; Grow and Move Vertically Decimals(-1) tvar = o_array[xy,0] move_var = o_array[xy,1] ocutx_m = o_array[xy,2] ocutx_g = o_array[xy,3] ocuty_m = o_array[xy,4] ocuty_g = o_array[xy,5] xt_m_adj = 0 yt_m_adj = 0 xb_g_adj = 0 yb_g_adj = 0 If xt+(xdiff*%ocutx_m%) < 0 Then xt_m_adj = (xt+(xdiff*%ocutx_m%))*-1 If yt+(ydiff*%ocuty_m%) < 0 Then yt_m_adj = (yt+(ydiff*%ocuty_m%))*-1 If xb+(xdiff*%ocutx_g%) < 0 Then xb_g_adj = (xb+(xdiff*%ocutx_g%))*-1 If yb+(ydiff*%ocuty_g%) < 0 Then yb_g_adj = (yb+(ydiff*%ocuty_g%))*-1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Decimals(0) If %move_var% & POS_FIX Then DialogControlSet(Mov_Handle,tvar,@dcposition,xt:" ":yt:" ":xb:" ":yb) Return EndIf If %move_var% & POS_MOVE_H && %move_var% & POS_MOVEGROW_V Then DialogControlSet(Mov_Handle,tvar,@dcposition,xt+(xdiff*%ocutx_m%)+xt_m_adj:" ":yt+(ydiff*%ocuty_m%)+yt_m_adj:" ":xb:" ":yb+(ydiff*%ocuty_g%)+yb_g_adj) Return EndIf If %move_var% & POS_MOVE_H && %move_var% & POS_GROW_V Then DialogControlSet(Mov_Handle,tvar,@dcposition,xt+(xdiff*%ocutx_m%)+xt_m_adj:" ":yt:" ":xb:" ":yb+(ydiff*%ocuty_g%)+yb_g_adj) Return EndIf If %move_var% & POS_MOVE_V && %move_var% & POS_GROW_H Then DialogControlSet(Mov_Handle,tvar,@dcposition,xt:" ":yt+(ydiff*%ocuty_m%)+yt_m_adj:" ":xb+(xdiff*%ocutx_g%)+xb_g_adj:" ":yb) Return EndIf If %move_var% & POS_MOVE_V && %move_var% & POS_MOVEGROW_H Then DialogControlSet(Mov_Handle,tvar,@dcposition,xt+(xdiff*%ocutx_m%)+xt_m_adj:" ":yt+(ydiff*%ocuty_m%)+yt_m_adj:" ":xb+(xdiff*%ocutx_g%)+xb_g_adj:" ":yb) Return EndIf If %move_var% & POS_GROW_H && %move_var% & POS_MOVEGROW_V Then DialogControlSet(Mov_Handle,tvar,@dcposition,xt:" ":yt+(ydiff*%ocuty_m%)+yt_m_adj:" ":xb+(xdiff*%ocutx_g%):" ":yb+(ydiff*%ocuty_g%)+yb_g_adj) Return EndIf If %move_var% & POS_GROW_V && %move_var% & POS_MOVEGROW_H Then DialogControlSet(Mov_Handle,tvar,@dcposition,xt+(xdiff*%ocutx_m%)+xt_m_adj:" ":yt:" ":xb+(xdiff*%ocutx_g%)+xb_g_adj:" ":yb+(ydiff*%ocuty_g%)+yb_g_adj) Return EndIf If %move_var% & POS_MOVE_H && %move_var% & POS_MOVE_V Then DialogControlSet(Mov_Handle,tvar,@dcposition,xt+(xdiff*%ocutx_m%)+xt_m_adj:" ":yt+(ydiff*%ocuty_m%)+yt_m_adj:" ":xb:" ":yb) Return EndIf If %move_var% & POS_MOVE_H Then DialogControlSet(Mov_Handle,tvar,@dcposition,xt+(xdiff*%ocutx_m%)+xt_m_adj:" ":yt:" ":xb:" ":yb) Return EndIf If %move_var% & POS_MOVE_V Then DialogControlSet(Mov_Handle,tvar,@dcposition,xt:" ":yt+(ydiff*%ocuty_m%)+yt_m_adj:" ":xb:" ":yb) Return EndIf If %move_var% & POS_GROW_H && %move_var% & POS_GROW_V Then DialogControlSet(Mov_Handle,tvar,@dcposition,xt:" ":yt:" ":xb+(xdiff*%ocutx_g%)+xb_g_adj:" ":yb+(ydiff*%ocuty_g%)+yb_g_adj) Return EndIf If %move_var% & POS_GROW_H Then DialogControlSet(Mov_Handle,tvar,@dcposition,xt:" ":yt:" ":xb+(xdiff*%ocutx_g%)+xb_g_adj:" ":yb) Return EndIf If %move_var% & POS_GROW_V Then DialogControlSet(Mov_Handle,tvar,@dcposition,xt:" ":yt:" ":xb:" ":yb+(ydiff*%ocuty_g%)+yb_g_adj) Return EndIf If %move_var% & POS_MOVEGROW_H && %move_var% & POS_MOVEGROW_V Then DialogControlSet(Mov_Handle,tvar,@dcposition,xt+(xdiff*%ocutx_m%)+xt_m_adj:" ":yt+(ydiff*%ocuty_m%)+yt_m_adj:" ":xb+(xdiff*%ocutx_g%)+xb_g_adj:" ":yb+(ydiff*%ocuty_g%)+yb_g_adj) Return EndIf If %move_var% & POS_MOVEGROW_H Then DialogControlSet(Mov_Handle,tvar,@dcposition,xt+(xdiff*%ocutx_m%)+xt_m_adj:" ":yt:" ":xb+(xdiff*%ocutx_g%)+xb_g_adj:" ":yb) Return EndIf If %move_var% & POS_MOVEGROW_V Then DialogControlSet(Mov_Handle,tvar,@dcposition,xt:" ":yt+(ydiff*%ocuty_m%)+yt_m_adj:" ":xb:" ":yb+(ydiff*%ocuty_g%)+yb_g_adj) Return EndIf #EndFunction #DefineSubRoutine Resize_it(Mov_Handle) Decimals(-1) xdiff = curr_xsize - init_xsize%win_track% ydiff = curr_ysize - init_ysize%win_track% ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Moving the dialog on the screen will often result in the size changing by one unit so ;I account for that here and do not resize if the change is only one unit. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; xcnt = ArrInfo(o_array%win_track%,1)-1 For xy = 1 To xcnt xt = ItemExtract(1,o_array%win_track%[xy,6]," ") yt = ItemExtract(2,o_array%win_track%[xy,6]," ") xb = ItemExtract(3,o_array%win_track%[xy,6]," ") yb = ItemExtract(4,o_array%win_track%[xy,6]," ") Decimals(0) Set_Control_Movement(Mov_Handle,xy,xdiff,ydiff,xt,yt,xb,yb,o_array%win_track%) Decimals(-1) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Refresh the Control as it doesn't always redraw correctly. PictureButtons, Bitmaps and Calendars are excluded from refresh. tvar = o_array%win_track%[xy,0] ;##########################################; ;Code that uses MY Control Naming that may need to be changed. pn = PictureButton, pi = Bitmap and ca = Calendar ;##########################################; If StrSub(tvar,1,3) != "pn_" && StrSub(tvar,1,3) != "pi_" && StrSub(tvar,1,3) != "ca_" Then DialogControlSet(Mov_Handle,tvar,11,DialogControlGet(Mov_Handle,tvar,11)) EndIf Next #EndSubRoutine Return
File Created: 2007:07:03:14:27:08
Last Updated: 2024:06:07:07:28:53