[Bug] SetGadgetColor
- 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
XP-Theme beinhaltet auch Farben. Wäre noch schöner wenn jeder
Programmierer gegen meine Wünsch andere Farben wählt.
Da ist vollkommen Korrekt so. Du kannst ja im Programm den Skin-
Support deaktivieren.
Gibt man viel Geld für StyleXP oder ähnlich aus und dann wollen die einem
einfach andere Farben unterjubeln
, hat Billy gut gemacht 
Ein Hinweis in der Hilfe fehlt!
Nachtrag:
Ausserdem ist ein PanelGadget normallerweise Grau. Mit XP-Style ist es
Weiß, so das man Weiße Schrift nicht sehen würde. Das einfachste ist es also
das Windows bei XP-Style diese Attribute (da meist sowieso vom User
unerwünscht) ignoriert.
Programmierer gegen meine Wünsch andere Farben wählt.
Da ist vollkommen Korrekt so. Du kannst ja im Programm den Skin-
Support deaktivieren.
Gibt man viel Geld für StyleXP oder ähnlich aus und dann wollen die einem
einfach andere Farben unterjubeln


Ein Hinweis in der Hilfe fehlt!
Nachtrag:
Ausserdem ist ein PanelGadget normallerweise Grau. Mit XP-Style ist es
Weiß, so das man Weiße Schrift nicht sehen würde. Das einfachste ist es also
das Windows bei XP-Style diese Attribute (da meist sowieso vom User
unerwünscht) ignoriert.
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.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

