Problem mit Popupmenus und mehren Windows

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
MJP
Beiträge: 72
Registriert: 14.10.2004 18:45
Wohnort: Nähe Frankfurt/Hessen
Kontaktdaten:

Problem mit Popupmenus und mehren Windows

Beitrag von MJP »

Moin... :mrgreen:
Ich habe ein Listicongadget mit Icons. Wenn ich auf eines dieser Icon klicke dann Öffne ich ein Popupmenu und mit diesem wiederum öffne ich noch ein Fenster. Alles schön und gut... nun kommt mein Problem wenn ich dieses Fenster wieder geschlossen hab geht des Popupmenu nimmer!! :? :? :?

Please Help... :praise:

Code: Alles auswählen

Procedure Window(menuid.s)
  If OpenWindow(1, 156, 190, 250, 160,  #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered | #PB_Window_WindowCentered , "TESTA - "+menuid.s )
    If CreateGadgetList(WindowID())
      EditorGadget(11, 0,0, 250, 160)
    EndIf
  EndIf

Repeat  
  Event = WaitWindowEvent()
  If Event = #PB_EventGadget   
   GadgetID = EventGadgetID()
    If GadgetID = 1
    EndIf      
  EndIf  
Until Event = #PB_EventCloseWindow
CloseWindow(1)  
EndProcedure  
  
     If CreatePopupMenu(0)      
      MenuItem(1,"Editor Öffnen")     
      MenuItem(2,"....")         
      MenuItem(3, "...")      
      MenuBar()      
      MenuItem(4, "..")     
      MenuItem(5, ".")      
    EndIf
  
  If OpenWindow(0, 267, 146, 600, 300,  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered | #PB_Window_WindowCentered , "Remote Helper")
    If CreateGadgetList(WindowID())
      ListIconGadget(22, 2, 2, 597, 297, "Infos - ", 100, #PB_ListIcon_GridLines | #PB_ListIcon_AlwaysShowSelection)      
      If LoadImage(0,"C:\Programme\PureBasic\Examples\Sources\Data\CdPlayer.ico") 
      For Ico=0 To 15
      ChangeListIconGadgetDisplay(22, 0)
      AddGadgetItem(22,-1,"Icon "+Str(ico),UseImage(0)) 
      Next 
      EndIf
    EndIf
  EndIf

Repeat

  Event = WaitWindowEvent()

  
  If Event = #PB_EventGadget
        
    GadgetID = EventGadgetID()
    
    If GadgetID = 22
        If EventType() = #PB_EventType_Focus 
          state = GetGadgetState(22)
          If state=-1              
          Else
          EndIf 
        ElseIf EventType() = #PB_EventType_LeftDoubleClick 
          state = GetGadgetState(22)
          If state=-1  
          Else
           DisplayPopupMenu(0,WindowID())   
          EndIf 
        ElseIf EventType() = #PB_EventType_RightDoubleClick 
          state = GetGadgetState(22)
           If state=-1  
           Else
            DisplayPopupMenu(0,WindowID())               
          EndIf 
        EndIf          
    EndIf
EndIf        

   MenuID =EventMenuID()
 If Event=#PB_Event_Menu 
   If MenuID = 1
   Window("Nr.1")
   ElseIf MenuID= 2
   Window("Nr.2")
   ElseIf MenuID= 3
   Window("Nr.3")
   ElseIf MenuID= 4
   Window("Nr.4")
   ElseIf MenuID= 5   
   Window("Nr.5")   
   EndIf 
 EndIf 

Until Event = #PB_EventCloseWindow
End
Thx 4 H€lp MJP
Alle Reschtsreib feler sind beabsichticht unn kosten nichs echtra ;-D
Visit ---|> http://www.Komani.de/
Benutzeravatar
Hroudtwolf
Beiträge: 1416
Registriert: 30.10.2004 23:33
Kontaktdaten:

Beitrag von Hroudtwolf »

Code: Alles auswählen

Procedure Window(menuid.s)
  If OpenWindow(1, 156, 190, 250, 160,  #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered | #PB_Window_WindowCentered , "TESTA - "+menuid.s )
    If CreateGadgetList(WindowID())
      EditorGadget(11, 0,0, 250, 160)
    EndIf
  EndIf

Repeat 
  Event = WaitWindowEvent()
  If Event = #PB_EventGadget   
   GadgetID = EventGadgetID()
    If GadgetID = 1
    EndIf     
  EndIf 
Until Event = #PB_EventCloseWindow
CloseWindow(1) 
EndProcedure 
 
     If CreatePopupMenu(0)     
      MenuItem(1,"Editor Öffnen")     
      MenuItem(2,"....")         
      MenuItem(3, "...")     
      MenuBar()     
      MenuItem(4, "..")     
      MenuItem(5, ".")     
    EndIf
 
  If OpenWindow(0, 267, 146, 600, 300,  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered | #PB_Window_WindowCentered , "Remote Helper")
    If CreateGadgetList(WindowID())
      ListIconGadget(22, 2, 2, 597, 297, "Infos - ", 100, #PB_ListIcon_GridLines | #PB_ListIcon_AlwaysShowSelection)     
      If LoadImage(0,"C:\Programme\PureBasic\Examples\Sources\Data\CdPlayer.ico")
      For Ico=0 To 15
      ChangeListIconGadgetDisplay(22, 0)
      AddGadgetItem(22,-1,"Icon "+Str(ico),UseImage(0))
      Next
      EndIf
    EndIf
  EndIf

Repeat

  Event = WaitWindowEvent()

 
  If Event = #PB_EventGadget
       
    GadgetID = EventGadgetID()
   
    If GadgetID = 22
        If EventType() = #PB_EventType_Focus
          state = GetGadgetState(22)
          If state=-1             
          Else
          EndIf
        ElseIf EventType() = #PB_EventType_LeftDoubleClick
          state = GetGadgetState(22)
          If state=-1 
          Else
           DisplayPopupMenu(0,WindowID())   
          EndIf
        ElseIf EventType() = #PB_EventType_RightDoubleClick
          state = GetGadgetState(22)
           If state=-1 
           Else
;---------------------------------------------------
if IsIconic_(WindowID(0))
            DisplayPopupMenu(0,GetDesktopWindow_())
else
  DisplayPopupMenu(0,WindowID())
Endif 
 ;------------------------------------------------------             
          EndIf
        EndIf         
    EndIf
EndIf       

   MenuID =EventMenuID()
 If Event=#PB_Event_Menu
   If MenuID = 1
   Window("Nr.1")
   ElseIf MenuID= 2
   Window("Nr.2")
   ElseIf MenuID= 3
   Window("Nr.3")
   ElseIf MenuID= 4
   Window("Nr.4")
   ElseIf MenuID= 5   
   Window("Nr.5")   
   EndIf
 EndIf

Until Event = #PB_EventCloseWindow
End 

Vieleicht gehts ja so ungefähr !?
Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Beitrag von freedimension »

Als erstes würde ich dir raten, statt der ganzen Staffel an If ElseIf usw. mit Select Case zu arbeiten. Du wirst sehen, das sieht dann gleich schon um einiges freundlicher und übersichtlicher aus :)

Das zweite, welches dein Problem lösen sollte findest du dann hier

Code: Alles auswählen

...
Repeat 
  
  Event = WaitWindowEvent() 
  
  
  If Event = #PB_EventGadget 
    UseWindow(EventWindowID())
    GadgetID = EventGadgetID() 
...
Du hast ganz einfach vergessen das richtige Fenster wieder auszuwählen.
Alternativ dazu kannst du auch

Code: Alles auswählen

...
        If state=-1  
        Else 
          DisplayPopupMenu(0, UseWindow(0))                
        EndIf 
...
schreiben
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
Benutzeravatar
MJP
Beiträge: 72
Registriert: 14.10.2004 18:45
Wohnort: Nähe Frankfurt/Hessen
Kontaktdaten:

Beitrag von MJP »

:oops:uupss hätte ich selber darauf kommen müssen XD *handgegenkopfklatscht*

Thx MJP
Alle Reschtsreib feler sind beabsichticht unn kosten nichs echtra ;-D
Visit ---|> http://www.Komani.de/
Antworten