MDIGadget "real world" example

Just starting out? Need help? Post your questions and find answers here.
Pelluso
User
User
Posts: 23
Joined: Tue Mar 23, 2004 9:04 pm
Location: Brazil

MDIGadget "real world" example

Post by Pelluso »

Hi guys ,

Sorry about my newbie question but anyway ...

I would like to see a "real world" app with mdigadget

For instance a main app with a menu items that will record app users, holidays and clients.
When i click a particular menu item then addgadgetitem with gadgets of this "window" and when close a particular "window" just removegadget not close main whole app.

How can i organize gadgets cascade , tile ... ?
How can i detect which "window" am i clicking ?

Any ideas ?
User avatar
Fluid Byte
Addict
Addict
Posts: 2336
Joined: Fri Jul 21, 2006 4:41 am
Location: Berlin, Germany

Re: MDIGadget "real world" example

Post by Fluid Byte »

Pelluso wrote:I would like to see a "real world" app with mdigadget
Great, happy coding then! :wink:
Pelluso wrote:How can i organize gadgets cascade , tile ... ?
RTFM.
Pelluso wrote:How can i detect which "window" am i clicking ?
Clicking where? Titlebar? Min-/Maxbutton? Sizeframe?
Windows 10 Pro, 64-Bit / Whose Hoff is it anyway?
User avatar
Fluid Byte
Addict
Addict
Posts: 2336
Joined: Fri Jul 21, 2006 4:41 am
Location: Berlin, Germany

Post by Fluid Byte »

Why the heck you removed your post? I was reading it and adapted your code. Whatever, acutally all you need is the MDI example in the manual (if you would have read it) to modfiy your code acordingly:

Code: Select all

Enumeration
	#Window_0
	#MDIChild1
	#MDIChild2
	#MDIChild3
EndEnumeration

Enumeration
	#MDiGadget
	#Button01
	#Button02
	#Button03
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

