tu t'y prend assez mal en effet, tu ne dois pas créer des parties de ton programme comme des programmes indépendants et déclarer plusieurs fois les mêmes variables et les mêmes structures/constantes dans chacun d'eux.
pour exemple :
start
Code : Tout sélectionner
Declare moto()
Declare auto()
;============================ fichier Start.pb =====================
Enumeration
#Window_Start
#Window_Moto
#Window_auto
EndEnumeration
;}
;{ Gadgets
Enumeration
#Button_Bd_Auto
#Button_Bd_Moto
#ListIcon_Moto
#ListIcon_Auto
#Button_Quitter
#Button_Quitter_moto
#Button_Quitter_auto
#button_auto_to_moto
#button_moto_to_auto
#Menu
EndEnumeration
;}
Define.l Evenement, EvenementWindow, EvenementGadget, EvenementType, EvenementMenu
Define.l Event, EventWindow, EventGadget, EventType, EventMenu
;}
Procedure OpenWindow_Window_Start()
If OpenWindow(#Window_Start, 562, 29, 304, 210, "Bienvenue", #PB_Window_SystemMenu|#PB_Window_TitleBar|#PB_Window_ScreenCentered)
ButtonGadget(#Button_Bd_Auto, 20, 20, 200, 35, "Pièces auto")
ButtonGadget(#Button_Bd_Moto, 20, 65, 200, 35, "Pièces moto")
ButtonGadget(#Button_Quitter, 210, 140, 80, 35, "Quitter")
EndIf
EndProcedure
Procedure Menu()
If CreateMenu(#Menu, WindowID(#Window_Start))
MenuTitle("Base de données")
MenuItem( 1, "Supprimer un élément")
MenuItem( 2, "Ajouter un élément")
MenuBar()
MenuItem( 3, "Quitter")
EndIf
EndProcedure
UseSQLiteDatabase()
IncludeFile("moto.pb")
IncludeFile("auto.pb")
OpenWindow_Window_Start()
Menu()
;{- Evenement loop
Repeat
Evenement = WaitWindowEvent()
EvenementGadget = EventGadget()
EvenementType = EventType()
EvenementMenu = EventMenu()
Select Evenement
Case #PB_Event_Gadget
If EvenementGadget = #Button_Bd_Auto
auto()
ElseIf EvenementGadget = #Button_Bd_Moto
moto()
ElseIf EvenementGadget = #Button_Quitter
CloseWindow(#Window_Start)
Break
EndIf
Case #PB_Event_Menu ; Un élément du menu a été sélectionné
Select EvenementMenu ; On récupère le numéro de cet élément...
Case 1 : MessageRequester("Ouvrir :", "J'aimerai ouvrir une autre fenetre présente dans un autre fichier nommé : "+Chr(13) + "DB_Delete.pb ou .pbi")
Case 2 : MessageRequester("Ouvrir :", "J'aimerai ouvrir une autre fenetre présente dans un autre fichier nommé : "+Chr(13) + "DB_Update.pb ou .pbi")
Case 3 : CloseWindow(#Window_Start): Break
EndSelect
Case #PB_Event_CloseWindow
EvenementWindow = EventWindow()
If EvenementWindow = #Window_Start
CloseWindow(#Window_Start)
Break
EndIf
EndSelect
ForEver
;
auto
Code : Tout sélectionner
Procedure OpenWindow_Window_Auto()
If OpenWindow(#Window_Auto, 562, 29, 304, 181, "Pièces auto en stock", #PB_Window_SystemMenu|#PB_Window_TitleBar|#PB_Window_ScreenCentered)
ButtonGadget(#button_auto_to_moto, 20, 135, 185, 35, "Base de données moto")
ButtonGadget(#Button_Quitter_auto, 205, 135, 80, 35, "Quitter")
ListIconGadget(#ListIcon_Auto, 20, 15, 265, 105, "Pièces en stocks", 170, #PB_ListIcon_AlwaysShowSelection|#PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect)
AddGadgetColumn(#ListIcon_Auto,1,"Quantité",100)
EndIf
EndProcedure
Procedure Bdd_Auto()
DatabaseFile$ = #PB_Compiler_FilePath+"/Database.sqlite"
If CreateFile(0, DatabaseFile$)
CloseFile(0)
If OpenDatabase(0, DatabaseFile$, "", "",#PB_Database_SQLite)
CheckDatabaseUpdate(0, "CREATE TABLE Auto (nom CHAR(50), quantite INT)")
CheckDatabaseUpdate(0, "INSERT INTO Auto (nom, quantite) VALUES ('Filtre a air', '10')")
CheckDatabaseUpdate(0, "INSERT INTO Auto (nom, quantite) VALUES ('Bougies', '5')")
CheckDatabaseUpdate(0, "INSERT INTO Auto (nom, quantite) VALUES ('Courroies', '20')")
If DatabaseQuery(0, "SELECT * FROM Auto")
While NextDatabaseRow(0)
AddGadgetItem(#ListIcon_Auto, CountGadgetItems(#ListIcon_Auto), GetDatabaseString(0, 0) + Chr(10) + GetDatabaseString(DBSQLite, 1)); Debug GetDatabaseString(0, 0)
Wend
FinishDatabaseQuery(0)
EndIf
CloseDatabase(0)
Else
Debug "Can't open database !"
EndIf
Else
Debug "Can't create the database file !"
EndIf
EndProcedure
Procedure auto()
OpenWindow_Window_Auto()
Bdd_Auto()
;{- Event loop
Repeat
Event = WaitWindowEvent()
Select Event
; ///////////////////
Case #PB_Event_Gadget
EventGadget = EventGadget()
EventType = EventType()
If EventGadget = #button_auto_to_moto
CloseWindow(#Window_Auto)
gomoto=1
Break
ElseIf EventGadget = #ListIcon_Auto
ElseIf EventGadget = #Button_Quitter_auto
CloseWindow(#Window_Auto)
Break
EndIf
; ////////////////////////
Case #PB_Event_CloseWindow
EventWindow = EventWindow()
If EventWindow = #Window_Auto
CloseWindow(#Window_Auto)
Break
EndIf
EndSelect
ForEver
If gomoto=1
moto()
EndIf
;
;}
EndProcedure
moto
Code : Tout sélectionner
;============================ fichier DB_moto.pb =====================
;}
UseSQLiteDatabase()
Procedure OpenWindow_Window_Moto()
If OpenWindow(#Window_Moto, 562, 29, 304, 181, "Pièces moto en stock", #PB_Window_SystemMenu|#PB_Window_TitleBar|#PB_Window_ScreenCentered)
ButtonGadget(#button_moto_to_auto, 20, 135, 185, 35, "Base de données auto")
ButtonGadget(#Button_Quitter_moto, 205, 135, 80, 35, "Quitter")
ListIconGadget(#ListIcon_Moto, 20, 15, 265, 105, "Pièces en stocks", 170, #PB_ListIcon_AlwaysShowSelection|#PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect)
AddGadgetColumn(#ListIcon_Moto,1,"Quantité",100)
EndIf
EndProcedure
Procedure CheckDatabaseUpdate(Database, Query$)
Result = DatabaseUpdate(Database, Query$)
If Result = 0
Debug DatabaseError()
EndIf
ProcedureReturn Result
EndProcedure
Procedure Bdd_Moto()
DatabaseFile$ = #PB_Compiler_FilePath+"/Database.sqlite"
If CreateFile(0, DatabaseFile$)
CloseFile(0)
If OpenDatabase(0, DatabaseFile$, "", "",#PB_Database_SQLite)
CheckDatabaseUpdate(0, "CREATE TABLE Moto (nom CHAR(50), quantite INT)")
CheckDatabaseUpdate(0, "INSERT INTO Moto (nom, quantite) VALUES ('Pneu avant', '6')")
CheckDatabaseUpdate(0, "INSERT INTO Moto (nom, quantite) VALUES ('Casque', '52')")
CheckDatabaseUpdate(0, "INSERT INTO Moto (nom, quantite) VALUES ('Poignee', '12')")
If DatabaseQuery(0, "SELECT * FROM Moto")
While NextDatabaseRow(0)
AddGadgetItem(#ListIcon_Moto, CountGadgetItems(#ListIcon_Moto), GetDatabaseString(0, 0) + Chr(10) + GetDatabaseString(DBSQLite, 1)); Debug GetDatabaseString(0, 0)
Wend
FinishDatabaseQuery(0)
EndIf
CloseDatabase(0)
Else
Debug "Can't open database !"
EndIf
Else
Debug "Can't create the database file !"
EndIf
EndProcedure
Procedure moto()
OpenWindow_Window_Moto()
Bdd_Moto()
;{- Event loop
Repeat
Event = WaitWindowEvent()
Select Event
; ///////////////////
Case #PB_Event_Gadget
EventGadget = EventGadget()
EventType = EventType()
If EventGadget = #button_moto_to_auto
CloseWindow(#Window_moto)
goauto=1
Break
ElseIf EventGadget = #Button_Quitter_moto
CloseWindow(#Window_Moto)
Break
ElseIf EventGadget = #ListIcon_Moto
EndIf
; ////////////////////////
Case #PB_Event_CloseWindow
EventWindow = EventWindow()
If EventWindow = #Window_Moto
CloseWindow(#Window_Moto)
Break
EndIf
EndSelect
ForEver
If goauto=1
auto()
EndIf
;
;}
EndProcedure
attention c'est du vite fait et pas forcement la meilleur manière de faire.
tu remarquera que j'ai enlevé toute traces de define et autre énumération de tes 2 includes auto et moto
et que j'ai mis tout cela dans le programme principal.
lorsque tu fait
tu donne a la constante #button_quit la valeur 0 cette valeur est fixe pour l'ensemble du programme. il ne sert a rien d'ajouter une autre énumération dans auto ou moto puisqu'elle est deja faite ici.
l'avantage d’énumérer toute les constantes dans le programme principal est que tout tes gadgets auront une valeur différente. idem pour les fenêtres et les defines.
de plus evite d'utiliser les memes constantes pour un gadget dans des fenetres differentes car l'id du gadget est global et le bouton disparait de la fenetre ou il se trouvait precedement.
voir ma modif du code.
pour bien comprendre comment tu dois t'y prendre le plus simple serait que si tu ajoute un module a ton programme principale tu le code dans celui ci directement puis une fois que tu as bien cerné le problème et terminé la base du code tu peux le couper et le coller dans un autre fichier puis l'inclure dans le programme principal a l'aide d'un include.