SetWindowCallback() flackert

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Delle
Beiträge: 1130
Registriert: 10.05.2005 22:48

SetWindowCallback() flackert

Beitrag von Delle »

Hallo,

der nachfolgende Code soll regelmäßig den Header eines ListIconGadgets neu einfärben.

Das funktioniert soweit, allerdings flackert es...

Wie kann man da Abhilfe schaffen?

Code: Alles auswählen

Enumeration
  #ListIcon_0
EndEnumeration

Global ListIcon_0

Procedure HeaderFarbe(WindowID, Message, wParam, lParam)
    Result = #PB_ProcessPureBasicEvents
   Select Message
      Case #WM_NOTIFY    
    
    For c=0 To 8
 PureCOLOR_SetColumnHeaderColor(#ListIcon_0, c, #PureCOLOR_SystemColor, RGB(249, 248, 158)) 
Next
    EndSelect
    
    ProcedureReturn Result
  EndProcedure

fenster = OpenWindow(0,0,0,545,400,"",#PB_Window_SystemMenu)

SetWindowCallback( @HeaderFarbe() )

lig = ListIconGadget(#ListIcon_0, 5, 95, 495, 205, " #", 30,#PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection)

Repeat 
EventID = WaitWindowEvent()
If EventID=#PB_Event_CloseWindow:End:EndIf
ForEver
PB 6.21 | Win 11
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: SetWindowCallback() flackert

Beitrag von Kiffi »

> Wie kann man da Abhilfe schaffen?

Ganz einfach: PureCOLOR_SetColumnHeaderColor() aus dem Callback
nehmen ;-)

Schau Dir mal das Beispiel PureCOLOR_TEST_6.pb an.

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
Delle
Beiträge: 1130
Registriert: 10.05.2005 22:48

Beitrag von Delle »

Problem gelöst!

ClearGadgetItemList(#Listicon_0) löscht nicht nur die Liste,
sondern auch die Farbangaben von PureCOLOR.

Demzufolge immer nach dem ClearGadgetItemList()
neu einfärben, ein extra Callback ist unnötig.
PB 6.21 | Win 11
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

> ein extra Callback ist unnötig.

öhm, habe ich etwas anderes behauptet? :?

> ClearGadgetItemList(#Listicon_0) löscht nicht nur die Liste,
> sondern auch die Farbangaben von PureCOLOR.

in Deinem Beispielcode (der übrigens ohne Modifikation nicht lauffähig ist)
steht nix von ClearGadgetItemList().

> Problem gelöst!

Fein! :-)

Grüße ... Kiffi
a²+b²=mc²
Antworten