Grafikfehler bei ResizeGadget()

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
dllfreak2001
Beiträge: 2925
Registriert: 07.09.2004 23:44
Wohnort: Bayern

Grafikfehler bei ResizeGadget()

Beitrag von dllfreak2001 »

Tach auch,
also ich Progge grad an einem Fenster rum. Dieses kann man
manuell vergrößern. Nur wenn die Gadgets Resized werden
passieren bei einigen von ihnen seltsame dinge.
Der Text wird falsch dargestellt ...

Code: Alles auswählen

;-Hauptfenster erstellen

OpenWindow(0,0,0,600,600,#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget |#PB_Window_SizeGadget |#PB_Window_ScreenCentered,"DLL-Freak´s")

CreateGadgetList(WindowID(0))

CreateMenu(0,WindowID(0))
 MenuTitle("Projekt")
 MenuItem(1, "Neu"+Chr(9)+"Strg+N") 
 MenuBar()
 MenuItem(2, "Öffnen..."+Chr(9)+"Strg+O") 
 MenuItem(3, "Speichern..."+Chr(9)+"Strg+S")   
 MenuBar()
 MenuItem(4, "Beenden")
 MenuTitle("Einstellungen")
 MenuItem(5, "Quelle und Ziel")
 MenuItem(6, "Identifizierung")
 MenuBar()
 MenuItem(7, "Doppelte")
 MenuTitle("Datenbank")
 MenuItem(8, "Laden")
 MenuBar() 
 MenuItem(9, "Bearbeiten")


CreateToolBar(0,WindowID(0))
 ToolBarStandardButton(1, #PB_ToolBarIcon_New) 
 ToolBarStandardButton(2, #PB_ToolBarIcon_Open) 
 ToolBarStandardButton(3, #PB_ToolBarIcon_Save) 
 ToolBarSeparator()

 
CreateStatusBar(0, WindowID(0)) 
 AddStatusBarField(150)
 StatusBarText(0, 0, "Gesamt: 0")
 AddStatusBarField(150)
 StatusBarText(0, 1, "Größe: 0 MB")
 AddStatusBarField(1200)
 StatusBarText(0, 2, "Registriert für Thomas Siegel / Rubensweg 12A / 38228 Salzgitter",#PB_StatusBar_BorderLess)


ListIconGadget(1,5,30,500,395,"Datei",150,#PB_ListIcon_HeaderDragDrop|#PB_ListIcon_AlwaysShowSelection|#PB_ListIcon_FullRowSelect)
  AddGadgetColumn(1, 1, "Sortierung", 100) 
  AddGadgetColumn(1, 2, "Größe", 50)
  AddGadgetColumn(1, 3, "Quellpfad", 300)
  AddGadgetColumn(1, 4, "Zielpfad", 300)

Frame3DGadget(2,5,425,230,90,"Preview")
 TextGadget(3,10,440,220,15 ,"Interpret: Keine Information")
 TextGadget(4,10,455,220,15,"Titel: Keine Information")
 TextGadget(5,10,470,220,15,"Länge: 0 Sekunden")
 ButtonGadget(6,10,490,70,20,"Abspielen")
 ButtonGadget(7,85,490,70,20,"Stop")
 ButtonGadget(8,160,490,70,20,"Extern")
 
Frame3DGadget(9,5,515,590,40,"Fortschritt")
 ProgressBarGadget(10, 10, 530, 580, 20, 0, 100 ,#PB_ProgressBar_Smooth ) 

Frame3DGadget(11,240,425,260,90,"Sortierung")
 TextGadget(12,245,440,100,15,"Methode:")
 ComboBoxGadget(13,245,455,100,20)
  AddGadgetItem(13,0,"Löschen")
  AddGadgetItem(13,0,"Interpret")
  AddGadgetItem(13,0,"Unbekannt")
  AddGadgetItem(13,0,"Belassen")
  SetGadgetState(13,0)
 TextGadget(14,350,440,100,15,"Interpret:")
 ComboBoxGadget(15,350,455,145,20)
 
 ButtonGadget(16,350,490,70,20,"Ändern")
 ButtonGadget(17,425,490,70,20,"Sortieren")
 
 ButtonGadget(18,505,430,90,85,"Start")
 
    
Global winevent.l ;Windowevent abfragen!




Repeat

winevent = WaitWindowEvent()

If winevent = #PB_Event_sizeWindow
 ResizeGadget(1,5,30,WindowWidth()-10, WindowHeight()-205)
 ResizeGadget(2,5,WindowHeight()-175,230, 90)
 ResizeGadget(3,10,WindowHeight()-160,220, 15)
 ResizeGadget(4,10,WindowHeight()-145,220, 15)
 ResizeGadget(5,10,WindowHeight()-130,220, 15)
 ResizeGadget(6,10,WindowHeight()-110,70, 20)
 ResizeGadget(7,85,WindowHeight()-110,70, 20)
 ResizeGadget(8,160,WindowHeight()-110,70, 20)
 ResizeGadget(9,5,WindowHeight()-85,WindowWidth()-10, 40)
 ResizeGadget(10,10,WindowHeight()-70,WindowWidth()-20, 20)
 ResizeGadget(11,240,WindowHeight()-175,260, 90)
 ResizeGadget(12,245,WindowHeight()-160,100, 15)
 ResizeGadget(13,245,WindowHeight()-145,100, 20)
 ResizeGadget(14,350,WindowHeight()-160,100, 15)
 ResizeGadget(15,350,WindowHeight()-145,145, 20)
 ResizeGadget(16,350,WindowHeight()-110,70, 20)
 ResizeGadget(17,425,WindowHeight()-110,70, 20)
 ResizeGadget(18,505,WindowHeight()-170,WindowWidth()-515, 85)
EndIf

Until winevent = #PB_Event_CloseWindow
CloseWindow(0)
End
Das sieht dann irgendwie ***** aus.
THX im voraus
I´a dllfreak2001
Benutzeravatar
Donald
Beiträge: 307
Registriert: 03.01.2005 02:21
Wohnort: Marl

Beitrag von Donald »

Hi dllfreak2001, füge mal folgendes zwischen deinem letzten
ResizeGadget und EndIf ein

For i=1 To 18
HideGadget(i,1)
HideGadget(i,0)
Next i

ist mit Sicherheit nicht die eleganteste Lösung, aber Sie Funktioniert.
DONALD :D www.PureBasic-Donald.de gibt es im Moment nicht mehr
PureBasic - jaPBe - PureVisonXP - TailBite
Benutzeravatar
dllfreak2001
Beiträge: 2925
Registriert: 07.09.2004 23:44
Wohnort: Bayern

Beitrag von dllfreak2001 »

THX so einfach kann das sein zwar flackert es jetzt beim resize aber es werden jetzt alle gadgets dannach korrekt angezeigt.
Ich denke Fred sollte sich diesem Fehler trotzdem mal annehmen.
I´a dllfreak2001
Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Beitrag von freedimension »

Hab es mir mal angeschaut und herausgefunden, dass es definitiv die Frame3D-Gadgets sind welche nicht richtig neugezeichnet werden.

Hab den Code zum Ausprobieren etwas vereinfacht:

Code: Alles auswählen

;-Hauptfenster erstellen 

OpenWindow(0,0,0,600,600,#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget |#PB_Window_SizeGadget |#PB_Window_ScreenCentered,"DLL-Freak´s") 

CreateGadgetList(WindowID(0))

Frame3DGadget(11,240,425,260,90,"Sortierung")
TextGadget(    12,245,440,100,15,"Methode:")
; ComboBoxGadget(13,245,456,100,20)
; AddGadgetItem(13,0,"Löschen")
; SetGadgetState(13,0)

  
    
Global winevent.l ;Windowevent abfragen!

Repeat
  
  winevent = WaitWindowEvent()
  
  If winevent = #PB_Event_SizeWindow
    wh = WindowHeight()
    ResizeGadget(11,-1,wh-175,-1, -1)
    ResizeGadget(12,-1,wh-160,-1, -1)
    
    ; ; Testcode 1
    ;ResizeGadget(13,-1,wh-145,-1, -1)
    ; r.RECT
    ; r\top = wh-175
    ; r\bottom = wh-85
    ; r\left = 240
    ; r\right = 500
    ; InvalidateRect_(WindowID(), @r, #True)
    
    ; ; Testcode 2
    ; HideGadget(11, 1)
    ; HideGadget(11, 0)
  EndIf
  
Until winevent = #PB_Event_CloseWindow
CloseWindow(0)
End
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
Benutzeravatar
dllfreak2001
Beiträge: 2925
Registriert: 07.09.2004 23:44
Wohnort: Bayern

Beitrag von dllfreak2001 »

Genial, funtzt perfekt!
I´a dllfreak2001
Antworten