Seite 1 von 1

Neues fentser ohne altes zu schließen

Verfasst: 08.06.2006 17:54
von a14xerus
Wenn ich ein aktives Fenster geöffnet habe, und ein neus per OpenWindow() öffne, schließt sich mei naktives Fentser.. wie kann man das verhindern

(die beiden Fenster haben NICHT die gleiche ID: OpenWindow(WindowID,100,100,.....) )

TIA

Verfasst: 08.06.2006 17:56
von roherter
Normalerweise schließst sich das andere nicht,ohne code kann ich nix dazu sagen. :shock:

Verfasst: 08.06.2006 17:57
von Tafkadasom2k5
Verlässt du beim Öffnen des neuen Fensters vielleicht deine Eventschleife vom ersten Fenster?

...wir sieht denn ungefähr die Struktur von deiner Eventschleife aus? Hast du die Eventschleife(n) vielleicht mit dem Visual-Designer erstellen lassen (also nicht nur das Formular sondern auch die Schleifen)?

Gr33tz
Tafkadasom2k5

Verfasst: 08.06.2006 18:00
von a14xerus

Code: Alles auswählen

Procedure Open_player()
  If OpenWindow(#Window_player, 375, 83, 600, 300, "AP Media Player",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered )
    If CreateMenu(#MenuBar_0, WindowID(#Window_player))
      MenuTitle("Datei")
      MenuItem(#MENU_open_file, "Datei öffnen")
      MenuItem(#MENU_open_url, "URL öffnen")
      MenuBar()
      MenuItem(#MENU_neue_liste, "Neue Wiedergabeliste")
      MenuItem(#MENU_liste_speichern, "Aktuelle Wiedergabeliste speichern unter")
      MenuItem(#MENU_open_liste, "Wiedergabeliste öffnen")
      MenuBar()
      MenuItem(#MENU_end, "Beenden")
      MenuTitle("Wiedergabe")
      MenuItem(#MENU_play_pause, "Play / Pause")
      MenuItem(#MENU_stop, "Stop")
      MenuBar()
      MenuItem(#MENU_cd, "Wiedergabe von Audio CD")
      MenuBar()
      MenuItem(#MENU_vor, "Vor")
      MenuItem(#MENU_zurueck, "Zurück")
      MenuItem(#MENU_cd_eject, "CD auswerfen")
      MenuTitle("Extras")
      MenuItem(#MENU_about, "About AP Media Player")
      MenuItem(#MENU_update, "Update")
      MenuBar()
      MenuItem(#MENU_einstellungen, "Einstellungen")
    EndIf
    
    If CreateGadgetList(WindowID(#Window_player))
      
    EndIf
  EndIf
EndProcedure

;#######################################
;#######################################

Procedure Open_Window_URL()
  If OpenWindow(#Window_URL, 420, 277, 408, 63, "URL öffnen",  #PB_Window_SystemMenu | #PB_Window_TitleBar )
    If CreateGadgetList(WindowID(#Window_URL))
      StringGadget(#String_URL, 10, 10, 390, 20, "")
      ButtonGadget(#Button_URL_ok, 180, 40, 50, 20, "OK")
      
    EndIf
  EndIf
EndProcedure


;#######################################
;#######################################

Procedure URL()
  
  Open_Window_URL()
  
  
  Repeat
    
    Event = WaitWindowEvent() 
    WindowID = EventWindow()
    GadgetID = EventGadget()
    EventType = EventType() 

    
    If Event = #PB_Event_Gadget
      
      If GadgetID = #String_URL
        
      ElseIf GadgetID = #Button_URL_ok
        GetGadgetText(#String_URL)
        
      EndIf
      
    EndIf
    
  Until Event = #PB_Event_CloseWindow
  
  
  
EndProcedure





ds sind die proceduren

und in der schleife des geöffneten Fensters Open_Player():

Code: Alles auswählen



    ElseIf MenuID = #MENU_open_url
      URL()




//edit:
ich verlasse die eventschleife durch eine procedure, die aber in der schleife aufgerufen wird, natürlcih ist sie auserhalb der schleiße geschreiben...

//edit:
heißt das , ich müsste die komplette neue eventschleife in die alte einbauen.. ??
ich habs mit procedure gemacht, weil ich es so übersichtlicher finde, oder ist es, weil ich in der zweiten schleiße den variablen event u.s.w die konstanten des neuen fensters zuordne??

Verfasst: 08.06.2006 18:34
von ts-soft
Kann jetzt nur zu dem geposten Source antworten:
;#######################################
;#######################################

Code: Alles auswählen

Procedure URL()
 
  Open_Window_URL()
 
 
  Repeat
   
    Event = WaitWindowEvent()
    WindowID = EventWindow()
    GadgetID = EventGadget()
    EventType = EventType()

    If Event = #PB_Event_CloseWindow
      If WindowID = #Window_player
        Break ; ende
      ElseIf WindowID = #Window_URL
        CloseWindow(#Window_URL)
      EndIf
    
    ElseIf Event = #PB_Event_Gadget
     
      If GadgetID = #String_URL
       
      ElseIf GadgetID = #Button_URL_ok
        GetGadgetText(#String_URL)
       
      EndIf
     
    EndIf
   
  ForEver
 
 
 
EndProcedure
Wenn #Window_URL geschlossen wird, bleibt #Window_player offen
umgekehrt werden beide geschlossen

Verfasst: 08.06.2006 18:36
von a14xerus
naj.. wenn die procedure aufgerufen wird, schließt sich Open_Player() udn Open_Window_URL() öffnet sich, wenn ich URL schließe endet das Programm

Verfasst: 09.06.2006 09:31
von real
Ich hab die repeat : until Schleife mal in die jeweilige Prozedur gehängt. Außerdem hab ich das mal so vervollständigt, dass man es als Ganzes kompilieren kann. Was Du bei Deinen Ereignisabfragen zur Sicherheit nicht vergessen solltest ist, die WindowID abzufragen. Außerdem solltest Du das URL-Window bei Click auf Okay oder den Schließen-Button oben rechts durch CloseWindow() schließen lassen - die Anwendung soll ja nicht komplett beendet werden.

Code: Alles auswählen

Enumeration
  #Window_player
    #MenuBar_0
    #MENU_open_file
    #MENU_open_url
    #MENU_neue_liste
    #MENU_liste_speichern
    #MENU_open_liste
    #MENU_end
    #MENU_play_pause
    #MENU_stop
    #MENU_cd
    #MENU_vor
    #MENU_zurueck
    #MENU_cd_eject
    #MENU_about
    #MENU_update
    #MENU_einstellungen
  #Window_URL
    #String_URL
    #Button_URL_ok
EndEnumeration

Procedure URL() 
  If OpenWindow(#Window_URL, 420, 277, 408, 63, "URL öffnen",  #PB_Window_SystemMenu | #PB_Window_TitleBar ) 
    If CreateGadgetList(WindowID(#Window_URL)) 
      StringGadget(#String_URL, 10, 10, 390, 20, "") 
      ButtonGadget(#Button_URL_ok, 180, 40, 50, 20, "OK") 
    EndIf 
  
    Repeat 
      Event = WaitWindowEvent() 
      WindowID = EventWindow() 
      GadgetID = EventGadget() 
      EventType = EventType() 
  
      If Event = #PB_Event_Gadget And WindowID = #Window_URL
        Select GadgetID
          Case #String_URL 
            ; fehlt
          Case #Button_URL_ok 
            MessageRequester("URL",GetGadgetText(#String_URL))
            Break
        EndSelect
      EndIf 
    Until Event = #PB_Event_CloseWindow And WindowID = #Window_URL
  EndIf
  CloseWindow(#Window_URL)
EndProcedure 

;####################################### 
;####################################### 

Procedure Open_player() 
  If OpenWindow(#Window_player, 375, 83, 600, 300, "AP Media Player",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered ) 
    If CreateMenu(#MenuBar_0, WindowID(#Window_player)) 
      MenuTitle("Datei") 
      MenuItem(#MENU_open_file, "Datei öffnen") 
      MenuItem(#MENU_open_url, "URL öffnen") 
      MenuBar() 
      MenuItem(#MENU_neue_liste, "Neue Wiedergabeliste") 
      MenuItem(#MENU_liste_speichern, "Aktuelle Wiedergabeliste speichern unter") 
      MenuItem(#MENU_open_liste, "Wiedergabeliste öffnen") 
      MenuBar() 
      MenuItem(#MENU_end, "Beenden") 
      MenuTitle("Wiedergabe") 
      MenuItem(#MENU_play_pause, "Play / Pause") 
      MenuItem(#MENU_stop, "Stop") 
      MenuBar() 
      MenuItem(#MENU_cd, "Wiedergabe von Audio CD") 
      MenuBar() 
      MenuItem(#MENU_vor, "Vor") 
      MenuItem(#MENU_zurueck, "Zurück") 
      MenuItem(#MENU_cd_eject, "CD auswerfen") 
      MenuTitle("Extras") 
      MenuItem(#MENU_about, "About AP Media Player") 
      MenuItem(#MENU_update, "Update") 
      MenuBar() 
      MenuItem(#MENU_einstellungen, "Einstellungen") 
    EndIf 
    If CreateGadgetList(WindowID(#Window_player)) 
    EndIf 
  EndIf 

  Repeat
    Event = WaitWindowEvent() 
    WindowID = EventWindow()
    If Event = #PB_Event_Menu
      Select EventMenu()
        Case #MENU_open_url 
          URL()
        Case #MENU_end 
          End
      EndSelect
    EndIf
  Until Event = #PB_Event_CloseWindow And WindowID = #Window_player
EndProcedure 

Open_Player()