immer noch Probleme mit Menu

Anfängerfragen zum Programmieren mit PureBasic.
HoDam
Beiträge: 82
Registriert: 19.11.2004 13:57
Wohnort: Köln, Cologne

immer noch Probleme mit Menu

Beitrag von HoDam »

Habe immer noch Probleme mit dem Menu.

Das Öffnen des Windows ist bei mir als Procedure definiert.

Hier findet auch die Definitions des Menus statt.

Im Hauptprogramm wird das Fenster aufgerufen und eine Datenbank initialisiert.

Wenn ich jetzt die Menuschleife einfüge, initialisiert die Datenbank nicht mehr. und kann dort keine Abfragen machen.


Wahrscheinlich benutze ich ein falsches Event.

Hier mal die Sourceschnipsel

Fenster Procedure

Code: Alles auswählen

Procedure Open_Window_0()

i=5
buff_user$=Space(256)
GetLocaleInfo_( #LOCALE_USER_DEFAULT ,i,buff_user$,256)
;Debug buff_user$

If buff_user$= "49"
Lang = 0
Else
Lang= 1
EndIf
If OpenWindow(#Window_0, 200, 0, 350, 450,  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_ScreenCentered | #PB_Window_TitleBar , Language(Lang, 4))


If CreateGadgetList(WindowID())
TextGadget(#Text_0, 10, 20, 70, 20, Language(Lang,1))
ComboBoxGadget(#Combo_0, 90, 15, 250, 300)
TextGadget(#Text_1, 10, 60, 70, 20, Language(Lang,2))
ComboBoxGadget(#Combo_1, 90, 55, 250, 300)
TextGadget(#Text_2, 10, 100, 200, 20, Language(Lang,3))

ListViewGadget(#Listview_0, 10, 120, 330, 320)

EndIf
If CreateMenu(0, WindowID()) 
  
  OpenSubMenu("Konfiguration") 
  MenuItem(#Menu_01,"Datenbank") 
  MenuBar() 
  MenuItem(#Menu_02,"Ende") 
  CloseSubMenu() 
  
  
EndIf 
EndIf
EndProcedure


Hier der Hauptprogrammteil

Code: Alles auswählen

Open_Window_0()
 
InitDatabase()
If OpenDatabase(#DB1,"DC_DSN",User.s,PW.s)
If DatabaseQuery("Select distinct "+ColorName.s+" from Master order by "+ColorName.s+" desc;" )
While NextDatabaseRow()
AddGadgetItem(#Combo_0,0,GetDatabaseString(0))
Wend
EndIf
CloseDatabase(#DB1)
EndIf

;SetGadgetState(#Combo_0,0)
Repeat ; Start of the event loop
Event = WaitWindowEvent() ; This line waits until an event is received from Windows
WindowID = EventWindowID() ; The Window where the event is generated, can be used in the gadget procedures
GadgetID = EventGadgetID() ; Is it a gadget event?
EventType = EventType() ; The event type
If Event = #PB_EventGadget
If GadgetID = #Combo_0
selKollek.s=GetGadgetItemText(#Combo_0,GetGadgetState(#Combo_0),0 )
ClearGadgetItemList(#Combo_1)
If OpenDatabase(#DB1,"DC_DSN",User.s,PW.s)
If DatabaseQuery("select distinct "+ColorNumber.s+" from Master where "+ColorName.s+" ='"+selKollek+"'order by "+ColorNumber.s+" desc;")

While NextDatabaseRow()
AddGadgetItem(#Combo_1,0,GetDatabaseString(0))
Wend
EndIf
CloseDatabase(#DB1)
EndIf
;SetGadgetState(#Combo_1,0)
ElseIf GadgetID = #Combo_1
ClearGadgetItemList(#Listview_0)
selKollek.s=GetGadgetItemText(#Combo_0,GetGadgetState(#Combo_0),0 )
selFarbton.s=GetGadgetItemText(#Combo_1,GetGadgetState(#Combo_1),0 )

If OpenDatabase(#DB1,"DC_DSN",User.s,PW.s)
If DatabaseQuery("select MfgProductName from Master where "+ColorName.s+" ='"+selKollek+"' And "+ColorNumber.s+" ='"+selFarbton+"'And Ingredient0Amt+Ingredient1Amt+Ingredient2Amt+Ingredient3Amt+Ingredient4Amt+Ingredient5Amt>0 order by MFGProductName desc;")

While NextDatabaseRow()
AddGadgetItem(#Listview_0,0,GetDatabaseString(0))
Wend
EndIf
CloseWindow_(1)
CloseDatabase(#DB1)
EndIf
ElseIf GadgetID = #Listview_0
;CloseWindow(#Window_0)
EndIf


EndIf

Until Event = #PB_Event_CloseWindow ; End of the event loop
End
An welcher Stelle muss ich jetzt die Zuordnunng für das Menu machen.

Code: Alles auswählen

Repeat
  
  Select WaitWindowEvent()
    
    Case #PB_Event_Menu
      
      Select EventMenuID()  ; To see which menu has been selected
        
        Case 1 ; Test
          MessageRequester("Test", "Test", 0)
          
      EndSelect
      
    Case #PB_Event_MenuCloseWindow
      Quit = 1
      
  EndSelect
Until  Quit = 1
Mein Problem ist die until-Bedingung.
Mit was für einem Event muss ich arbeiten.

So wie sie jetzt eingstellt ist kann ich keine Datenbaankabfrage machen.

Nehme ich das Menu heraus funktioniert alles einwandfrei.


Dankeschön[/code]
Benutzeravatar
Lukas-P
Beiträge: 262
Registriert: 07.10.2004 12:03

Beitrag von Lukas-P »

Irgendwie versteh ich nicht richtig was du meinst :freak:
Vielciht das:

Code: Alles auswählen

Repeat
 
  Select WaitWindowEvent()
   
    Case #PB_Event_Menu
     
      Select EventMenuID()  ; To see which menu has been selected
       
        Case 1 ; Test
          MessageRequester("Test", "Test", 0)
         
      EndSelect
     
    Case #PB_Event_CloseWindow
      Quit = 1
     
  EndSelect
Until  Quit = 1 
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Beitrag von Batze »

Wieso benutzt du eigentlich OpenSubMenu() und nicht MenuTitle()?
:?
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
Benutzeravatar
jear
Beiträge: 288
Registriert: 17.10.2004 01:59
Wohnort: Ammerland

Nur ein Hinweis auf eine andere Möglichkeit...

Beitrag von jear »

Code: Alles auswählen

;- Default-Sprache des Nutzers ermitteln
Sprache  = GetUserDefaultLangID_() % 1024
If Sprache <> 7 ; deutsch für D, A , CH , L , LI
  Sprache = 0   ; alle anderen englisch
EndIf
Man ist nie zu alt zum lernen, auch wenn man dabei manchmal alt aussieht!
Antworten