[Bug] SetGadgetColor

Fragen und Bugreports zur PureBasic 4.0-Beta.
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Beitrag von Konne »

Das ist aber nicht gut wenn man gadgets nicht einfaerben kann wenn man einen falschen Skin hat. Nunja auf meinem PC gehts nicht. Und er wurde gestern neu installiert.
Benutzeravatar
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

Beitrag von ts-soft »

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 :freak: , hat Billy gut gemacht :allright:

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.
Bild
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 »

ts-soft hat geschrieben:Ein Hinweis in der Hilfe fehlt!
Meinst Du jetzt ein Hinweis bei SetGadgetColor() ala
(Hinweis: Auf Windows XP mit eingeschalteten Skins hat diese Färbung keinen Effekt.)
:?:
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Benutzeravatar
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

Beitrag von ts-soft »

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.
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.
Bild
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 »

ts-soft hat geschrieben:Also: Mit aktiviertem XP-Style werden bei versch. Gadgets die Color-Einstellungen ignoriert bzw. vom Style überschrieben.
Done. :)
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Benutzeravatar
jear
Beiträge: 288
Registriert: 17.10.2004 01:59
Wohnort: Ammerland

Beitrag von jear »

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!

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!
Benutzeravatar
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:

Beitrag von HeX0R »

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.
Benutzeravatar
jear
Beiträge: 288
Registriert: 17.10.2004 01:59
Wohnort: Ammerland

Beitrag von jear »

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!
Benutzeravatar
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

Beitrag von ts-soft »

>> In meinem Beispiel werden jedoch ganze Spalten eingefärbt. Das könnte schon erhalten bleiben.
Wenn aber keine Spalte vorhanden ist :freak:
Aber es wäre mit Sicherheit schöner, wenn nach erneutem Hinzufügen, die
Einfärbung autom. wieder aktiviert wäre :wink:
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.
Bild
Benutzeravatar
jear
Beiträge: 288
Registriert: 17.10.2004 01:59
Wohnort: Ammerland

Beitrag von jear »

Wenn aber keine Spalte vorhanden ist
@ts-soft
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!
Gesperrt