Seite 1 von 1

Grafikfehler bei ResizeGadget()

Verfasst: 25.01.2005 00:37
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

Verfasst: 25.01.2005 01:53
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.

Verfasst: 25.01.2005 13:13
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.

Verfasst: 25.01.2005 13:57
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

Verfasst: 25.01.2005 17:45
von dllfreak2001
Genial, funtzt perfekt!