ListIconGadget - Scrollbar Farben ändern

Für allgemeine Fragen zur Programmierung mit PureBasic.
Christian
Beiträge: 73
Registriert: 31.08.2004 16:02

ListIconGadget - Scrollbar Farben ändern

Beitrag 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
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag 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 
Zuletzt geändert von Falko am 08.12.2004 16:31, insgesamt 4-mal geändert.
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
Andre
PureBasic Team
Beiträge: 1765
Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:

Beitrag 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. :|
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

Vielleicht liegt das ja an der XP-Skin-Unterstützung.
Die habe ich ausgeschaltet.

MfG Falko
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
Andre
PureBasic Team
Beiträge: 1765
Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:

Beitrag 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.
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag 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
Bild
Win11 Pro 64-Bit, PB_6.11b1
Antworten