Problem mit Resize (Darstellungsfehler)

Anfängerfragen zum Programmieren mit PureBasic.
Andy76
Beiträge: 11
Registriert: 07.02.2007 15:26

Problem mit Resize (Darstellungsfehler)

Beitrag 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
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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 
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag 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.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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!
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
nco2k
Beiträge: 892
Registriert: 08.09.2004 23:13

Beitrag 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
~|__/
..o.o.. <--- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world domination.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

ReDraw funzt bei mir auch
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Andy76
Beiträge: 11
Registriert: 07.02.2007 15:26

Beitrag 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
Antworten