Page 1 sur 1

ListIcon et redimensionnement colonnes - comment faire pour

Publié : mer. 09/mars/2016 15:43
par Anonyme2
J'ai cherché un peu mais je n'ai pas trouvé et j'ai pas envie de passer des jours la-dessus.

Il me semblait avoir vu passer un code sur le forum anglais pour ceci :

J'aimerais lorsque je passe avec la souris sur le trait qui sépare 2 boutons de l'entête et que je clique en maintenant enfoncé le bouton de la souris, que trait vertical soit dessiné et si je déplace la souris, c'est le trait qui se déplace et si je lâche le bouton de la souris, la colonne est redimensionnée en fonction.

Comme dirais KCC, ya quiquin qui a ça sous le coude ? ou un lien sur du code.

Merci

Re: ListIcon et redimensionnement colonnes - comment faire p

Publié : mer. 09/mars/2016 16:02
par Marc56
Denis a écrit :...
J'aimerais lorsque je passe avec la souris sur le trait qui sépare 2 boutons de l'entête et que je clique en maintenant enfoncé le bouton de la souris, que trait vertical soit dessiné et si je déplace la souris, c'est le trait qui se déplace et si je lâche le bouton de la souris, la colonne est redimensionnée en fonction.
...
Je ne sais pas si j'ai bien compris la question. En gros tu veux que le trait de séparation de colonne s'affiche sur tout le gadget au moment du redimensionnement et non pas juste sur l'entête ?

Si c'est ça, alors j'ai trouvé ça: (deuxième code)
http://www.purebasic.fr/english/viewtop ... 13&t=61914

(mots-clés utilisés dans la recherche du forum (us): « lisitcon resize »)

:wink:

Re: ListIcon et redimensionnement colonnes - comment faire p

Publié : mer. 09/mars/2016 17:35
par Anonyme2
Marc56,
tu as bien compris

Merci à vous deux, je vais regarder vos codes

Re: ListIcon et redimensionnement colonnes - comment faire p

Publié : mer. 09/mars/2016 18:06
par Anonyme2
Finalement c'est pas ce que je recherche.
Le code de Rashad je l'ai, il redimensionne automatiquement, c'est pas ce que je recherche.

Actuellement, j'intercepte l'événement #HDN_DIVIDERDBLCLICK (sur #WM_NOTIFY) et je retourne #true ce qui empêche l'icône de redimensionnement d'être dessinée et on interdit le redimensionnement des colonnes à la souris.

Je voudrais maintenant pouvoir dessiner un trait vertical etc. pour redimensionner les colonnes.

Je vais chercher un peu mais j'ai pas envie :roll:

Re: ListIcon et redimensionnement colonnes - comment faire p

Publié : mer. 09/mars/2016 18:43
par Ar-S
Ce code de Gnozal peut-être ?

Code : Tout sélectionner

;Autor: gnozal

EnableExplicit

Define EventID

If OpenWindow(0,0,0,500,400,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  ListIconGadget(1,10,10,WindowWidth(0)-20,WindowHeight(0)-20,"Spalte 1",150,#PB_ListIcon_AlwaysShowSelection|#PB_ListIcon_GridLines)
  AddGadgetColumn(1,1,"Spalte 2",150)
  AddGadgetColumn(1,2,"Spalte 3",150)
  
  SendMessage_(GadgetID(1),#LVM_SETEXTENDEDLISTVIEWSTYLE,#LVS_EX_GRIDLINES,#LVS_EX_GRIDLINES)
  
  Repeat
    EventID=WaitWindowEvent()
    If EventID = #PB_Event_CloseWindow
      End
    EndIf
  ForEver
EndIf

Re: ListIcon et redimensionnement colonnes - comment faire p

Publié : mer. 09/mars/2016 18:56
par Shadow
Chez moi la commande ne fonctionne pas, aucun effet !

Code : Tout sélectionner

SendMessage_(GadgetID(1),#LVM_SETEXTENDEDLISTVIEWSTYLE,#LVS_EX_GRIDLINES,#LVS_EX_GRIDLINES)
PB 5.41 LTS 64.

Re: ListIcon et redimensionnement colonnes - comment faire p

Publié : mer. 09/mars/2016 19:24
par Anonyme2
SendMessage_(GadgetID(1),#LVM_SETEXTENDEDLISTVIEWSTYLE,#LVS_EX_GRIDLINES,#LVS_EX_GRIDLINES)

permet d'afficher le quadrillage version Microsoft.

Le quadrillage de PB est un quadrillage maison, si on utilise ce message, il ne faut pas avoir défini le paramètre PB_ListIcon_GridLines sinon il y aura un affichage en surépaisseur.

SendMessage_(GadgetID(1),#LVM_SETEXTENDEDLISTVIEWSTYLE,#LVS_EX_GRIDLINES, 0) supprime l'affichage du quadrillage (idem pour la remarque).

La solution je pense doit passer par une callback.

Merci

Re: ListIcon et redimensionnement colonnes - comment faire p

Publié : mer. 09/mars/2016 19:30
par Anonyme2
Shadow a écrit :Chez moi la commande ne fonctionne pas, aucun effet !

Code : Tout sélectionner

SendMessage_(GadgetID(1),#LVM_SETEXTENDEDLISTVIEWSTYLE,#LVS_EX_GRIDLINES,#LVS_EX_GRIDLINES)
PB 5.41 LTS 64.

Ton gadget n'a pas le numéro 1 car ce message fonctionne parfaitement en 32/64 bit, c'est une des commandes de ma librairie en asm.

Ou alors ta Listicon n'est pas en mode report (affichage colonnes).

Il y a un problème dans ton code.

Re: ListIcon et redimensionnement colonnes - comment faire p

Publié : jeu. 10/mars/2016 6:28
par kernadec
http://www.purebasic.fr/french/viewtopi ... t=listicon

Bonjour a tous
En ce moment je suis sur mon mobile, je n' ai plus le temp de rien
mais je pense me rappeller que dans cet essai de Listicon
y avoir mis pas mal d options, mais desole!! je ne l' ai pas teste
avec les dernieres versions PB

Cordialement

Re: ListIcon et redimensionnement colonnes - comment faire p

Publié : jeu. 10/mars/2016 6:50
par Anonyme2
Merci kernadec,

je vais regarder ce lien.

Je potasse la doc Microsoft, j'ai un peu avancé mais pas encore assez :roll:

Re: ListIcon et redimensionnement colonnes - comment faire p

Publié : jeu. 10/mars/2016 15:19
par Anonyme2
J'ai dit une connerie,

#HDN_DIVIDERDBLCLICK permet d'interdire (retourner #true) le redimensionnement automatique par double clic.

C'est l'interception du message #WM_SETCURSOR dans la callback du header (et pas de la listicon) qui permet de dessiner ou non l'icône système, retourner #true pour interdire le redessinement

Code : Tout sélectionner

 Macro MAC_MakePoints(valeur, pt)
      ;// valeur doit être un long (=.l) et pt : pt.point
      pt\x = MAC_LOWORD(valeur)
      pt\y = MAC_HIWORD(valeur)
EndMacro

Macro MAC_HIWORD(Value)
      (Value >> 16) & $FFFF
EndMacro

Macro MAC_LOWORD(Value)
      Value & $FFFF
EndMacro

      ;// mémorise les données utilisées avec le message #HDM_HITTEST
      Protected phdhti.HDHITTESTINFO

           Case #WM_SETCURSOR
                  ;// interdit le changement de curseur lorsque le curseur souris est sur le
                  ;// diviseur de la colonne
                  MAC_MakePoints(GetMessagePos_(), phdhti\pt)
                  If ScreenToClient_(Window, @phdhti)
                        Colonne = SendMessage_(Window, #HDM_HITTEST, 0, @phdhti)
                        If Colonne <> - 1 And (phdhti\flags & (#HHT_ONDIVIDER|#HHT_ONDIVOPEN))
                              ProcedureReturn #True
                        EndIf
                  EndIf