Code : Tout sélectionner
#Win_Ppe = 0
#Menu_Ppe = 0
#Item_Quitter = 0
#Item_nProjet = 1
#Item_fProjet = 2
#Item_MDI = 16 ; jusqu'à 31 ! ! !
#Gad_MDI = 0
#Gad_MDI2 = 1
Dim ProjectID(15)
Dim ProjectName$(15)
If InitSprite()
WinOpt = #PB_Window_SystemMenu
WinOpt | #PB_Window_ScreenCentered
WinOpt | #PB_Window_SizeGadget
WinOpt | #PB_Window_MinimizeGadget
WinOpt | #PB_Window_MaximizeGadget
If OpenWindow(#Win_Ppe, 0, 0, 800, 600, "MDI", WinOpt)
If CreateMenu(#Menu_Ppe, WindowID(#Win_Ppe)) And CreateGadgetList(WindowID(#Win_Ppe))
MenuTitle("Projet")
MenuItem(#Item_nProjet, "Nouveau")
MenuBar()
MenuItem(#Item_fProjet, "Fermer")
MenuBar()
MenuItem(#Item_Quitter, "Quitter")
MDIGadget(#Gad_MDI, 0, 0, 0, 0, 0, #Item_MDI, #PB_MDI_AutoSize)
CreateGadgetList(WindowID(#Gad_MDI))
UseGadgetList(WindowID(#Win_Ppe)) ; retourne à la liste de gadgets de la fenêtre principale
;FinMenu
Repeat
n = 0
For i = 0 To 15
If ProjectName$(i) <> ""
n = n + 1
EndIf
Next i
DisableMenuItem(#Menu_Ppe, 2, n XOr 1)
DisableMenuItem(#Menu_Ppe, 1, (16 - n) XOr 1)
Select WaitWindowEvent()
Case #PB_Event_Menu
Select EventMenu()
Case #Item_nProjet
i = 0
Name$ = ""
Repeat
If ProjectName$(i) = ""
ProjectName$(i) = "Projet " + Str(i + 1) + " (caduque)"
Name$ = ProjectName$(i)
ID = i
i = 15
EndIf
i + 1
Until (i > 15)
If Name$ <> ""
n = AddGadgetItem(#Gad_MDI, -1, Name$)
CreateGadgetList(WindowID(#Gad_MDI) )
ProjectID(ID) = n
Else
MessageRequester("Attention!", "Nombre maximum de fenêtre atteint", #PB_MessageRequester_Ok)
EndIf
Case #Item_fProjet
;Debug Str(GetActiveGadget() )
;Debug Str(GetActiveWindow() )
Debug(GetGadgetState(#Gad_MDI) )
;For i = 0 To 15
; If Window = ProjectID(i)
; ProjectName$(i) = ""
; EndIf
;Next i
CloseWindow(Window)
Case #Item_Quitter
End
EndSelect
Case #PB_Event_CloseWindow
Window = EventWindow()
If Window = #Win_Ppe
End
Else
CloseWindow(Window)
For i = 0 To 15
If Window = ProjectID(i)
ProjectName$(i) = ""
EndIf
Next i
EndIf
EndSelect
ForEver
EndIf
EndIf
Else
Message$ = "Impossible d'initialiser l'affichage graphique" + Chr(10)
Message$ + "Les causes de cette erreur sont :" + Chr(10) + Chr(10)
Message$ + "- Impossible d'initialiser Direct 7 ou supérieur"
MessageRequester("Erreur d'initialisation", Message$, #PB_MessageRequester_Ok)
EndIf
Quelqu'un connait la bonne instruction à insérer là où il y a plein de point-virgules?