Think this should answer most of your questions.
Code: Select all
#Child_Flags=#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_SizeGadget
Enumeration
#Window_0
#MDIChildStart
#MDIChild1
#MDIChild2
#MDIChild3
#MDIChildEnd
EndEnumeration
Enumeration
#MDiGadget
#Button01
#Button02
#Button03
#ListIcon_Child1
EndEnumeration
Enumeration
#MenuBar_0
EndEnumeration
Enumeration
#MenuItem_0
#MenuItem_1
#MenuItem_2
#MenuItem_3
#MenuItem_4
#MenuItem_5
#MenuItem_6
#MenuItem_7
#MenuItem_8
#MenuItem_9
#MenuItem_10
#MenuItem_11
#MenuItem_12
#MenuItem_13
#MenuItem_14
#MenuItem_15
#MenuItem_16
#MenuItem_17
#MenuItem_18
#MenuItem_19
#MenuItem_20
#MenuItem_21
#MenuItem_22
#MenuItem_23
#MenuItem_24
#MenuItem_25
#MenuItem_26
#MenuItem_27
#MenuItem_28
#MenuItem_29
#MenuItem_30
#MenuItem_31
#MenuItem_32
EndEnumeration
Procedure Is_ChildMaximized()
a.l=#MDIChildStart
Repeat
a+1
If IsWindow(a)
If GetWindowState(a)=#PB_Window_Maximize
Result.l=1
EndIf
EndIf
Until a=>#MDIChildEnd Or Result
ProcedureReturn Result
EndProcedure
Procedure Open_WinMdi3()
If IsWindow(#MDIChild3)=0
Is_Max.l=Is_ChildMaximized()
SendMessage_(WindowID(#Window_0), #WM_SETREDRAW,0,0)
If AddGadgetItem(#MDiGadget,#MDIChild3,"Child 3",#Child_Flags)
HideWindow(#MDIChild3,1)
SendMessage_(WindowID(#Window_0), #WM_SETREDRAW,1,0)
ResizeWindow(#MDIChild3,40,40,450,400)
If CreateGadgetList(WindowID(#MDIChild3))
;gadgets
EndIf
If Is_Max
SetWindowState(#MDIChild3,#PB_Window_Maximize)
EndIf
HideWindow(#MDIChild3,0)
SmartWindowRefresh(#MDIChild3,1)
Else
SendMessage_(WindowID(#Window_0), #WM_SETREDRAW,1,0)
EndIf
EndIf
ProcedureReturn Result
EndProcedure
Procedure Open_WinMdi2()
If IsWindow(#MDIChild2)=0
Is_Max.l=Is_ChildMaximized()
SendMessage_(WindowID(#Window_0), #WM_SETREDRAW,0,0)
If AddGadgetItem(#MDiGadget,#MDIChild2,"Child 2",#Child_Flags)
HideWindow(#MDIChild2,1)
SendMessage_(WindowID(#Window_0), #WM_SETREDRAW,1,0)
ResizeWindow(#MDIChild2,20,20,510,400)
If CreateGadgetList(WindowID(#MDIChild2))
;gadgets
EndIf
If Is_Max
SetWindowState(#MDIChild2,#PB_Window_Maximize)
EndIf
HideWindow(#MDIChild2,0)
SmartWindowRefresh(#MDIChild2,1)
Else
SendMessage_(WindowID(#Window_0), #WM_SETREDRAW,1,0)
EndIf
EndIf
ProcedureReturn Result
EndProcedure
Procedure Open_WinMdi1()
If IsWindow(#MDIChild1)=0
Is_Max.l=Is_ChildMaximized()
SendMessage_(WindowID(#Window_0), #WM_SETREDRAW,0,0)
If AddGadgetItem(#MDiGadget,#MDIChild1,"Child 1",#Child_Flags)
HideWindow(#MDIChild1,1)
SendMessage_(WindowID(#Window_0), #WM_SETREDRAW,1,0)
w.l=700:h.l=450
ResizeWindow(#MDIChild1,10,10,w,h)
If CreateGadgetList(WindowID(#MDIChild1))
ListIconGadget(#ListIcon_Child1,10,10,w-20,h-30,"ID",50,#PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect)
AddGadgetColumn(#ListIcon_Child1,1,"Supplier",75)
AddGadgetColumn(#ListIcon_Child1,2,"Supplier Part",75)
AddGadgetColumn(#ListIcon_Child1,3,"Local Part",75)
AddGadgetColumn(#ListIcon_Child1,4,"Description",600)
AddGadgetColumn(#ListIcon_Child1,5,"Total Stock",75)
Result.l=1
EndIf
If Is_Max
SetWindowState(#MDIChild1,#PB_Window_Maximize)
EndIf
HideWindow(#MDIChild1,0)
SmartWindowRefresh(#MDIChild1,1)
Else
SendMessage_(WindowID(#Window_0), #WM_SETREDRAW,1,0)
EndIf
ProcedureReturn Result
EndIf
EndProcedure
Procedure Open_Window_Main()
OpenWindow(#Window_0,0,0,800,600,"Sistema Gerencial Clio",#PB_Window_ScreenCentered|#PB_Window_MaximizeGadget | #PB_Window_MinimizeGadget | #PB_Window_Invisible)
CreateMenu(#MenuBar_0, WindowID(#Window_0))
MenuTitle("&Cadastro")
MenuItem(#MenuItem_0, "&Clientes")
MenuItem(#MenuItem_1, "&Fornecedores")
MenuItem(#MenuItem_2, "&Produtos")
MenuItem(#MenuItem_3, "&Bancos")
MenuItem(#MenuItem_4, "&Plano de Contas")
MenuItem(#MenuItem_5, "&Históricos")
MenuItem(#MenuItem_6, "&Indexadores")
MenuItem(#MenuItem_7, "Feria&dos")
MenuItem(#MenuItem_8, "&Vendedores")
MenuTitle("&Lançamentos")
MenuItem(#MenuItem_9, "Bancos")
MenuItem(#MenuItem_10, "Contas a &Pagar")
MenuItem(#MenuItem_11, "Contas a &Receber")
MenuBar()
MenuItem(#MenuItem_12, "&Aplicações")
MenuItem(#MenuItem_13, "&Cartões")
MenuItem(#MenuItem_14, "&Livro Caixa")
MenuBar()
MenuItem(#MenuItem_15, "&Ordens de Compra")
MenuItem(#MenuItem_16, "Pe&didos")
MenuItem(#MenuItem_17, "&Emissão de Nota Fiscal")
MenuBar()
MenuItem(#MenuItem_18, "Conciliação &Bancária")
MenuTitle("&Business Intelligence")
MenuTitle("&Relatórios")
MenuTitle("Módulo de &Segurança")
MenuItem(#MenuItem_19, "&Usuários")
MenuItem(#MenuItem_20, "&Grupos de Usuários")
MenuItem(#MenuItem_21, "&Objetos")
MenuItem(#MenuItem_22, "&Permissões")
MenuBar()
MenuItem(#MenuItem_23, "&Criptografia")
MenuTitle("Módulo de &Manutenção")
MenuItem(#MenuItem_24, "&Parâmetros do Sistema")
MenuBar()
MenuItem(#MenuItem_25, "&Importação ...")
MenuItem(#MenuItem_26, "&Exportação ...")
MenuBar()
MenuItem(#MenuItem_27, "&Log de Operações")
MenuTitle("&Ajuda")
MenuItem(#MenuItem_28, "&Ajuda ...")
MenuBar()
MenuItem(#MenuItem_29, "&Sobre a Aplicação")
MenuTitle("&Windows")
MenuItem(#MenuItem_30, "Cascade")
MenuItem(#MenuItem_31, "Vert Tile")
MenuItem(#MenuItem_32, "Horz Tile")
CreateGadgetList(WindowID(#Window_0))
MDIGadget(#MDiGadget,0,0,0,0,7,#MenuItem_32 + 1,#PB_MDI_AutoSize)
HideWindow(#Window_0,0)
ProcedureReturn 1
EndProcedure
Open_Window_Main()
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_Menu
Select EventMenu()
Case #MenuItem_0
If Open_WinMdi1()=0
SetGadgetState(#MDiGadget,#MDIChild1)
EndIf
Case #MenuItem_1
If Open_WinMdi2()=0
SetGadgetState(#MDiGadget,#MDIChild2)
EndIf
Case #MenuItem_2
If Open_WinMdi3()=0
SetGadgetState(#MDiGadget,#MDIChild3)
EndIf
Case #MenuItem_30 : SetGadgetState(#MDiGadget,#PB_MDI_Cascade)
Case #MenuItem_31 : SetGadgetState(#MDiGadget,#PB_MDI_TileVertically)
Case #MenuItem_32 : SetGadgetState(#MDiGadget,#PB_MDI_TileHorizontally)
EndSelect
EndIf
If EventID = #PB_Event_CloseWindow
Select EventWindow()
Case #Window_0
Quit=1
Case #MDIChild1
CloseWindow(#MDIChild1)
Case #MDIChild2
CloseWindow(#MDIChild2)
Case #MDIChild3
CloseWindow(#MDIChild3)
EndSelect
EndIf
If EventID=#PB_Event_SizeWindow
Select EventWindow()
Case #MDIChild1
ResizeGadget(#ListIcon_Child1,#PB_Ignore,#PB_Ignore,WindowWidth(#MDIChild1)-20,WindowHeight(#MDIChild1)-30)
EndSelect
EndIf
Until Quit