OpenWindow(#Window_0,0,0,800,600,"Sistema Gerencial Clio",#PB_Window_ScreenCentered | #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)

AddGadgetItem(#MDiGadget,#MDIChild1,"untitled1")
AddGadgetItem(#MDiGadget,#MDIChild2,"untitled2")
AddGadgetItem(#MDiGadget,#MDIChild3,"untitled3")

CreateGadgetList(WindowID(#MDIChild3))
ButtonGadget(#Button01,10,10,200,25,"untitled #1")
ButtonGadget(#Button02,10,50,200,25,"untitled #2")
ButtonGadget(#Button03,10,90,200,25,"untitled #3")
UseGadgetList(WindowID(#Window_0))

HideWindow(#Window_0,0)

Repeat
	EventID = WaitWindowEvent()
	
	If EventID = #PB_Event_Menu 
		Select EventMenu()
			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
Until EventID = #PB_Event_CloseWindow
Windows 10 Pro, 64-Bit / Whose Hoff is it anyway?
Baldrick
Addict
Addict
Posts: 860
Joined: Fri Jul 02, 2004 6:49 pm
Location: Australia

Post by Baldrick »

@Fluidbyte, Like you I had a quick look, went to make an example up, came back for another look & post gggooone...
anyway, just modded Fluidbytes main loop to show closing windows, not that it really matters.

Code: Select all

Repeat 
   EventID = WaitWindowEvent() 
    
   If EventID = #PB_Event_Menu 
      Select EventMenu() 
         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 
Until Quit 
User avatar
Fluid Byte
Addict
Addict
Posts: 2336
Joined: Fri Jul 21, 2006 4:41 am
Location: Berlin, Germany

Post by Fluid Byte »

Yeah, I forgot the closing thingy. Thanks for adding. :)
Windows 10 Pro, 64-Bit / Whose Hoff is it anyway?
Pelluso
User
User
Posts: 23
Joined: Tue Mar 23, 2004 9:04 pm
Location: Brazil

Post by Pelluso »

Many Thanks ,

I apreciate your help , but please no RTFM :oops:

Another question how can i set width and height of the "child window" ?

I have already remove resize and maximize button with this

Code: Select all

  wHnd = AddGadgetItem(#MDIGadget,#Historicos,"Históricos")
  SetWindowLong_( wHnd, #GWL_STYLE, GetWindowLong_(wHnd, #GWL_STYLE) & ~(#WS_SIZEBOX|#WS_MAXIMIZEBOX) )
Thank you all again !
Pelluso
User
User
Posts: 23
Joined: Tue Mar 23, 2004 9:04 pm
Location: Brazil

Post by Pelluso »

I got a tip from Srod and removed this line

Code: Select all

SetWindowLong_( wHnd, #GWL_STYLE, GetWindowLong_(wHnd, #GWL_STYLE) & ~(#WS_SIZEBOX|#WS_MAXIMIZEBOX) )
and changed this

Code: Select all

AddGadgetItem(#MDIGadget,#Historicos,"Históricos")
by this

Code: Select all

AddGadgetItem(#MDIGadget,#Historicos,"Históricos",0,#PB_Window_MinimizeGadget|#PB_Window_BorderLess)
Ok and now how can i set width and height of a child ?
User avatar
netmaestro
PureBasic Bullfrog
PureBasic Bullfrog
Posts: 8451
Joined: Wed Jul 06, 2005 5:42 am
Location: Fort Nelson, BC, Canada

Post by netmaestro »

MDI childs are in all respects PB windows, which means all the commands from the window library will work on them. After creation, simply use ResizeWindow on the #MDIChild to give it a custom size.
BERESHEIT
Pelluso
User
User
Posts: 23
Joined: Tue Mar 23, 2004 9:04 pm
Location: Brazil

Post by Pelluso »

What a shame !

So easy , many thanks netmaestro !
Pelluso
User
User
Posts: 23
Joined: Tue Mar 23, 2004 9:04 pm
Location: Brazil

Post by Pelluso »

Netmaestro ,

Could you explain why child window flicks if i set it invisible ?

Code: Select all

Enumeration
  #Window_0
EndEnumeration

Enumeration
  #MDIGadget
  #Historicos
EndEnumeration

If OpenWindow(#Window_0, 0, 0, 800, 600, "" )
  If CreateGadgetList(WindowID(#Window_0)) 
    MDIGadget(#MDIGadget,0,0,0,0,7,1,#PB_MDI_AutoSize)
    AddGadgetItem(#MDIGadget,#Historicos,"Históricos",0,#PB_Window_MinimizeGadget|#PB_Window_BorderLess|#PB_Window_Invisible)  
  EndIf
  Repeat
    EventID = WaitWindowEvent()
  Until EventID = #WM_CLOSE
EndIf
srod
PureBasic Expert
PureBasic Expert
Posts: 10589
Joined: Wed Oct 29, 2003 4:35 pm
Location: Beyond the pale...

Post by srod »

I think the child window is created first and then it's styles are updated. Easy to workaround though :

Code: Select all

Enumeration 
  #Window_0 
EndEnumeration 

Enumeration 
  #MDIGadget 
  #Historicos 
EndEnumeration 

If OpenWindow(#Window_0, 0, 0, 800, 600, "",#PB_Window_Invisible|#PB_Window_SystemMenu) 
  If CreateGadgetList(WindowID(#Window_0)) 
    MDIGadget(#MDIGadget,0,0,0,0,7,1,#PB_MDI_AutoSize) 
    AddGadgetItem(#MDIGadget,#Historicos,"Históricos",0,#PB_Window_MinimizeGadget|#PB_Window_BorderLess|#PB_Window_Invisible)  
  EndIf 
HideWindow(#Window_0,0)
  Repeat 
    EventID = WaitWindowEvent() 
  Until EventID = #WM_CLOSE 
EndIf
I may look like a mule, but I'm not a complete ass.
Pelluso
User
User
Posts: 23
Joined: Tue Mar 23, 2004 9:04 pm
Location: Brazil

Post by Pelluso »

This is just an example ...

On my real code MDI is opened then when i click a menu item i open a child ...

You know what i mean ...
srod
PureBasic Expert
PureBasic Expert
Posts: 10589
Joined: Wed Oct 29, 2003 4:35 pm
Location: Beyond the pale...

Post by srod »

I think it flickers because of the reason I gave above.

Another way around the problem then :

Code: Select all

Enumeration 
  #Window_0 
EndEnumeration 

Enumeration 
  #MDIGadget 
  #Historicos 
EndEnumeration 

If OpenWindow(#Window_0, 0, 0, 800, 600, "") 
  SendMessage_(WindowID(0), #WM_SETREDRAW,0,0)
  If CreateGadgetList(WindowID(#Window_0)) 
    MDIGadget(#MDIGadget,0,0,0,0,7,1,#PB_MDI_AutoSize) 
    AddGadgetItem(#MDIGadget,#Historicos,"Históricos",0,#PB_Window_MinimizeGadget|#PB_Window_BorderLess|#PB_Window_Invisible)  
  EndIf 
  SendMessage_(WindowID(0), #WM_SETREDRAW,1,0)
  InvalidateRect_(WindowID(0),0,1)
  Repeat 
    EventID = WaitWindowEvent() 
  Until EventID = #WM_CLOSE 
EndIf
I may look like a mule, but I'm not a complete ass.
Pelluso
User
User
Posts: 23
Joined: Tue Mar 23, 2004 9:04 pm
Location: Brazil

Post by Pelluso »

Did not worked !

That a look !

Click Cadastro->Históricos

Code: Select all

Enumeration
  #Window_0
EndEnumeration

Enumeration #PB_Compiler_EnumerationValue
  #MenuBar_0
EndEnumeration

Enumeration #PB_Compiler_EnumerationValue
  #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

Enumeration #PB_Compiler_EnumerationValue
  #MDIGadget
  #Clientes
  #Fornecedores
  #Produtos
  #Bancos
  #PlanoDeContas
  #Historicos
  #Indexadores
  #Feriados
  #Vendedores
EndEnumeration

Enumeration #PB_Compiler_EnumerationValue
  #Escape_Key
EndEnumeration

Procedure JanelaHistoricos()
  AddGadgetItem(#MDIGadget,#Historicos,"Históricos",0,#PB_Window_Invisible|#PB_Window_MinimizeGadget|#PB_Window_BorderLess)  
  ResizeWindow(#Historicos,#PB_Ignore,#PB_Ignore,400,200)
  HideWindow(#Historicos,0)
EndProcedure

If OpenWindow(#Window_0, 0, 0, 800, 600, "Sistema Gerencial Clio",#PB_Window_ScreenCentered|#PB_Window_MinimizeGadget|#PB_Window_Invisible)
  AddKeyboardShortcut(#Window_0, #PB_Shortcut_Escape, #Escape_Key)
  If 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("&Janelas")
      MenuItem(#MenuItem_28, "&Cascata")
      MenuItem(#MenuItem_29, "&Vertical")
      MenuItem(#MenuItem_30, "&Horizontal")
    MenuTitle("&Ajuda")
      MenuItem(#MenuItem_31, "&Ajuda ...")
      MenuBar()
      MenuItem(#MenuItem_32, "&Sobre a Aplicação")
  EndIf
  If CreateGadgetList(WindowID(#Window_0)) 
    MDIGadget(#MDIGadget,0,0,0,0,7,#MenuItem_32 + 1,#PB_MDI_AutoSize)
  EndIf  
  HideWindow(#Window_0,0)
  Repeat
    EventID = WaitWindowEvent()
    Select EventID
      Case #PB_Event_Menu
        Select EventMenu()
          Case #MenuItem_0 : AddGadgetItem(#MDIGadget,#Clientes,"Clientes")
          Case #MenuItem_1 : AddGadgetItem(#MDIGadget,#Fornecedores,"Fornecedores")
          Case #MenuItem_2 : AddGadgetItem(#MDIGadget,#Produtos,"Produtos")
          Case #MenuItem_3 : AddGadgetItem(#MDIGadget,#Bancos,"Bancos")
          Case #MenuItem_4 : AddGadgetItem(#MDIGadget,#PlanoDeContas,"Plano de Contas")
          Case #MenuItem_5 : JanelaHistoricos()
          Case #MenuItem_6 : AddGadgetItem(#MDIGadget,#Indexadores,"Indexadores")
          Case #MenuItem_7 : AddGadgetItem(#MDIGadget,#Feriados,"Feriados")
          Case #MenuItem_8 : AddGadgetItem(#MDIGadget,#Vendedores,"Vendedores")
          Case #MenuItem_28: SetGadgetState(#MDIGadget,#PB_MDI_Cascade) 
          Case #MenuItem_29: SetGadgetState(#MDIGadget,#PB_MDI_TileVertically) 
          Case #MenuItem_30: SetGadgetState(#MDIGadget,#PB_MDI_TileHorizontally)        
          Case #Escape_Key : Quit = 1
        EndSelect
      Case #PB_Event_CloseWindow        
        If EventWindow() = #Window_0
          Quit = 1
        Else
          CloseWindow(EventWindow())  
        EndIf  
    EndSelect
    If Quit
      If MessageRequester("Atenção","Deseja finalizar ?",#PB_MessageRequester_YesNo | #MB_DEFBUTTON2) = #PB_MessageRequester_No
        Quit = 0
      EndIf 
    EndIf             
  Until Quit
EndIf
Baldrick
Addict
Addict
Posts: 860
Joined: Fri Jul 02, 2004 6:49 pm
Location: Australia

Post by Baldrick »

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 
Edit: Added sendmessage to help stop the flickering
Last edited by Baldrick on Thu Mar 06, 2008 4:00 am, edited 1 time in total.
Post Reply