Colonnes des "ListIconGadget"

Vous avez une idée pour améliorer ou modifier PureBasic ? N'hésitez pas à la proposer.
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Colonnes des "ListIconGadget"

Message par Chris »

Est-ce que Fred pourrait ajouter la gestion des en-têtes de colonnes dans les ListIcon, histoire de pouvoir trier les données sans être obligé de passer par l'Api?

J'imagine que cette question a déjà été posée, mais j'ai pas le courage de faire une recherche. :mrgreen:
pat
Messages : 411
Inscription : mar. 24/nov./2009 15:13

Re: Colonnes des "ListIconGadget"

Message par pat »

Chris,

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.
Il ne te manque plus que de vérifier cela vu mon niveau d'anglais faible.
anissa
Messages : 136
Inscription : mer. 13/oct./2010 15:43

Re: Colonnes des "ListIconGadget"

Message par anissa »

Oui, j'ai moi même posé une question dans ce genre mais je ne sais plus où exactement... Ma question était de savoir s'il y avait possibilité de fusionner des colonnes ET/OU des lignes d'une ListIconGadget. Si ma mémoire est bonne, il n'y avait pas de solution pour ça. Je profite de l'occasion pour ajouter ceci:

Est il possible de choisir une police et une couleur pour une cellule bien déterminée dans une ListIconGagdet?

Merci de votre réponse
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Re: Colonnes des "ListIconGadget"

Message par gnozal »

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.
anissa
Messages : 136
Inscription : mer. 13/oct./2010 15:43

Re: Colonnes des "ListIconGadget"

Message par anissa »

@gnozal

Un grand merci !
Répondre