Page 1 sur 1
Alignement des mnts à droite dans ListIcon
Publié : mer. 21/nov./2012 19:01
par omega
Bonsoir,
Je voudrais confirmer s'il existe une instruction Pb qui permet d'aligner les nombres à droite dans une listIconGadget?
Pour l'instant j'utilise une méthode personnelle pour le faire.
Code : Tout sélectionner
;On suppose que tous les nombres ont 2 chiffres décimaux (ex: 15.25 ou 35996973.50 etc..)
Procedure Aligner()
Wnbre$=Trim(wnbre$)
Wtaille=32-len(Wnbre$)
AddGadgetItem(#Grid,-1,Rset(Wnbre$,wtaille))
EndProcedure
OpenWindow(0, 0, 0, 640, 300, "Aligner Nbre dans ListIconGadget", #PB_Window_SystemMenu | PB_Window_ScreenCentered)
ListIconGadget(1, 10, 25, 300, 70, "Montant", 100)
wNbre$="76402.55"
Aligner()
wNbre$="1000000.71"
Aligner()
wNbre$="225.02"
Aligner()
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
End
Re: Alignement des mnts à droite dans ListIcon
Publié : mer. 21/nov./2012 19:04
par omega
Erreur...
Merci de remlplacer #Grid par 1 ou 1 par #Grid
Re: Alignement des mnts à droite dans ListIcon
Publié : mer. 21/nov./2012 22:31
par kernadec
bonsoir omega
sous Windows j'utilise cette procédure
sinon à l'adresse url dans la procédure y a un code cross plateforme
Cordialement
Code : Tout sélectionner
Enumeration
#Win
#Grid
EndEnumeration
;On suppose que tous les nombres ont 2 chiffres décimaux (ex: 15.25 ou 35996973.50 etc..)
ProcedureDLL.l JustifyListIconColumn(GadgetID.l,column.l,flag.l) ;Justify ListIcon Column 0-Left 1-Right 2-Center
; auteur paul ** http://www.purebasic.fr/english/viewtopic.php?f=13&t=48345
lvc.LV_COLUMN
lvc\Mask = #LVCF_FMT
Select flag
Case 1
lvc\fmt=#LVCFMT_RIGHT
Case 2
lvc\fmt=#LVCFMT_CENTER
Default
lvc\fmt=#LVCFMT_LEFT
EndSelect
ProcedureReturn SendMessage_(GadgetID(GadgetID),#LVM_SETCOLUMN,column,@lvc)
EndProcedure
OpenWindow(#Win, 0, 0, 640, 300, "Aligner Nbre dans ListIconGadget", #PB_Window_SystemMenu | PB_Window_ScreenCentered)
ListIconGadget(#Grid, 10, 25, 300, 70, "Montant", 100)
wNbre$="76402.55"
AddGadgetItem(#Grid,-1,wNbre$)
wNbre$="1000000.71"
AddGadgetItem(#Grid,-1,wNbre$)
wNbre$="225.02"
AddGadgetItem(#Grid,-1,wNbre$)
JustifyListIconColumn(#Grid,0,1)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
End
Re: Alignement des mnts à droite dans ListIcon
Publié : mar. 04/déc./2012 19:12
par omega
Merci beaucoup kernadec, ça marche exactement comme je veux. Excellent !
J'avoue que je ne comnnais pas grand chose sur les structures et les API, j'ai essayé de faire la même
chose pour les lignes en remplaçant (dans ton code) COLUMN par ITEM, mais j'ai reçu un message d'erreur
me disant que fmt n'est pas une structure field....
Est-t il possible de faire pareil pour les lignes ?
Excuses-moi pour le dérangement mais... nous sommes là pour ça n'est ce pas??
Merci encore
Re: Alignement des mnts à droite dans ListIcon
Publié : mar. 04/déc./2012 19:21
par wood51
Salut peut-être que çà pourras t'aider (même principe que kernadec)
Code : Tout sélectionner
#LI_Text_Left = #LVCFMT_LEFT
#LI_Text_Center = #LVCFMT_CENTER
#LI_Text_Right = #LVCFMT_RIGHT
Procedure LI_AlignText(gadget.i,colonne.i,align.i = #LI_Text_Center)
Protected lvc.LVCOLUMN
Protected hwndHeader.i,nbColumns.i
Protected i.i
; remplissage la structure LVCOLUMN
lvc\mask=#LVCF_FMT
lvc\fmt = align
; si colonne = - 1 -> Alignement de toute les colonnes
If colonne = -1
; récupération du nombre de colonne
hwndHeader=SendMessage_(GadgetID(#ListIcon_1),#LVM_GETHEADER,0,0)
nbColumns=SendMessage_(hwndHeader,#HDM_GETITEMCOUNT,0,0)
For i = 0 To nbColumns - 1
SendMessage_(GadgetID(gadget),#LVM_SETCOLUMN,i,@lvc)
Next
Else
; sinon alignement de la colonne passé en paramètre
SendMessage_(GadgetID(gadget),#LVM_SETCOLUMN,colonne,@lvc)
EndIf
EndProcedure
@+ Wood51
Re: Alignement des mnts à droite dans ListIcon
Publié : mar. 04/déc./2012 19:57
par kernadec
bonjour omega
Est-t il possible de faire pareil pour les lignes ?
Qu'entends tu par ligne?: des caractères textes... si oui
Alors pas soucis puisque tes chiffres dans ta Listicon sont en alphanumérique
maintenant pour LVCOLUMN structure (Windows),
pour mieux comprendre ce que tu peux faire ou ne pas faire, il faut aller sur Msdn..
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
Cordialement
Re: Alignement des mnts à droite dans ListIcon
Publié : mar. 04/déc./2012 20:23
par omega
Salut kernadec
Qu'entends tu par ligne?: des caractères textes... si oui
Alors pas soucis puisque tes chiffres dans ta Listicon sont en alphanumérique
Ton code permet d'aligner le contenu d'une COLONNE C à gauche, à droite ou au milieu
(le contenu de toutes les cellules de la colonne C sont concernées)
Mais si je veux aligner le contenu de toutes les cellules d'une LIGNE L??
exemple: J'ai une listIconGadget qui contient 3 colonnes (colonne 1: nom, Colonne 2: Adresse, colonne 3: âge)
Supposons que j'ai 4 lignes dans ma liste. Ton code me permet d'aligner une colonne à la fois, c'est à dire
tous les noms (de toutes les lignes)
Mais il ne permet pas d'aligner toute la ligne 2 par exemple, c'est à dire le nom, l'adresse et l'âge de la deuxième ligne ??
Je ne sais pas si je suis clair kernadec..
Re: Alignement des mnts à droite dans ListIcon
Publié : mar. 04/déc./2012 21:07
par kernadec
apparemment la structure LVCOLUMN comme son nom l'indique gère les colonnes
et la justification ne s'exerce que sur celles-ci.
quand à dissocier les lignes des colonnes, là franchement je sais pas si c'est possible.
Cordialement
Code : Tout sélectionner
Enumeration
#Win
#Grid
EndEnumeration
;On suppose que tous les nombres ont 2 chiffres décimaux (ex: 15.25 ou 35996973.50 etc..)
ProcedureDLL.l JustifyListIconColumn(GadgetID.l,column.l,flag.l) ;Justify ListIcon Column 0-Left 1-Right 2-Center
; auteur paul ** http://www.purebasic.fr/english/viewtopic.php?f=13&t=48345
lvc.LV_COLUMN
lvc\Mask = #LVCF_FMT
Select flag
Case 1
lvc\fmt=#LVCFMT_RIGHT
Case 2
lvc\fmt=#LVCFMT_CENTER
Default
lvc\fmt=#LVCFMT_LEFT
EndSelect
ProcedureReturn SendMessage_(GadgetID(GadgetID),#LVM_SETCOLUMN,column,@lvc)
EndProcedure
OpenWindow(#Win, 0, 0, 640, 300, "Aligner Nbre dans ListIconGadget", #PB_Window_SystemMenu | PB_Window_ScreenCentered)
ListIconGadget(#Grid, 10, 25, 350, 100, "Montant", 100)
AddGadgetColumn(#Grid,1,"Nom",100)
AddGadgetColumn(#Grid,2,"Adresse",100)
wNbre$="76402.55"
AddGadgetItem(#Grid,-1,wNbre$+Chr(10)+"omega1"+Chr(10)+"Rue Tintin")
wNbre$="1000000.71"
AddGadgetItem(#Grid,-1,wNbre$+Chr(10)+"omega2"+Chr(10)+"Rue Milou")
wNbre$="225.02"
AddGadgetItem(#Grid,-1,wNbre$+Chr(10)+"omega3"+Chr(10)+"Rue Dupond")
JustifyListIconColumn(#Grid,0,1)
JustifyListIconColumn(#Grid,1,2)
JustifyListIconColumn(#Grid,2,3)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
End