Can't find the information you are looking for here? Then leave a message over on our WinBatch Tech Support Forum.
Keywords: Resize Dialog Controls Dynamically Dialog Units Delta Change Size
#DefineFunction ResizeExample(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 @deinit DialogProcOptions(MyDialog_Handle,@deresize,@true) DialogProcOptions(MyDialog_Handle,@depbpush,@true) DialogProcOptions(MyDialog_Handle,@dposysmenu, 4) ; Save offset values to use when calculating button positions. strRect = DialogProcOptions(MyDialog_Handle,1007,-1) nDlgWidth = ItemExtract(1, strRect, " ") nDlgHeight = ItemExtract(2, strRect, " ") strRect = DialogControlGet(MyDialog_Handle, "PushButton_OK", 17 ) pnOkMidOff = PtrPersistent(nOkMidOff, ItemExtract(1, strRect, " ") - (nDlgWidth/2)) strRect = DialogControlGet(MyDialog_Handle, "PushButton_Cancel", 17 ) pnCanMidOff = PtrPersistent(nCanMidOff, ItemExtract(1, strRect, " ") - (nDlgWidth/2)) strRect = DialogControlGet(MyDialog_Handle, "Resize_11", 17 ) pnMidOff = PtrPersistent(nMidOff, ItemExtract(1, strRect, " ") - (nDlgWidth/2)) strRect = DialogControlGet(MyDialog_Handle, "Resize_21", 17 ) pnRightOff = PtrPersistent(nRightOff, nDlgWidth - ItemExtract(1, strRect, " ") ) pnAccumulator = PtrPersistent(nAccumulator, 0) ; Space text controls evenly so resize codes does not exagerate small spacing difference. nY = 0 For x = 1 To 30 strRect = DialogControlGet(MyDialog_Handle, "Resize_":x, 17 ) If (x - 1) mod 10 nY = nY + 23 strRect = ItemReplace(nY , 2, strRect, " ") DialogControlSet(MyDialog_Handle,"Resize_":x, 17, strRect ) Else nY = ItemExtract(2, strRect, " ") EndIf Next Return(@retdefault) Case @depbpush If MyDialog_Name == "PushButton_OK" ; OK Return(@retdefault) ElseIf MyDialog_Name == "PushButton_Cancel" ; Cancel Return(@retdefault) EndIf ; MyDialog_Name Return(@retdefault) Case @deresize ; Changes nDeltaX = ItemExtract(1,MyDialog_ChangeInfo, " ") nDeltaY = ItemExtract(2,MyDialog_ChangeInfo, " ") nDlgWidth = ItemExtract(3,MyDialog_ChangeInfo, " ") nDlgHeight = ItemExtract(4,MyDialog_ChangeInfo, " ") ; Retrieve statics pnOkMidOff = PtrPersistent(nOkMidOff, 0) pnCanMidOff = PtrPersistent(nCanMidOff, 0) pnLeftOff = PtrPersistent(nLeftOff, 0) pnMidOff = PtrPersistent(nMidOff, 0) pnRightOff = PtrPersistent(nRightOff, 0) pnAccumulator = PtrPersistent(nAccumulator, 0) *pnAccumulator = *pnAccumulator + nDeltaY bDoY = Abs(*pnAccumulator) >= 9 ; Move text controls For i = 1 To 30 strRect = DialogControlGet(MyDialog_Handle, "Resize_":i, 17 ) ; Adjust x coorinates? If i > 10 && i < 21 strRect = ItemReplace(nDlgWidth/2+*pnMidOff , 1, strRect, " ") ElseIf i > 20 strRect = ItemReplace(nDlgWidth - *pnRightOff, 1, strRect, " ") EndIf ; Adjust y coorinates? If bDoY nY = ItemExtract(2, strRect, " ") + ((*pnAccumulator/9) * ((i - 1) mod 10)) strRect = ItemReplace(nY , 2, strRect, " ") EndIf DialogControlSet(MyDialog_Handle, "Resize_":i, 17, strRect ) Next ; Save remainder to prevent creep. If bDoY Then *pnAccumulator = *pnAccumulator mod 9 ; Buttons stay more or less centered at the bottom of the dialog. strRect = DialogControlGet(MyDialog_Handle, "PushButton_OK", 17 ) nY = ItemExtract(2, strRect, " ") strRect = ItemReplace(nDlgWidth/2+*pnOkMidOff , 1, strRect, " ") strRect = ItemReplace(nY+nDeltaY, 2, strRect, " ") DialogControlSet(MyDialog_Handle, "PushButton_OK", 17, strRect ) strRect = DialogControlGet(MyDialog_Handle, "PushButton_Cancel", 17 ) nY = ItemExtract(2, strRect, " ") strRect = ItemReplace(nDlgWidth/2+*pnCanMidOff, 1, strRect, " ") strRect = ItemReplace(nY+nDeltaY, 2, strRect, " ") DialogControlSet(MyDialog_Handle, "PushButton_Cancel", 17, strRect ) Message("Change Info", MyDialog_ChangeInfo) Return(@retdefault) EndSwitch ; MyDialog_Message Return(@retdefault) #EndSubRoutine ; End of Dialog Callback MyDialogCallbackProc MyDialogFormat=`WWWDLGED,6.2` MyDialogCaption=`Resize Example` MyDialogX=587 MyDialogY=084 MyDialogWidth=284 MyDialogHeight=259 MyDialogMinWidth=200 MyDialogMinHeight=200 MyDialogNumControls=032 MyDialogProcedure=`ResizeExample` MyDialogFont=`DEFAULT` MyDialogTextColor=`DEFAULT` MyDialogBackground=`DEFAULT,255|255|255` MyDialogConfig=0 MyDialog001=`073,234,033,011,PUSHBUTTON,"PushButton_OK",DEFAULT,"OK",1,10,32,DEFAULT,DEFAULT,DEFAULT` MyDialog002=`178,234,034,011,PUSHBUTTON,"PushButton_Cancel",DEFAULT,"Cancel",0,20,DEFAULT,DEFAULT,DEFAULT,DEFAULT` MyDialog003=`004,006,041,010,STATICTEXT,"Resize_1",DEFAULT,"",DEFAULT,30,DEFAULT,DEFAULT,DEFAULT,"255|0|128"` MyDialog004=`004,023,041,011,STATICTEXT,"Resize_2",DEFAULT,"",DEFAULT,40,DEFAULT,DEFAULT,DEFAULT,"255|0|128"` MyDialog005=`004,044,042,011,STATICTEXT,"Resize_3",DEFAULT,"",DEFAULT,50,DEFAULT,DEFAULT,DEFAULT,"255|0|128"` MyDialog006=`004,071,041,011,STATICTEXT,"Resize_4",DEFAULT,"",DEFAULT,60,DEFAULT,DEFAULT,DEFAULT,"255|0|128"` MyDialog007=`004,098,041,011,STATICTEXT,"Resize_5",DEFAULT,"",DEFAULT,70,DEFAULT,DEFAULT,DEFAULT,"255|0|128"` MyDialog008=`004,126,042,010,STATICTEXT,"Resize_6",DEFAULT,"",DEFAULT,80,DEFAULT,DEFAULT,DEFAULT,"255|0|128"` MyDialog009=`004,151,041,011,STATICTEXT,"Resize_7",DEFAULT,"",DEFAULT,90,DEFAULT,DEFAULT,DEFAULT,"255|0|128"` MyDialog010=`004,174,041,010,STATICTEXT,"Resize_8",DEFAULT,"",DEFAULT,100,DEFAULT,DEFAULT,DEFAULT,"255|0|128"` MyDialog011=`004,196,041,011,STATICTEXT,"Resize_9",DEFAULT,"",DEFAULT,110,DEFAULT,DEFAULT,DEFAULT,"255|0|128"` MyDialog012=`004,215,041,011,STATICTEXT,"Resize_10",DEFAULT,"",DEFAULT,120,DEFAULT,DEFAULT,DEFAULT,"255|0|128"` MyDialog013=`121,006,041,010,STATICTEXT,"Resize_11",DEFAULT,"",DEFAULT,130,DEFAULT,DEFAULT,DEFAULT,"255|0|128"` MyDialog014=`121,023,041,011,STATICTEXT,"Resize_12",DEFAULT,"",DEFAULT,140,DEFAULT,DEFAULT,DEFAULT,"255|0|128"` MyDialog015=`121,044,041,011,STATICTEXT,"Resize_13",DEFAULT,"",DEFAULT,150,DEFAULT,DEFAULT,DEFAULT,"255|0|128"` MyDialog016=`121,071,041,011,STATICTEXT,"Resize_14",DEFAULT,"",DEFAULT,160,DEFAULT,DEFAULT,DEFAULT,"255|0|128"` MyDialog017=`121,098,041,011,STATICTEXT,"Resize_15",DEFAULT,"",DEFAULT,170,DEFAULT,DEFAULT,DEFAULT,"255|0|128"` MyDialog018=`121,126,041,010,STATICTEXT,"Resize_16",DEFAULT,"",DEFAULT,180,DEFAULT,DEFAULT,DEFAULT,"255|0|128"` MyDialog019=`121,151,041,011,STATICTEXT,"Resize_17",DEFAULT,"",DEFAULT,190,DEFAULT,DEFAULT,DEFAULT,"255|0|128"` MyDialog020=`121,174,041,010,STATICTEXT,"Resize_18",DEFAULT,"",DEFAULT,200,DEFAULT,DEFAULT,DEFAULT,"255|0|128"` MyDialog021=`121,196,041,011,STATICTEXT,"Resize_19",DEFAULT,"",DEFAULT,210,DEFAULT,DEFAULT,DEFAULT,"255|0|128"` MyDialog022=`121,215,041,011,STATICTEXT,"Resize_20",DEFAULT,"",DEFAULT,220,DEFAULT,DEFAULT,DEFAULT,"255|0|128"` MyDialog023=`236,006,041,010,STATICTEXT,"Resize_21",DEFAULT,"",DEFAULT,230,DEFAULT,DEFAULT,DEFAULT,"255|0|128"` MyDialog024=`236,023,041,011,STATICTEXT,"Resize_22",DEFAULT,"",DEFAULT,240,DEFAULT,DEFAULT,DEFAULT,"255|0|128"` MyDialog025=`236,044,041,011,STATICTEXT,"Resize_23",DEFAULT,"",DEFAULT,250,DEFAULT,DEFAULT,DEFAULT,"255|0|128"` MyDialog026=`236,071,041,011,STATICTEXT,"Resize_24",DEFAULT,"",DEFAULT,260,DEFAULT,DEFAULT,DEFAULT,"255|0|128"` MyDialog027=`236,098,041,010,STATICTEXT,"Resize_25",DEFAULT,"",DEFAULT,270,DEFAULT,DEFAULT,DEFAULT,"255|0|128"` MyDialog028=`236,126,041,011,STATICTEXT,"Resize_26",DEFAULT,"",DEFAULT,280,DEFAULT,DEFAULT,DEFAULT,"255|0|128"` MyDialog029=`236,151,041,011,STATICTEXT,"Resize_27",DEFAULT,"",DEFAULT,290,DEFAULT,DEFAULT,DEFAULT,"255|0|128"` MyDialog030=`236,174,041,010,STATICTEXT,"Resize_28",DEFAULT,"",DEFAULT,300,DEFAULT,DEFAULT,DEFAULT,"255|0|128"` MyDialog031=`236,196,041,011,STATICTEXT,"Resize_29",DEFAULT,"",DEFAULT,310,DEFAULT,DEFAULT,DEFAULT,"255|0|128"` MyDialog032=`236,215,041,011,STATICTEXT,"Resize_30",DEFAULT,"",DEFAULT,320,DEFAULT,DEFAULT,DEFAULT,"255|0|128"` ButtonPushed=Dialog("MyDialog")
Article ID: W17761
Filename: Resize Dialog and Controls Dynamically.txt
File Created: 2020:06:24:13:24:52
Last Updated: 2020:06:24:13:24:52