pat a écrit :J'ai fait une petite recherche dans la SDK Documentation sur les API et j'ai consulté dans List Box (cela doit être cela pour les ListIconGadget) et je n'ai trouvé aucune fonction pour trier les listes, c'est pourquoi Fred, à mon avis, ne peux pas implémenter ça dans PB.
Pour info,
sous Windows, un ListIconGadget est un contrôle de la classe "SysListView32".
Le tri des données peut être réalisé par le message
#LVM_SORTITEMS et un callback.
Il y a plusieurs exemples sur le forum officiel.
anissa a écrit :Est il possible de choisir une police et une couleur pour une cellule bien déterminée dans une ListIconGagdet?
Oui.
1. Avec PureCOLOR_SetCellColorCallback()

Code : Tout sélectionner
FontID = LoadFont(0, "Courier New", 12, #PB_Font_Bold)
;
Procedure MyCellColorCallback(GadgetNumber.l, CellRow.l, CellColumn.l, *TextColor.Long, *BackColor.Long, *FontID.Long)
Shared FontID
If GadgetNumber = 1
CellText.s = GetGadgetItemText(GadgetNumber, CellRow, CellColumn)
Debug Str(CellRow) + ":" + Str(CellColumn) + ">" + CellText
Select CellText
Case "Red"
*TextColor\l = #Red
Debug "-> Red"
Case "Blue"
*BackColor\l = #Blue
*TextColor\l = #White
Debug "-> Blue"
Case "Green"
*TextColor\l = #Green
Debug "-> Green"
Default
*FontID\l = FontID
Debug "-> Font"
EndSelect
EndIf
EndProcedure
;
OpenWindow(0, 100, 300, 400, 200, "PureCOLOR test : cell callback demo", #PB_Window_SystemMenu)
ListIconGadget(1, 1, 1, 300, 190, "0", 100, #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect)
SetGadgetFont(1, FontID)
;
AddGadgetColumn(1, 1, "1", 100)
AddGadgetColumn(1, 2, "2", 100)
AddGadgetItem(1, -1, "0:0" + Chr(10) + "0:1" + Chr(10) + "Red")
AddGadgetItem(1, -1, "1:0" + Chr(10) + "1:1" + Chr(10) + "1:2")
AddGadgetItem(1, -1, "Blue" + Chr(10) + "Green" + Chr(10) + "2:2")
AddGadgetItem(1, -1, "3:0" + Chr(10) + "Red" + Chr(10) + "3:2")
AddGadgetItem(1, -1, "Red" + Chr(10) + "4:1" + Chr(10) + "Red")
AddGadgetItem(1, -1, "Green" + Chr(10) + "Blue" + Chr(10) + "5:2")
AddGadgetItem(1, -1, "6:0" + Chr(10) + "6:1" + Chr(10) + "6:2")
AddGadgetItem(1, -1, "Red" + Chr(10) + "Blue" + Chr(10) + "7:2")
PureCOLOR_SetCellColorCallback(0, @MyCellColorCallback())
Repeat
EventID.l = WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
Break
EndIf
ForEver
;
End
2. En utilisant l'API Windows ... voir #NM_CUSTOMDRAW / #CDDS_PREPAINT / #CDRF_NOTIFYSUBITEMDRAW / #CDDS_SUBITEMPREPAINT.
Il y a également beaucoup d'exemples sur le forum officiel.