Seite 1 von 1

Problem mit Resize (Darstellungsfehler)

Verfasst: 24.02.2007 19:39
von Andy76
Hi

Wenn ich mein Fenster nur horizontal vergrößere,
(sehr schnelles auf und zuziehen mit der Maus) dann
wird Gaged 4 nicht richtig angezeigt. Es entstehen vertikale blaue Balken.
Ich hab aber überhaupt keinen Plan wo der Fehler im Code sein kann.

Bitte hleft mir.
Andy

Bild


Code: Alles auswählen

Winflag.l = #PB_Window_SystemMenu | #PB_Window_ScreenCentered  |  #PB_Window_SizeGadget  | #PB_Window_MinimizeGadget  |  #PB_Window_MaximizeGadget

If OpenWindow(0, #PB_Ignore, #PB_Ignore, 800, 350, "", Winflag )
    
  If CreateGadgetList(WindowID(0))
    ListIconGadget(0, 0, 0, 0, 0, "Bezeichnung 1", 100, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection | #PB_ListIcon_HeaderDragDrop | #PB_ListIcon_GridLines )  

    AddGadgetColumn(0, 1, "Bezeichnung 2", 100)
    AddGadgetColumn(0, 2, "Bezeichnung 3", 100)
    AddGadgetColumn(0, 3, "Bezeichnung 4", 100)
    AddGadgetColumn(0, 4, "Bezeichnung 5", 100)
    AddGadgetColumn(0, 5, "Bezeichnung 6", 100)
    

   ListIconGadget(1, 0, 0, 110, 0, "Gaget3", 91, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)  
   ListIconGadget(2, 0, 0, 110, 0, "Gaget4", 91, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)    
 EndIf 
    


 Repeat
      
 WindowEventID = WaitWindowEvent()


    If WindowEventID =  #PB_Event_CloseWindow
           Break
    EndIf
       
    If WindowEventID = #PB_Event_SizeWindow
            ResizeGadget(0, 5, 5, WindowWidth(0)-260, WindowHeight(0) - 10)
            ResizeGadget(1, WindowWidth(0)-245, 5, #PB_Ignore, WindowHeight(0) - 10)
            ResizeGadget(2, WindowWidth(0)-125, 5, #PB_Ignore, WindowHeight(0) - 10)
    EndIf

 ForEver
 
EndIf

Verfasst: 24.02.2007 20:01
von ts-soft
Da ist ein XP Problem. Wenn Style aktiv und in der Systemsteuerung die
Anzeige während vergrössern/verkleinern aktiv ist, passiert sowas :wink:

Simple Lösung:

Code: Alles auswählen

 Repeat
     
 WindowEventID = WaitWindowEvent()


    If WindowEventID =  #PB_Event_CloseWindow
           Break
    EndIf
       
    If WindowEventID = #PB_Event_SizeWindow
            ResizeGadget(0, 5, 5, WindowWidth(0)-260, WindowHeight(0) - 10)
            ResizeGadget(1, WindowWidth(0)-245, 5, #PB_Ignore, WindowHeight(0) - 10)
            ResizeGadget(2, WindowWidth(0)-125, 5, #PB_Ignore, WindowHeight(0) - 10)
            InvalidateRect_(GadgetID(2), 0, 0)
    EndIf

 ForEver
 
EndIf 

Verfasst: 24.02.2007 21:02
von edel
Unter XP Prof und Vista reicht ein zusaetzliches #ws_clipchildren bei den Fenster-Flags.

Bei ts-soft hat es aber auch unter XP nicht geklappt.

Verfasst: 24.02.2007 21:08
von ts-soft
edel hat geschrieben: Bei ts-soft hat es aber auch unter XP nicht geklappt.
XP Prof SP2!

PS: Beim Scrollen könnte dasselbe Problem auftauchen!

Verfasst: 24.02.2007 21:11
von nco2k
gehts so?

Code: Alles auswählen

Winflag.l = #PB_Window_SystemMenu | #PB_Window_ScreenCentered  |  #PB_Window_SizeGadget  | #PB_Window_MinimizeGadget  |  #PB_Window_MaximizeGadget 

If OpenWindow(0, #PB_Ignore, #PB_Ignore, 800, 350, "", Winflag ) 
  SmartWindowRefresh(0, #True) 
  If CreateGadgetList(WindowID(0)) 
    ListIconGadget(0, 0, 0, 0, 0, "Bezeichnung 1", 100, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection | #PB_ListIcon_HeaderDragDrop | #PB_ListIcon_GridLines )  

    AddGadgetColumn(0, 1, "Bezeichnung 2", 100) 
    AddGadgetColumn(0, 2, "Bezeichnung 3", 100) 
    AddGadgetColumn(0, 3, "Bezeichnung 4", 100) 
    AddGadgetColumn(0, 4, "Bezeichnung 5", 100) 
    AddGadgetColumn(0, 5, "Bezeichnung 6", 100) 
    

   ListIconGadget(1, 0, 0, 110, 0, "Gaget3", 91, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)  
   ListIconGadget(2, 0, 0, 110, 0, "Gaget4", 91, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)    
 EndIf 
    


 Repeat 
      
 WindowEventID = WaitWindowEvent() 


    If WindowEventID =  #PB_Event_CloseWindow 
           Break 
    EndIf 
        
    If WindowEventID = #PB_Event_SizeWindow 
            ResizeGadget(0, 5, 5, WindowWidth(0)-260, WindowHeight(0) - 10) 
            ResizeGadget(1, WindowWidth(0)-245, 5, #PB_Ignore, WindowHeight(0) - 10) 
            ResizeGadget(2, WindowWidth(0)-125, 5, #PB_Ignore, WindowHeight(0) - 10) 
            RedrawWindow_(WindowID(0), 0, 0, #RDW_UPDATENOW) 
    EndIf 

 ForEver 
  
EndIf 
c ya,
nco2k

Verfasst: 24.02.2007 21:19
von ts-soft
ReDraw funzt bei mir auch

Verfasst: 24.02.2007 23:10
von Andy76
Hi

Danke für die Hilfe

Code: Alles auswählen

InvalidateRect_(GadgetID(2), 0, 0)
löst das Problem fast zu 100%,
manchmal hab ich vereinzelnt aber immer noch einen Balken.

Code: Alles auswählen

RedrawWindow_(WindowID(0), 0, 0, #RDW_UPDATENOW) 
verbessert das Problem bei mir gar nicht.

Gruß
Andy