Seite 1 von 1

openwindow

Verfasst: 19.12.2010 16:48
von delikanli_19_82
hallo leutz,

1) funktioniert dieset StickyWindow irgendwie nicht so wie er soll.

2) das mit dem Schließen der fenster klappt nicht so richtig. ich habe das gefühl, das beide fenster dieselben Ereignisse gegenseitig oder so abfragen.

Code: Alles auswählen


  Global other_wins.l = 1;
  
  Global id_search.l = 0;
  
  Procedure FrmSearch( x.l, y.l, w.l, h.l )
    
    mx.l = x.l + ( ( w.l - 300 ) / 2 )
    my.l = y.l + ( ( h.l - 160 ) / 2 )
    
    id_search.l = other_wins
    other_wins = other_wins + 1
    
    If OpenWindow( id_search, mx, my, 300, 160, ft_search.s, #PB_Window_MinimizeGadget )
      
      Repeat
        
      Until WaitWindowEvent() = #PB_Event_CloseWindow 
      
    EndIf
    
    StickyWindow(id_search, 1)
    
  EndProcedure

OpenWindow(0,0,0,600,600,"fenster", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MaximizeGadget | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget)

Repeat

Event = WaitWindowEvent()

; ...

Until Event = #PB_Event_CloseWindow

End


Re: openwindow

Verfasst: 19.12.2010 16:56
von NicTheQuick
Was hat das Problem mit dem Code zu tun?

Zu 2. rate ich mal blind 'EventWindow()'.

Re: openwindow

Verfasst: 19.12.2010 17:02
von delikanli_19_82
wenn der FrmSearch geladen wird, so ist gerieht er in den hintergrund, sobald ich auf den hauptfenster klicke.

klicke ich am hauptfenster auf den "Schließen-Button" alios rote X, so geriet der Search-Fenster in dern vordergrund.

der soll aber logischerweise sofort vorne sein.

das mit dem EventWindow() konnte ich jetzt nicht nachvollziehen.

Re: openwindow

Verfasst: 19.12.2010 17:05
von delikanli_19_82
so geht es jetzt mit dem StickyWindow:

Code: Alles auswählen

  Procedure FrmSearch( x.l, y.l, w.l, h.l )
    
    mx.l = x.l + ( ( w.l - 300 ) / 2 )
    my.l = y.l + ( ( h.l - 160 ) / 2 )
    
    id_search.l = other_wins
    other_wins = other_wins + 1
    
    If OpenWindow( id_search, mx, my, 300, 160, ft_search.s, #PB_Window_MinimizeGadget )
      
      
    EndIf
    
    StickyWindow(id_search, 1)
    
  EndProcedure
aber wenn ich den Search-Fenster schließe, geht das ganze Programm flirten. wieso?

Re: openwindow

Verfasst: 19.12.2010 17:07
von Kiffi
@delikanli_19_82: StickyWindow() nach OpenWindow() und
vor die Eventschleife platzieren. Dann klappt's auch.

zu 2.: siehe NicTheQuick. Wenn ein PB_Event_CloseWindow
auftritt, solltest Du mit EventWindow() abfragen, welches
Fenster das Ereignis gemeldet hat und entsprechend reagieren.

Grüße ... Kiffi

Re: openwindow

Verfasst: 19.12.2010 17:09
von delikanli_19_82
achso... ok, mach ich.

vielen dank euch beiden.

Re: openwindow

Verfasst: 19.12.2010 17:11
von Bisonte
Du solltest beim #PB_Event_CloseWindow auch abfragen, welches Fenster dieses Event generiert hat, wenn Du mehrere Fenster geöffnet hast.

z.B. :

Code: Alles auswählen

If Event = #PB_Event_CloseWindow And EventWindow() = id_search
  CloseWindow(id_search)
EndIf
Edit: Ups .... da hab ich zu langsam getippt :lol: