Page 1 sur 1

ListIconGadget - Ordre des colonnes - solution

Publié : lun. 19/sept./2022 12:07
par Bmld76
Bonjour,


Il est possible d'obtenir les données d'une ListIconGadget dans l'ordres des colonnes mais si l'ordre a été changé par l'utilisateur avec l'option '#PB_ListIcon_HeaderDragDrop' activée, l'ordre obtenu est toujours l'ordre initial. Est-il possible d'obtenir l'ordre réel obtenu après déplacement des colonnes.

Remarque : Le code est prévu pour fonctionner sur les 3 os Mac , Linux et windows

Complement : par contre GetGadgetItemAttribute(Gadget, #PB_Ignore, #PB_ListIcon_ColumnWidth, c) donne la largeur de la colonne dans le nouvel ordre.


Bien cordialement

Re: ListIconGadget - Ordre des colonnes

Publié : lun. 19/sept./2022 15:00
par Ar-S
J'ai bien essayé mais je n'arrive à rien de probant.

Re: ListIconGadget - Ordre des colonnes

Publié : lun. 19/sept./2022 15:22
par Bmld76
Merci, je viens de faire un programme test et le résultat m'inique un problème PureBasic

Avec le programme de test , on observe que l'ordre suit les commutations pour la taille et les titres mais pas pour les datas. J'ai vu un forum Bug, je vais le poster.

Bien cordialement

Image

Apres commutation des colonnes

Image

Code : Tout sélectionner

Procedure ordre()
  
  For colonne = 0 To  CountGadgetItems(0)
    Debug GetGadgetItemText(0, -1 ,colonne ) +" "+GetGadgetItemText(0, 0 ,colonne ) + " "+GetGadgetItemAttribute(0, #PB_Ignore, #PB_ListIcon_ColumnWidth, colonne)
  Next
  Debug ""
EndProcedure



; Démonstration des options possibles pour le gadget liste avec icônes...
  If OpenWindow(10, 0, 0, 700, 300, "ListIconGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) 
    ; colonne de gauche
    TextGadget    (6,  10,  10, 330, 20, "Liste avec icônes standard", #PB_Text_Center)
    ListIconGadget(0,  10,  25, 500, 200, "Colonne 1", 100,#PB_ListIcon_HeaderDragDrop)
    ButtonGadget(1, 10,  260, 100, 25, "ORDRE")

    
      For b = 2 To 4          ; ajouter 3 colonnes supplémentaires
        AddGadgetColumn(a, b, "Colonne " + Str(b), 40+b*10)
      Next
      For b = 0 To 2          ; ajouter 4 éléments à chaque ligne des listes avec icônes
        AddGadgetItem(a, b, "1"+Chr(10)+"2"+Chr(10)+"3"+Chr(10)+"4")
      Next
      
      Repeat
        Event = WaitWindowEvent()
        
        Select Event

          Case #PB_Event_Gadget
            Select EventGadget()
              Case 1 
                ordre()
            EndSelect
            
        EndSelect
           Until Event = #PB_Event_CloseWindow

      EndIf

Re: ListIconGadget - Ordre des colonnes

Publié : lun. 19/sept./2022 15:28
par Bmld76
Sous windows , rien ne change Bizarre...

Image

Re: ListIconGadget - Ordre des colonnes

Publié : lun. 19/sept./2022 15:35
par Ar-S
Le numéro de tes colonnes étant assigné au moment de la création de ces colonnes, je crois que le déplacement de ces dernières n'a pas d'impact.
Ce sont des constantes. Peut importe les modifications visuelles que tu y apportes. Ce n'est pas forcément un bug
(enfin c'est ma conclusion)

Re: ListIconGadget - Ordre des colonnes

Publié : lun. 19/sept./2022 15:46
par Bmld76
Ok, mais le résultat n'est pas le même suivant l'OS, ce n'est pas normal. Sur MacOs titre et taille suive le nouveau choix mais pas les datas, ca non plus ce n'est pas normal. Si c'est la version windows qui est correcte , c'est dommage car je désire obtenir l'ordre choisi par l'utilisateur.


cordialement

Re: ListIconGadget - Ordre des colonnes

Publié : lun. 19/sept./2022 19:53
par Ar-S
Si selon l'OS les résultats diffèrent c'est effectivement à signaler en section bug (du forum anglais sinon ça risque de passer à l'as)..

Re: ListIconGadget - Ordre des colonnes

Publié : lun. 19/sept./2022 21:28
par Bmld76
Signalé et réponse de mk-soft

Fred has changed the internal editing. This means that the text is no longer directly in the NSTableView, but in the object PBIconTextCell.
This is therefore a bug.
See: https://www.purebasic.fr/english/viewtopic.php?t=79842

P.S.
I just saw that the data has always been stored internally, even with PBv 5.73.

Re: ListIconGadget - Ordre des colonnes

Publié : mer. 21/sept./2022 10:58
par Mesa
Windows seulement, mksoft a donné un code pour macos sur le forum uk.

Code : Tout sélectionner


Procedure.s GetGadgetItemTextListIcon(Gadget, Element, Colonne)
	
	Protected entete, ncols, NouvelOrdreCol, i, j
	entete = SendMessage_(GadgetID(Gadget), #LVM_GETHEADER, 0, 0)
	ncols = SendMessage_(entete, #HDM_GETITEMCOUNT, 0, 0)
	Dim elements.l(ncols) 
	
	NouvelOrdreCol = SendMessage_(entete, #HDM_GETORDERARRAY, ncols, @elements())   
	
	If NouvelOrdreCol <> 0 
		ProcedureReturn GetGadgetItemText(Gadget, Element , elements(Colonne) )	
	Else
		ProcedureReturn ""
	EndIf
	
EndProcedure



#listicon = 0
#button   = 1

; Démonstration des options possibles pour le gadget liste avec icônes...
If OpenWindow(10, 0, 0, 700, 300, "ListIconGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) 
	; colonne de gauche
	TextGadget    (6,  10,  10, 330, 20, "bug listicon entete drag n drop", #PB_Text_Center)
	ListIconGadget(#listicon,  10,  25, 500, 200, "Colonne 0", 100,#PB_ListIcon_HeaderDragDrop)
	ButtonGadget(#button, 10,  260, 100, 25, "ORDRE")
	
	
	For i = 1 To 3          ; ajouter 3 colonnes supplémentaires
		AddGadgetColumn(#listicon, i, "Colonne " + Str(i), 50+i*10)
	Next i
	
	For i=0 To 4 
		addtext$ = "C0:L" + Str(i) + Chr(10) + "C1:L" + Str(i) + Chr(10) + "C2:L" + Str(i) + Chr(10) + "C3:L" + Str(i)
		AddGadgetItem(0,-1, addtext$) 
	Next i
	add01$="add0"+ Chr(10) + "add1"
	AddGadgetItem(0,-1, add01$)
	add2$="add2"
	AddGadgetItem(0,-1, add2$)
	
	
	Repeat
		Event = WaitWindowEvent()
		
		Select Event
				
			Case #PB_Event_Gadget
				Select EventGadget()
						
					Case #button
						
						For i=0 To 3
							Debug GetGadgetItemTextListIcon(#listicon, -1, i)
							Debug GetGadgetItemTextListIcon(#listicon, 0, i)
						Next i
						
				EndSelect
				
		EndSelect
	Until Event = #PB_Event_CloseWindow
	
EndIf
M.

Re: ListIconGadget - Ordre des colonnes

Publié : jeu. 22/sept./2022 4:06
par Ollivier
A la lecture de ce sujet,

bonne observation de l'auteur,
bonne réaction de l'auteur.

Je ne connaissais même pas cette option de changement de colonne.

Je vais demander dans quels délais, Fred pourra résoudre le bug.

PS: Par contre, Bmld76, tes hyper-liens, à l'avenir, il faudra les faire "propre"
(url)http:://etc.unsite.oui(/url)

(avec des crochets à la place des parenthèses)


https://www.purebasic.fr/english/viewto ... 70#p584170

ps: @Bmld76 c'est un canular ton lien : ça parle de couleur de fond de colonne.... On perd vite du temps...

Ok... Trouvé un vieux sujet pour Windows seulement de 2007 repris par kcc en 2015, c'est trop vieux et c'est dans coding questions section pas dans les bugs reports...

https://www.purebasic.fr/english/viewtopic.php?p=466504

Je vais vérif quand même avec ton pseudo... Mais c'est vraiment beaucoup de temps à consacrer à la place d"un simple clic...

Ça y est ! Je t'ai trouvé ! Pffou... Tu t'étais bien caché ! Alors le but c'est que ce problème soit résolu rapidement.

(autre syntaxe d'hyper lien : (url=http://etc.unsite.oui)Expression de présentation(/url)
)
Le vrai lien objectif de ce sujet
(lien classique pour copier/coller facile pour les autres)
https://www.purebasic.fr/english/viewtopic.php?t=79842

Re: ListIconGadget - Ordre des colonnes

Publié : dim. 25/sept./2022 21:44
par Bmld76
Bonsoir,

Merci Ollivier pour ces réponses et désolé pour mon lien pourri. Effectivement, je n'ai pas fait attention j'ai du mélangé les liens, je suis un gros développement et je traite plusieurs problèmes à la fois.

Par contre, je vais voir les liens qui traitent de ce sujets que je n'avais pas trouvé.

Bien cordialement

Re: ListIconGadget - Ordre des colonnes

Publié : mar. 18/avr./2023 20:59
par Bmld76
Bonsoir,

Je viens de vérifier avec la version 6.01, le problème des entêtes qui ne suivent pas les colonnes n'est pas résolu.

Re: ListIconGadget - Ordre des colonnes - solution

Publié : dim. 23/avr./2023 13:22
par Bmld76
Pour solutionner le problème , il suffit de prendre en compte les entêtes de colonne et non leur position qui suivent bien le déplacement des colonnes. Comment ne pas y avoir pensé plus tot.