- 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
Genau, es sind ja auch nicht alle Farben sichtbar unter den verschiedenen
Skins, so das es schon Sinn macht, wenn diese nicht verändert werden.
Also: Mit aktiviertem XP-Style werden bei versch. Gadgets die
Color-Einstellungen ignoriert bzw. vom Style überschrieben.
Skins, so das es schon Sinn macht, wenn diese nicht verändert werden.
Also: Mit aktiviertem XP-Style werden bei versch. Gadgets die
Color-Einstellungen ignoriert bzw. vom Style überschrieben.
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.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Muss die alte Geschichte leider aufwärmen:
Ob XP-Style oder nicht :
Ein ClearGadgetItemList() löscht die Einfärbung eines ListIconGadgets (nur damit habe ich es bisher probiert).
Warum muss das so sein? Bug oder unausweichlich?
Man muss das Gadget neu füllen und danach die Einfärbung wiederholen!
Das sollte man in der Hilfe erwähnen!
Ob XP-Style oder nicht :
Ein ClearGadgetItemList() löscht die Einfärbung eines ListIconGadgets (nur damit habe ich es bisher probiert).
Warum muss das so sein? Bug oder unausweichlich?
Man muss das Gadget neu füllen und danach die Einfärbung wiederholen!
Das sollte man in der Hilfe erwähnen!
Code: Alles auswählen
; PB4 - Test SetGadgetItemColor
If OpenWindow(0, 0, 0, 610, 320, "SetGadgetItemColor", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
TextGadget(0, 10, 10, 300, 18, "")
ListIconGadget(1, 10, 30, 590, 280, "aaa", 50)
AddGadgetColumn(1, 1, "xxxx", 60)
AddGadgetColumn(1, 2, "yyyyyyyyy", 110)
AddGadgetColumn(1, 3, "zzzz", 65)
AddGadgetColumn(1, 4, "hhhhhhhh", 150)
AddGadgetColumn(1, 5, "ccccccc", 52)
AddGadgetColumn(1, 6, "bbbbbbb", 60)
For ix = 1 To 10
AddGadgetItem(1, -1, "Text 1" + #lf$ + "Text 2" + #lf$ + "Text 3" + #lf$ + "Text 4")
Next
For ix = 0 To 6 Step 2
SetGadgetItemColor(1, -1, #PB_Gadget_BackColor, $E3FDFB, ix)
SetGadgetItemColor(1, -1, #PB_Gadget_BackColor, $CFEDFC, ix + 1)
Next
SetGadgetText(0, "eingefärbt") : UpdateWindow_(WindowID(0)) : Delay(3000)
ClearGadgetItemList(1)
SetGadgetText(0, "nach ClearGadgetItemList") : UpdateWindow_(WindowID(0)) : Delay(3000)
For ix = 0 To 20
AddGadgetItem(1, -1, "Text 1" + #lf$ + "Text 2" + #lf$ + "Text 3" + #lf$ + "Text 4")
Next
SetGadgetText(0, "Liste neu gefüllt") : UpdateWindow_(WindowID(0)) : Delay(3000)
For ix = 0 To 6 Step 2
SetGadgetItemColor(1, -1, #PB_Gadget_BackColor, $E3FDFB, ix)
SetGadgetItemColor(1, -1, #PB_Gadget_BackColor, $CFEDFC, ix + 1)
Next
SetGadgetText(0, "Liste neu eingefärbt") : UpdateWindow_(WindowID(0))
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Man ist nie zu alt zum lernen, auch wenn man dabei manchmal alt aussieht!
- HeX0R
- Beiträge: 3042
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3 - Kontaktdaten:
Sowas braucht nicht in der Hilfe erwähnt werden, weil es völlig logisch ist.
Schliesslich redest du vom Einfärben einzelner Einträge.
Wenn dann die Einträge gelöscht werden, wäre es Blödsinn die einzelnen Farbinformationen weiterhin gespeichert zu lassen.
Anders verhält es sich, wenn du das ganze Gadget per SetGadgetColor() einfärbst, dann bleibt die Farbe auch nach dem Löschen bestehen.
Schliesslich redest du vom Einfärben einzelner Einträge.
Wenn dann die Einträge gelöscht werden, wäre es Blödsinn die einzelnen Farbinformationen weiterhin gespeichert zu lassen.
Anders verhält es sich, wenn du das ganze Gadget per SetGadgetColor() einfärbst, dann bleibt die Farbe auch nach dem Löschen bestehen.
Sowas braucht nicht in der Hilfe erwähnt werden, weil es völlig logisch ist.
@HeXOR
Für Dich vielleicht, aber nicht für die Leute, die in der Hilfe nachlesen.
Dass die Einfärbung einzelner Felder gelöscht wird, das ist logisch.
In meinem Beispiel werden jedoch ganze Spalten eingefärbt. Das könnte schon erhalten bleiben.
Außerden lassen sich die Spalten erst wieder einfärben, wenn die Liste neu befüllt ist.
Was ist daran logisch?
Man ist nie zu alt zum lernen, auch wenn man dabei manchmal alt aussieht!
- 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
>> In meinem Beispiel werden jedoch ganze Spalten eingefärbt. Das könnte schon erhalten bleiben.
Wenn aber keine Spalte vorhanden ist
Aber es wäre mit Sicherheit schöner, wenn nach erneutem Hinzufügen, die
Einfärbung autom. wieder aktiviert wäre
Wenn aber keine Spalte vorhanden ist

Aber es wäre mit Sicherheit schöner, wenn nach erneutem Hinzufügen, die
Einfärbung autom. wieder aktiviert wäre

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.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

@ts-softWenn aber keine Spalte vorhanden ist
Die Spalten werden ja durch ClearGadgetItemList() nicht zerstört. Sie enthalten nur keine Werte mehr!
Mit den Zeilen sieht das schon anders aus.
Unter PB3.94 habe ich die Befehle aus der Lib MoreListIconGadget von Denis genutzt. Da wurden die Spalten bei der Anlage der GUI eingefärbt und behielten die Färbung trotz ClearGadgetItemList(). Jetzt mit den nativen Funktionen in PB4 leider nicht mehr.
Um anderen PBlern die Lage zu verdeutlichen wäre IMHO ein Hinweis in der Hilfe angebracht:
Das Einfärben von Einträgen eines ListViewGadgets bzw. eines ListIconGadgets bedingt das Vorhandensein von Inhalten in der Liste. Dies gilt auch für das Einfärben von Spalten.
Man ist nie zu alt zum lernen, auch wenn man dabei manchmal alt aussieht!