Seite 1 von 1

#Gadget object not initialized

Verfasst: 24.07.2007 21:37
von HemSA
Hallole Ihr,
in meinem Code bekomme ich immer die obige Fehlermeldung. Kann mir da jemand weiterhelfen? Im Grunde will ich in einem Fenster die Startzeit fest, und dann die aktuelle Zeit immer fortlaufend, wie in einer Digitalanzeige, angezeigt haben. Später will ich von der Zeitdifferenz einige berechnete Werte im Hauptfenster anzeigen.

Danke schon mal an alle.

Code: Alles auswählen

Enumeration ; Windows 
  #Eingangsfenster 
  #Hauptfenster
EndEnumeration 


Enumeration ; Gadgets 
    ; Eingangsfenster 
  #Eingangsfenster_txt_titel1
  #Eingangsfenster_txt_titel2 
  #Eingangsfenster_listview_wert1
  #Eingangsfenster_listview_wert2
  #Eingangsfenster_button_weiter
 
   ; Hauptfenster 
  #Hauptfenster_txt_titel 
  #Hauptfenster_txt_startzeit
  #Hauptfenster_txt_jetztzeit
  
EndEnumeration 
   
  
  Global zeit
  
  Procedure Open_Eingangsfenster()
  
  If OpenWindow(#Eingangsfenster, 0, 0, 500, 250, "Eingangsfenster", #PB_Window_SystemMenu |#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget| #PB_Window_ScreenCentered)
  EndIf 
  
  
  
  If CreateGadgetList(WindowID(#Eingangsfenster))
    TextGadget(#Eingangsfenster_txt_titel1, 20,  10, 200, 20, "Markieren Sie bitte Wert 1")
    TextGadget(#Eingangsfenster_txt_titel2, 260,  10, 250, 20, "Markieren Sie bitte Wert 2")
    
    ListViewGadget(#Eingangsfenster_listview_wert1,10, 50, 200, 120)
    
    For wert1 = 1 To 15
      AddGadgetItem (#Eingangsfenster_listview_wert1, -1, "Wert1: " + Str(wert1))   
    Next

       
    ListViewGadget(#Eingangsfenster_listview_wert2,300, 50, 150, 120)
    
    For wert2 = 1 To 10
    AddGadgetItem (#Eingangsfenster_listview_wert2, -1, "Wert2: " + Str(wert2))
    Next 
    
    ButtonGadget(#Eingangsfenster_button_weiter, 100, 200, 300, 30, "Weiter")
    ;Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
  EndIf
  
   
  EndProcedure
  
  
  Procedure Open_Hauptfenster()
  
  If OpenWindow(#Hauptfenster, 500, 500, 270, 160, "Hauptfenster", #PB_Window_SystemMenu |#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered)
  EndIf 
  
    
    
  If CreateGadgetList(WindowID(#Hauptfenster))
    TextGadget(#Hauptfenster_txt_titel, 10,  10, 250, 20, "")
    TextGadget(#Hauptfenster_txt_startzeit, 10,  40, 250, 20, "")
    TextGadget(#Hauptfenster_txt_jetztzeit, 10,  70, 250, 20, "")
  EndIf
   
EndProcedure
  
  
  
Procedure hauptprogramm()
  
  Static zeit
  
  Protected quit.l 
  Protected EventID.l 
  Protected EventGadget.l 
  Protected EventWindow.l 
  
  Open_Eingangsfenster()
  
  zeit = ElapsedMilliseconds() 
  
  Repeat 
    
    EventID     = WaitWindowEvent() 
    EventGadget = EventGadget() 
    EventWindow = EventWindow() 
    
    Select EventID 
      Case #PB_Event_CloseWindow 
        
        Select EventWindow 
          Case #Eingangsfenster         :  quit =1      
          Case #Hauptfenster            :  quit =1
        EndSelect 
        
      Case #PB_Event_Gadget  
        
        Select EventWindow 
          
          Case #Eingangsfenster
            
            Select EventGadget 
              
              Case #Eingangsfenster_button_weiter
                      CloseWindow(#Eingangsfenster)
                      Open_Hauptfenster()
                      startzeits.s=FormatDate("%dd:%mm:%yyyy    %hh:%ii:%ss",Date())
            EndSelect    
        EndSelect
    EndSelect     
              
          
    ;If ElapsedMilliseconds() > zeit 
     ;  zeit + 1000 
       jetztzeits.s=FormatDate("%dd:%mm:%yyyy    %hh:%ii:%ss",Date()) 
                                   
       SetGadgetText(#Hauptfenster_txt_startzeit,startzeits.s)                     
       SetGadgetText(#Hauptfenster_txt_jetztzeit,jetztzeits.s)  
                  
   ; EndIf
   
            
  Until quit=1 
  
EndProcedure 

hauptprogramm()
End 

Verfasst: 24.07.2007 21:40
von Andreas_S
wenn man den Debugger ausschaltet futzt es...

Verfasst: 24.07.2007 21:46
von a14xerus
Es ist klar das diese Meldugn kommt, weil das Gadget doch erst erstellt wird, nachdem man auf den Button klickt.
ALso wird es bei den ersten Event-durchläufen so sein ,das das Gadget noch garnicht erstellt ist.
alternativ kannst du zuerst alle Fenster unsichtbar erstellen und dann mittels HideWindow() anzeigen lassen

Oder du deaktivierst den Debugger für diese beiden Zeilen "DisableDebugger" und "EnableDebugger"

@PBprogger: es funst auch mit Debugger, er pausiert das Programm nur

Verfasst: 24.07.2007 22:06
von HemSA
Danke an Euch, das mit dem Tip von dem noch nicht erstellten Gadget hat geholfen.
Habe eine Bremse eingebaut ( EventID = WaitWindowEvent(100) ), und die Strichtunkte vor dem "Timerabschnitt" entfernt. Klappt gut jetzt. Aber ich will das Ganze dann morgen doch noch umschreiben mit dem verstecktem Hauptfenster, damit das Ganze etwas besser aussieht.