|
Post by Walt Decker on Apr 4, 2022 9:44:50 GMT -5
Here are two solutions:
' '######################################################### 'MOVE CONTENTS OF GROUP BUTTON(GROUPBOX) INSIDE THE BUTTON '#########################################################
'nomainwin
a$(1) = "one" a$(2) = "two" a$(3) = "three" a$(4) = "four"
GROUPBOX #WIN.GRP, "DMY", 5, 5, 185, 210
combobox #WIN.COMBO1, a$(), docombo,10,25,120,200 combobox #WIN.COMBO2, a$(), docombo,10,45,120,200 combobox #WIN.COMBO3, a$(), docombo,10,65,120,200
STATICTEXT #WIN.STAT1, "combo1", 135, 25, 50, 15 STATICTEXT #WIN.STAT2, "combo2", 135, 45, 50, 15 STATICTEXT #WIN.STAT3, "combo3", 135, 65, 50, 15
open "Combobox Demo" for window as #WIN
#WIN "trapclose [quit]"
PRINT #WIN.COMBO1, "selectindex 1" PRINT #WIN.COMBO3, "selectindex 3"
[SET.TIMER] TIMER 2000, [CHANGE.CTL.LOC] wait
'------------------------------------------------------- '-------------------------------------------------------
[quit] close #WIN end
[CHANGE.CTL.LOC]
TIMER 0
RetVal = 0 RetVal = FN.MoveCtrls()
TIMER 6000, [RESET.CTRL.LOC] WAIT
[RESET.CTRL.LOC] PRINT #WIN.STAT1, "!locate ";135;" ";25;" ";50;" ";15 PRINT #WIN.STAT2, "!locate ";135;" ";45;" ";50;" ";15 PRINT #WIN.STAT3, "!locate ";135;" ";65;" ";50;" ";15
PRINT #WIN.COMBO1, "locate ";10;" ";25;" ";120;" ";200 PRINT #WIN.COMBO2, "locate ";10;" ";45;" ";120;" ";200 PRINT #WIN.COMBO3, "locate ";10;" ";65;" ";120;" ";200 PRINT #WIN, "REFRESH"
GOTO [SET.TIMER] [END.CHANGE]
'-------------------------------------------------------- '--------------------------------------------------------
SUB docombo CmboHndl$
END SUB
'-------------------------------------------------------- '--------------------------------------------------------
FUNCTION FN.MoveCtrls()'CmbTag$, StatTag$)
PRINT #WIN.STAT1, "!locate ";135;" ";50;" ";50;" ";15 PRINT #WIN.STAT2, "!locate ";135;" ";70;" ";50;" ";15 PRINT #WIN.STAT3, "!locate ";135;" ";90;" ";50;" ";15
PRINT #WIN.COMBO1, "locate ";10;" ";50;" ";120;" ";200 PRINT #WIN.COMBO2, "locate ";10;" ";70;" ";120;" ";200 PRINT #WIN.COMBO3, "locate ";10;" ";90;" ";120;" ";200
PRINT #WIN, "REFRESH"
END FUNCTION
'--------------------------------------------------------- '---------------------------------------------------------
FUNCTION FN.GetParent(CtlTag$)
CtlHndl = 0 CtlPrnt = 0
CtlHndl = FN.GetHandle(CtlTag$) CALLDLL #user32, "GetParent", CtlHndl AS ULONG, CtlPrnt AS ULONG
FN.GetParent = CtlPrnt END FUNCTION
'--------------------------------------------------------- '---------------------------------------------------------
FUNCTION FN.SetParent(CtlTag$, Parent$)
CtlHndl = 0 PntHndl = 0 RetVal = 0
CtlHndl = FN.GetHandle(CtlTag$) PntHndl = FN.GetHandle(Parent$)
CALLDLL #user32, "SetParent", CtlHndl AS ULONG, PntHndl AS ULONG, _ RetVal AS ULONG
END FUNCTION
'--------------------------------------------------------- '---------------------------------------------------------
FUNCTION FN.SetWindowLoc(WinTag$, Ulx, Uly, Wide, High)
WinHndl = 0 RetVal = 0
WinHndl = FN.GetHandle(WinTag$) CALLDLL #user32, "MoveWindow", WinHndl AS ULONG, Ulx AS LONG, Uly AS LONG, _ Wide AS LONG, High AS LONG, 1 AS LONG, RetVal AS VOID
END FUNCTION
'--------------------------------------------------------- '---------------------------------------------------------
FUNCTION FN.GetHandle(WinTag$)
WinHndl = 0 WinTag$ = FN.CheckTag$(WinTag$)
WinHndl = HWND(#WinTag$) FN.GetHandle = WinHndl END FUNCTION
'--------------------------------------------------------- '---------------------------------------------------------
FUNCTION FN.CheckTag$(WinTag$)
IF LEFT$(WinTag$, 1) <> "#" THEN WinTag$ = "#" + WinTag$
FN.CheckTag$ = WinTag$ END FUNCTION
'
' '############################################################### 'MOVE GROUP BUTTON(GROUPBOX) AND ITS CONTENTS '############################################################### 'nomainwin
a$(1) = "one" a$(2) = "two" a$(3) = "three" a$(4) = "four"
GROUPBOX #WIN.GRP, "DMY", 5, 5, 185, 210
combobox #WIN.COMBO1, a$(), docombo,10,25,120,200 combobox #WIN.COMBO2, a$(), docombo,10,45,120,200 combobox #WIN.COMBO3, a$(), docombo,10,65,120,200
STATICTEXT #WIN.STAT1, "combo1", 135, 25, 50, 15 STATICTEXT #WIN.STAT2, "combo2", 135, 45, 50, 15 STATICTEXT #WIN.STAT3, "combo3", 135, 65, 50, 15
open "Combobox Demo" for window as #WIN
RetVal = FN.SetParent("WIN.COMBO1", "WIN.GRP") RetVal = FN.SetParent("WIN.COMBO2", "WIN.GRP") RetVal = FN.SetParent("WIN.COMBO3", "WIN.GRP")
RetVal = FN.SetParent("WIN.STAT1", "WIN.GRP") RetVal = FN.SetParent("WIN.STAT2", "WIN.GRP") RetVal = FN.SetParent("WIN.STAT3", "WIN.GRP")
#WIN "trapclose [quit]"
PRINT #WIN.COMBO1, "selectindex 1" PRINT #WIN.COMBO3, "selectindex 3"
[SET.TIMER] TIMER 2000, [CHANGE.CTL.LOC] wait
'------------------------------------------------------- '-------------------------------------------------------
[quit] close #WIN end
[CHANGE.CTL.LOC]
TIMER 0
RetVal = 0 RetVal = FN.SetWindowLoc("WIN.GRP", 5, 30, 185, 210)
TIMER 6000, [RESET.CTRL.LOC] WAIT
[RESET.CTRL.LOC] RetVal = FN.SetWindowLoc("WIN.GRP", 5, 5, 185, 210)
GOTO [SET.TIMER] [END.CHANGE]
'-------------------------------------------------------- '--------------------------------------------------------
SUB docombo CmboHndl$
END SUB
'-------------------------------------------------------- '--------------------------------------------------------
SUB RDO.SET RdoHndl$
Parent = 0 WinHndl = 0 RetVal = 0
WinHndl = FN.GetHandle("win") CtlPrnt = FN.GetParent("WIN.COMBO1")
SELECT CASE UPPER$(RdoHndl$) CASE "#WIN.RDO1" IF CtlPrnt <> WinHndl THEN RetVal = FN.SetParent("WIN.COMBO1", "win") RetVal = FN.SetParent("WIN.COMBO2", "win") RetVal = FN.SetParent("WIN.COMBO3", "win") RetVal = FN.SetParent("WIN.STAT1", "win") RetVal = FN.SetParent("WIN.STAT2", "win") RetVal = FN.SetParent("WIN.STAT3", "win") RetVal = FN.ClientSize("win", Bx, By) RetVal = FN.EraseWin("win")
' PRINT #WIN, "REFRESH" END IF RetVal = FN.MoveCtrls()
CASE "#WIN.RDO2" Parent = 1 RetVal = FN.MoveGroup() CASE "#WIN.RDO3" Parent = 2 RetVal = FN.MoveParent() END SELECT
CALLDLL #kernel32, "Sleep", 6000 AS LONG, RetVal AS VOID
'IF Parent = 2 THEN ' RetVal = FN.SetParent("WIN.COMBO1", "win") ' RetVal = FN.SetParent("WIN.COMBO2", "win") ' RetVal = FN.SetParent("WIN.COMBO3", "win") ' RetVal = FN.SetParent("WIN.STAT1", "win") ' RetVal = FN.SetParent("WIN.STAT2", "win") ' RetVal = FN.SetParent("WIN.STAT3", "win") ' PRINT #WIN, "REFRESH" 'END IF
IF (Parent = 1) OR (Parent = 2) THEN PRINT #WIN.GRP, "!locate ";5;" ";5;" ";185;" ";210 END IF
PRINT #WIN.COMBO1, "locate ";10;" ";25;" ";120;" ";200 PRINT #WIN.COMBO2, "locate ";10;" ";45;" ";120;" ";200 PRINT #WIN.COMBO3, "locate ";10;" ";65;" ";120;" ";200
PRINT #WIN.STAT1, "!locate ";135;" ";25;" ";50;" ";15 PRINT #WIN.STAT2, "!locate ";135;" ";45;" ";50;" ";15 PRINT #WIN.STAT3, "!locate ";135;" ";65;" ";50;" ";15
PRINT #WIN, "REFRESH" END SUB
'-------------------------------------------------------- '--------------------------------------------------------
SUB CHECK.MOVE CkbHndl$
RetVal = 0
Result$ = ""
PRINT #CkbHndl$, "value? Result$" SELECT CASE UPPER$(Result$) CASE "SET" ' RetVal = FN.MoveCtrls() PRINT #WIN.GRP, "!locate ";5;" ";25;" ";185;" ";210 PRINT #WIN, "REFRESH" CASE "RESET" ' PRINT #WIN.COMBO1, "locate ";10;" ";25;" ";120;" ";200 ' PRINT #WIN.COMBO2, "locate ";10;" ";45;" ";120;" ";200 ' PRINT #WIN.COMBO3, "locate ";10;" ";65;" ";120;" ";200
' PRINT #WIN.STAT1, "!locate ";135;" ";25;" ";50;" ";15 ' PRINT #WIN.STAT2, "!locate ";135;" ";45;" ";50;" ";15 ' PRINT #WIN.STAT3, "!locate ";135;" ";65;" ";50;" ";15 PRINT #WIN.GRP, "!locate ";5;" ";5;" ";185;" ";210 PRINT #WIN, "REFRESH" END SELECT END SUB
'-------------------------------------------------------- '--------------------------------------------------------
FUNCTION FN.MoveCtrls()'CmbTag$, StatTag$)
'PRINT #WIN.COMBO1, "locate ";10;" ";50;" ";120;" ";200 'PRINT #WIN.COMBO2, "locate ";10;" ";70;" ";120;" ";200 'PRINT #WIN.COMBO3, "locate ";10;" ";90;" ";120;" ";200
PRINT #WIN.STAT1, "!locate ";135;" ";50;" ";50;" ";15 PRINT #WIN.STAT2, "!locate ";135;" ";70;" ";50;" ";15 PRINT #WIN.STAT3, "!locate ";135;" ";90;" ";50;" ";15
PRINT #WIN.COMBO1, "locate ";10;" ";50;" ";120;" ";200 PRINT #WIN.COMBO2, "locate ";10;" ";70;" ";120;" ";200 PRINT #WIN.COMBO3, "locate ";10;" ";90;" ";120;" ";200
'PRINT #WIN.GRP, "!locate ";5;" ";25;" ";185;" ";210
'PRINT #WIN, "REFRESH" 'RetVal = FN.WindowSize("#win.STAT1", Ulx, Uly, Brx, Bry) 'GrpHndl = FN.GetHandle("WIN.GRP") 'RetVal = FN.MapPoints(0, GrpHndl, Ulx, Uly, Brx, Bry) 'print Ulx, Uly 'PRINT #WIN.COMBO1, "locate ";10;" ";Uly;" ";120;" ";200 PRINT #WIN, "REFRESH"
END FUNCTION
'--------------------------------------------------------- '---------------------------------------------------------
FUNCTION FN.MoveGroup()
PRINT #WIN.GRP, "!locate ";5;" ";15;" ";185;" ";210
PRINT #WIN.COMBO1, "locate ";10;" ";45;" ";120;" ";200 PRINT #WIN.COMBO2, "locate ";10;" ";65;" ";120;" ";200 PRINT #WIN.COMBO3, "locate ";10;" ";85;" ";120;" ";200
PRINT #WIN, "REFRESH" END FUNCTION
'--------------------------------------------------------- '---------------------------------------------------------
FUNCTION FN.MoveParent()
RetVal = FN.SetParent("WIN.COMBO1", "WIN.GRP") RetVal = FN.SetParent("WIN.COMBO2", "WIN.GRP") RetVal = FN.SetParent("WIN.COMBO3", "WIN.GRP") RetVal = FN.SetParent("WIN.STAT1", "WIN.GRP") RetVal = FN.SetParent("WIN.STAT2", "WIN.GRP") RetVal = FN.SetParent("WIN.STAT3", "WIN.GRP")
RetVal = FN.SetWindowLoc("WIN.GRP", 5, 25, 185, 210) 'PRINT #WIN.GRP, "!locate ";5;" ";25;" ";185;" ";210 PRINT #WIN, "REFRESH"
END FUNCTION
'--------------------------------------------------------- '---------------------------------------------------------
FUNCTION FN.GetParent(CtlTag$)
CtlHndl = 0 CtlPrnt = 0
CtlHndl = FN.GetHandle(CtlTag$) CALLDLL #user32, "GetParent", CtlHndl AS ULONG, CtlPrnt AS ULONG
FN.GetParent = CtlPrnt END FUNCTION
'--------------------------------------------------------- '---------------------------------------------------------
FUNCTION FN.SetParent(CtlTag$, Parent$)
CtlHndl = 0 PntHndl = 0 RetVal = 0
CtlHndl = FN.GetHandle(CtlTag$) PntHndl = FN.GetHandle(Parent$)
CALLDLL #user32, "SetParent", CtlHndl AS ULONG, PntHndl AS ULONG, _ RetVal AS ULONG
END FUNCTION
'--------------------------------------------------------- '---------------------------------------------------------
FUNCTION FN.SetWindowLoc(WinTag$, Ulx, Uly, Wide, High)
WinHndl = 0 RetVal = 0
WinHndl = FN.GetHandle(WinTag$) CALLDLL #user32, "MoveWindow", WinHndl AS ULONG, Ulx AS LONG, Uly AS LONG, _ Wide AS LONG, High AS LONG, 1 AS LONG, RetVal AS VOID
END FUNCTION
'--------------------------------------------------------- '---------------------------------------------------------
FUNCTION FN.ClientSize(WinTag$, BYREF Bx, BYREF By)
STRUCT tRect, _ X AS LONG, _ Y AS LONG, _ X1 AS LONG, _ Y1 AS LONG
WinHndl = 0 RetVal = 0
WinHndl = FN.GetHandle(WinTag$) CALLDll #user32, "GetClientRect", WinHndl AS ULONG, tRect AS STRUCT, _ RetVal AS VOID
Bx = tRect.X1.struct By = tRect.Y1.struct
END FUNCTION
'--------------------------------------------------------- '---------------------------------------------------------
FUNCTION FN.EraseWin(WinTag$)
RetVal = 0 WinHndl = 0
WinHndl = FN.GetHandle(WinTag$)
CALLDLL #user32, "InvalidateRect", WinHndl AS ULONG, tRect AS STRUCT, _ 1 AS LONG, RetVal AS LONG FN.EraseWin = RetVal END FUNCTION
'--------------------------------------------------------- '---------------------------------------------------------
FUNCTION FN.RedrawWindow(WinTag$)
END FUNCTION
'--------------------------------------------------------- '---------------------------------------------------------
FUNCTION FN.GetHandle(WinTag$)
WinHndl = 0 WinTag$ = FN.CheckTag$(WinTag$)
WinHndl = HWND(#WinTag$) FN.GetHandle = WinHndl END FUNCTION
'--------------------------------------------------------- '---------------------------------------------------------
FUNCTION FN.CheckTag$(WinTag$)
IF LEFT$(WinTag$, 1) <> "#" THEN WinTag$ = "#" + WinTag$
FN.CheckTag$ = WinTag$ END FUNCTION
'
|
|