Page 1 sur 1

Utilisation MDI & Procédures [RESOLU]

Publié : mar. 30/mars/2010 8:31
par DarkIchigo
Salut a tous,
ayant un peu de temps libre au bureau en ce moment, j'ai essayé de faire un petit programme
pour m'éviter d'ouvrir 50 fois les même dossier, pas très utiles mais ca apprends à programmer :)

je me suis basé sur le code de LSI du thread Photoshop like modifié pour le comprendre ^^.

cependant j'éprouve quelques difficultés avec, en autres, le MDI et comment l'insérer correctement
dans une procédure (ou l'inverse je ne sais pas trop ^^)

Code : Tout sélectionner

;->>>> Déclaration variables / constantes <<<<
#T_x_Window = 1280
#T_y_Window = 1024

EG_CT$ = "C:\Chantal Thomas\"
EG_Lov$ = "C:\Lovable\"
EG_Pret$ = "C:\Pret furnizori\"

#Flag = #PB_Window_MaximizeGadget | #PB_Window_Maximize | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget | #PB_Window_WindowCentered

Define.w

Enumeration
   #Window
   #Window_CT
   #Window_Lov
   #Window_Pret
    
   #Editor_Menu = 10
   #Editor_Menu_CT
   #Editor_Menu_Lov
   #Editor_Menu_Pret
   #Editor_Menu_Help
   #Editor_Menu_About
   #Editor_Menu_Quit
   
   #Editor_CT_Web = 100
   #Editor_CT_ETG
   #Editor_CT_ECG
   #Editor_CT_ELG
   #Editor_CT_ETG2
   #Editor_CT_ECG2
   #Editor_CT_ELG2
   
   #Editor_Lov_Web = 200
   #Editor_Lov_ETG
   #Editor_Lov_ECG
   #Editor_Lov_ELG
   
   #Editor_Pret_ETG = 300
   #Editor_Pret_ECG
   #Editor_Pret_ELG
EndEnumeration

Define.l

;->>>> Procédures <<<<

Procedure Editor_CT()
  MDIGadget(0, 0, 0, 0, 0, 1, 1, #PB_MDI_BorderLess | #PB_MDI_AutoSize)
    AddGadgetItem(0, #Window_CT, "Chantal Thomass")
    WebGadget(#Editor_CT_Web, 0, #T_y_Window/2, #T_x_Window, #T_y_Window/2, "www.google.fr")
    ExplorerTreeGadget(#Editor_CT_ETG, 0, 0, #T_x_Window/5, #T_y_Window/2, EG_CT$)
    ExplorerComboGadget(#Editor_CT_ECG, #T_x_Window/5, 0, (#T_x_Window/5)*4, 30, EG_CT$)
    ExplorerListGadget(#Editor_CT_ELG, #T_x_Window/5, 30, (#T_x_Window/5)*4, #T_y_Window/2-30, EG_CT$)
EndProcedure

Procedure Editor_Lov()
  MDIGadget(0, 0, 0, 0, 0, 1, 1, #PB_MDI_BorderLess | #PB_MDI_AutoSize)
    AddGadgetItem(0, #Window_Lov, "Lovable")
    WebGadget(#Editor_Lov_Web, 0, #T_y_Window/2, #T_x_Window, #T_y_Window/2, "www.google.fr")
    ExplorerTreeGadget(#Editor_Lov_ETG, 0, 0, #T_x_Window/5, #T_y_Window/2, EG_Lov$)
    ExplorerComboGadget(#Editor_Lov_ECG, #T_x_Window/5, 0, (#T_x_Window/5)*4, 30, EG_Lov$)
    ExplorerListGadget(#Editor_Lov_ELG, #T_x_Window/5, 30, (#T_x_Window/5)*4, #T_y_Window/2-30, EG_Lov$)
EndProcedure

Procedure Editor_Pret()
  MDIGadget(0, 0, 0, 0, 0, 1, 1, #PB_MDI_BorderLess | #PB_MDI_AutoSize)
    AddGadgetItem(0, #Window_Pret, "Pret / MOQ / Lead Time")
    ExplorerTreeGadget(#Editor_Pret_ETG, 0, 0, #T_x_Window/5, #T_y_Window/2, EG_Pret$)
    ExplorerComboGadget(#Editor_Pret_ECG, #T_x_Window/5, 0, (#T_x_Window/5)*4, 30, EG_Pret$)
    ExplorerListGadget(#Editor_Pret_ELG, #T_x_Window/5, 30, (#T_x_Window/5)*4, #T_y_Window/2-30, EG_Pret$)
EndProcedure

Procedure Open_Editor_Help()
  MessageRequester("Help", "Help")
EndProcedure

Procedure Open_Editor_About()
  MessageRequester("About", "About")
EndProcedure


;->>>> Initialisation programme <<<<

If OpenWindow(#Window, 0, 0, #T_x_Window, #T_y_Window, "Programme_main", #Flag)
    
  CreateMenu(#Editor_Menu, WindowID(#Window))
  
    MenuTitle("Fichier")
      MenuItem(#Editor_Menu_CT, "Chantall Thomass" + Chr(9) + "Ctrl+1")
      AddKeyboardShortcut(#Window, #PB_Shortcut_Control | #PB_Shortcut_1, #Editor_Menu_CT)
      MenuItem(#Editor_Menu_Lov, "Lovable" + Chr(9) + "Ctrl+2")
      AddKeyboardShortcut(#Window, #PB_Shortcut_Control | #PB_Shortcut_2, #Editor_Menu_Lov)
      MenuItem(#Editor_Menu_Pret, "Pret / MOQ / Lead Time" + Chr(9) + "Ctrl+3")
      AddKeyboardShortcut(#Window, #PB_Shortcut_Control | #PB_Shortcut_3, #Editor_Menu_Pret)
      MenuBar()
      MenuItem(#Editor_Menu_Quit, "Quitter" + Chr(9) + "Crtl+Q") 
      AddKeyboardShortcut(#Window, #PB_Shortcut_Control | #PB_Shortcut_Q, #Editor_Menu_Quit)
    
    MenuTitle("Help")         
      MenuItem(#Editor_Menu_Help, "Help" + Chr(9) + "F1")
      AddKeyboardShortcut(#Window, #PB_Shortcut_F1, #Editor_Menu_Help)
      MenuBar()
      MenuItem(#Editor_Menu_About, "About" + Chr(9) + "Ctrl+A")
      AddKeyboardShortcut(#Window, #PB_Shortcut_Control | #PB_Shortcut_A, #Editor_Menu_About) 
    
;->>>> Boucle WaitEvent() <<<<

   Quit = 0
   Repeat
      Event = WaitWindowEvent()
      Select EventWindow()
         Case #Window_CT ; CT window event
           Select Event
             Case #PB_Event_CloseWindow
               CloseWindow(#Window_CT)
           EndSelect
           
         Case #Window_Lov ; Lov window event
           Select Event
             Case #PB_Event_CloseWindow
               CloseWindow(#Window_Lov)
           EndSelect
           
         Case #Window_Pret ; Pret window event
           Select Event
             Case #PB_Event_CloseWindow
               CloseWindow(#Window_Pret)
           EndSelect         
            
         Case #Window ; Main window event
            Select Event
               Case #PB_Event_CloseWindow
                  Quit = 1
               Case #PB_Event_Menu
                  Select EventMenu()
                     Case #Editor_Menu_CT
                        Editor_CT()
                     Case #Editor_Menu_Lov
                        Editor_Lov()
                     Case #Editor_Menu_Pret
                        Editor_Pret()
                     Case #Editor_Menu_Help
                        Open_Editor_Help()
                     Case #Editor_Menu_About
                        Open_Editor_About()
                     Case #Editor_Menu_Quit
                        CloseWindow(#Window)
                        ;Quit = 1
                  EndSelect
            EndSelect
      EndSelect
      
   Until Quit = 1
   
EndIf
Le pb que je rencontre est le suivant :
J'ouvre le prog, une 1ere fenêtrefille, jusque la ok, mais si je ferme la fenêtrefille et essaye d'en ouvrir une autre plantage :
"There is no current GadgetList"

je suppose que le pb viens de l'intégration du MDIGadget dans la procédure mais si je ne l'y intègre pas lors de la demande d'ouverture d'un fichier, il me demande quelle fenêtre je veux ouvrir.

Re: Utilisation MDI & Procédures

Publié : mar. 30/mars/2010 9:09
par Ar-S
Salut,
ajoute

Code : Tout sélectionner

UseGadgetList(WindowID(#Window)) 
à la fin de tes procédures.

Re: Utilisation MDI & Procédures

Publié : mar. 30/mars/2010 10:07
par DarkIchigo
Yes merci Ar-S, ca marche impec :D