Seite 1 von 1

ListIconGadget - Scrollbar Farben ändern

Verfasst: 05.12.2004 13:33
von Christian
Hi!

Ich versuche gerade verzweifelt mittels den "FlatSB_"-Befehlen aus der WinAPI die ScrollBarfarben meines ListIconGadgets zu ändern. Ich habe auch schon eine Palette erstellt, doch leider wollen sich die Farben nicht so recht ändern. Vielleicht kann mir ja einer vno euch auf die Sprünge helfen. Folgenden Ansatz haben ich gefunden:

Code: Alles auswählen

#WSB_PROP_PALETTE = $800

Dim Entry.PALETTEENTRY(255)

; -- Paletteninformationen
Ptr.LOGPALETTE

; palVersion muss immer $300 sein 
Ptr\palVersion = $300;

; palNumEntries gibt die Anzahl der Farben an 
Ptr\palNumEntries = 256;

; Farben einspeisen
For i = 0 To 255
Ptr\palPalEntry = @Entry(i)

 Entry(i)

 Entry(i)\peRed = i
 Entry(i)\peGreen = 0
 If i >= 10 : Entry(i)\peBlue = i - 10 : Else : Entry(i)\peBlue = 0 : EndIf

 Entry(i)\peFlags = 0
Next i 



; --- Window und ListIconGadget initialisieren
If OpenWindow(0, 0, 0, 500, 500, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "ListIconGadget Flat Scrollbar")
    If CreateGadgetList(WindowID(0))
        LHnd = ListIconGadget(0, 0, 0, 500, 500, "Column 1", 480)
         For a = 0 To 100
            AddGadgetItem(0, -1, "Entry "+Str(a))
         Next
    EndIf
    InitializeFlatSB_(LHnd)

     PHnd = CreatePalette_(Ptr) : Debug PHnd
     FlatSB_SetScrollProp_(LHnd, #WSB_PROP_PALETTE, PHnd, #TRUE)
    

Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Gruß
Christian

Verfasst: 07.12.2004 13:27
von Falko
Hab mal ein bisschen mit der API herumprobiert. Vielleicht Hilft dies dir weiter.
MFG Falko

Code: Alles auswählen

; --- Window und ListIconGadget initialisieren 
#WSB_PROP_HSTYLE = $200 
#WSB_PROP_VSTYLE = $100 
#FSB_FLAT_MODE = 2 
#WSB_PROP_HBKGCOLOR = $80 
#WSB_PROP_VBKGCOLOR = $40 
#FSB_ENCARTA_MODE = 1
#FSB_REGULAR_MODE = 0
#WSB_PROP_CYVSCROLL = $1
#WSB_PROP_CYVTHUMB = $20
#WSB_PROP_CXVSCROLL = $8
#WSB_PROP_CYHSCROLL = $4
#WSB_PROP_CXHSCROLL = $2
#WSB_PROP_CXHTHUMB = $10


If OpenWindow(0, 0, 0, 500, 500, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "ListIconGadget Flat Scrollbar") 
    If CreateGadgetList(WindowID(0)) 
        LHnd = ListIconGadget(0, 0, 0, 500, 500, "Column 1", 480) 

         For a = 0 To 100 
            AddGadgetItem(0, -1, "Entry "+Str(a)) 
         Next 
    EndIf 
    
   EnableScrollBar_(LHnd,#SB_BOTH,#ESB_DISABLE_BOTH); normale Scrollbar ausschalten 
   InitializeFlatSB_(LHnd) 
  
   FlatSB_SetScrollProp_(LHnd,#WSB_PROP_HSTYLE , #FSB_ENCARTA_MODE,#true);#FSB_FLAT_MODE; #FSB_REGULAR_MODE; #FSB_ENCARTA_MODE 
   FlatSB_SetScrollProp_(LHnd,#WSB_PROP_VSTYLE, #FSB_ENCARTA_MODE,#true);#FSB_FLAT_MODE; #FSB_REGULAR_MODE; #FSB_ENCARTA_MODE 
   FlatSB_SetScrollProp_(LHnd,#WSB_PROP_HBKGCOLOR, RGB(0,0,255), #true); 
   FlatSB_SetScrollProp_(LHnd,#WSB_PROP_VBKGCOLOR, RGB(100,255,0),#true); 
  FlatSB_SetScrollProp_(LHnd, #WSB_PROP_CXVSCROLL, GetSystemMetrics_(#SM_CXVSCROLL), #TRUE)
  FlatSB_SetScrollProp_(LHnd, #WSB_PROP_CXHSCROLL, GetSystemMetrics_(#SM_CXHSCROLL), #TRUE)
  FlatSB_SetScrollProp_(LHnd, #WSB_PROP_CYVSCROLL, GetSystemMetrics_(#SM_CYVSCROLL), #TRUE)
  FlatSB_SetScrollProp_(LHnd, #WSB_PROP_CYHSCROLL, GetSystemMetrics_(#SM_CYHSCROLL), #TRUE)
  FlatSB_SetScrollProp_(LHnd, #WSB_PROP_CXHTHUMB, GetSystemMetrics_(#SM_CXHTHUMB), #TRUE)
  FlatSB_SetScrollProp_(LHnd, #WSB_PROP_CYVTHUMB, GetSystemMetrics_(#SM_CYVTHUMB),#TRUE) 
  
  FlatSB_EnableScrollBar_(LHnd,#SB_BOTH ,#ESB_ENABLE_BOTH);FLATScrollbar ein-, oder ausschalten

;FlatInf.SCROLLINFO 

Repeat 
   FlatSB_SetScrollPos_(LHnd,#SB_VERT,GetScrollPos_(LHnd,#SB_VERT),#TRUE); Vertikal scrollen 
   FlatSB_SetScrollPos_(LHnd,#SB_HORZ,GetScrollPos_(LHnd,#SB_HORZ),#TRUE); Horizontal scrollen
Until WaitWindowEvent()=#PB_EventCloseWindow
EndIf
End 

Verfasst: 07.12.2004 14:40
von Andre
@Falko: ich weiß jetzt nicht wie es auf Deinem OS aussieht, aber unter WinXP läuft das so nicht.

Der Scrollbalken wird gerade mal in der Grundeinstellung neu eingefärbt (soweit ging's auch bei Christian schon), aber sobald man den Scrollbalken bewegt, hat man die normale WinXP-Farbgestaltung wieder und außerdem wird der Balken immer auf die Ausgangsstellung zurückgesetzt. :|

Verfasst: 07.12.2004 14:51
von Falko
Vielleicht liegt das ja an der XP-Skin-Unterstützung.
Die habe ich ausgeschaltet.

MfG Falko

Verfasst: 07.12.2004 14:57
von Andre
Falko hat geschrieben:Vielleicht liegt das ja an der XP-Skin-Unterstützung.
Die habe ich ausgeschaltet.
Nö, die habe ich auch ausgeschaltet. :wink:

Mit eingeschalteter Skin-Unterstützung läuft der Code nämlich ganz normal, jedoch dann natürlich auch ohne Einfärbungen.

Verfasst: 07.12.2004 15:11
von Falko
@Andre
Hast Recht, geht nicht so wie es sollte. Irgendwie schreibt die Listbox alles um und wenn die Maus über das SrollArea kommt wandelt sich die Farbe in grün um. Wahrscheinlich muss dann die Listbox mittels API neugeschrieben werden. Probiere noch einiges aus.
[Edit]
Source oben weiter angepasst.
Fehlt nur noch das Scrolling beim Bewegen des Balkens :mrgreen:

Gruss Falko