OVH Cloud OVH Cloud

Refresh inefficace

6 réponses
Avatar
Curl
Bonjour

Lorsque j'ajoute dynamiquement des chekbox aux items de ma Listview,
ceux-ci n'apparaissent pas à l'écran. et ce malgré la méthode Refresh.

Je contourne le problème en les cochant et les décochant 1 par 1.
(par du code)

Est un bug connu ?
Il y a t'il une solution plus élégantes pour me sortir de ce mauvais
pas ?

D'avance Merci !

6 réponses

Avatar
le_troll
"Me.refresh"


--
Merci, @+, bye, Joe
troll75 AROBASE iFrance POINT com
------------------------------------------
Ce message est plein de virus "certifiés"
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours raison !
------------------------------------------


"Curl" a écrit dans le message de news:
4112336f$0$29419$
Bonjour

Lorsque j'ajoute dynamiquement des chekbox aux items de ma Listview,
ceux-ci n'apparaissent pas à l'écran. et ce malgré la méthode Refresh.

Je contourne le problème en les cochant et les décochant 1 par 1.
(par du code)

Est un bug connu ?
Il y a t'il une solution plus élégantes pour me sortir de ce mauvais
pas ?

D'avance Merci !





Avatar
Curl
le_troll a tapoté :
| "Me.refresh"

- Me.refresh
- MaListView.refresh
- MaForm.refresh
ne fonctionnent pas.
Avatar
le_troll
Tu es en mode création (dynamique) là, est-ce que la doc prévoit que les
checks puissent être paramétrés en mode création, car suivant les options,
dans la doc c'est marqué si ça répond durant la création, ou s'il faut le
faire avant, voire après...

--
Merci, @+, bye, Joe
troll75 AROBASE iFrance POINT com
------------------------------------------
Ce message est plein de virus "certifiés"
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours raison !
------------------------------------------


"Curl" a écrit dans le message de news:
4112535f$0$31406$

le_troll a tapoté :
| "Me.refresh"

- Me.refresh
- MaListView.refresh
- MaForm.refresh
ne fonctionnent pas.




Avatar
Zoury
Salut Curl! :O)

Est un bug connu ?



Il n'a pas l'air très très connnu, mais il semble en effet y avoir un bug
avec la version SP6 de cette librarie. J'ai essayé tout un tas de chose pour
le faire rafraichir correctement et rien n'y fait.

J'ai testé avec la version 5.0 (SP2) de la librairie et ça fonctionne comme
sur des roulettes, seulement la propriété Checkboxes n'exitait pas à
l'époque, alors on doit le faire par API :

ex :
'***
' fonctionne avec Microsoft Windows Common Control 5.0 (SP2)
' Form1
Option Explicit

Private Declare Function SendMessage _
Lib "user32" _
Alias "SendMessageA" _
( _
ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByRef lParam As Any _
) As Long

Private Const LVM_FIRST As Long = &H1000
Private Const LVM_SETEXTENDEDLISTVIEWSTYLE As Long = (LVM_FIRST + 54)
Private Const LVS_EX_CHECKBOXES As Long = &H4

Private Sub Command1_Click()
Call SendMessage(ListView1.hwnd, LVM_SETEXTENDEDLISTVIEWSTYLE,
LVS_EX_CHECKBOXES, LVS_EX_CHECKBOXES)
End Sub

Private Sub Form_Load()

With ListView1
.View = lvwReport
Call .ColumnHeaders.Add
Call .ListItems.Add(, , "item")
End With

End Sub
'***



Il y a t'il une solution plus élégantes pour me sortir de ce mauvais
pas ?



Si tu dois absolument modifier cette propriété selon les demande de
l'utilisateur, je crois que ta technique actuel est suffisante. Il se
pourrait toutefois que ça "lag" lors de la boucle si tu as trop d'items..
dans ce cas là tu pourrais mettre à la liste invisible, effectuer ta boucle
et la remettre visible par la suite.

Tu peux aussi, comme mentionné plus tôt, utiliser la version 5.0 (SP2) de la
librairi et les APIs.

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
Le français se refait une beauté, parlons en :
http://www.orthographe-recommandee.info/
Avatar
Zoury
il y a une erreur... la valeur extended style d'un listview est un masque...

ajoute cette déclaration :
'***
Private Const LVM_GETEXTENDEDLISTVIEWSTYLE As Long = (LVM_FIRST + 55)
'***

et appelle l'api comme suit :
'***
Call SendMessage( _
ListView1.hwnd, _
LVM_SETEXTENDEDLISTVIEWSTYLE, _
LVS_EX_CHECKBOXES, _
SendMessage( _
ListView1.hwnd, _
LVM_SETEXTENDEDLISTVIEWSTYLE, _
0, _
ByVal 0&) Or LVS_EX_CHECKBOXES)
'***

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
Le français se refait une beauté, parlons en :
http://www.orthographe-recommandee.info/
Avatar
Zoury
damned copy/paste!! :O)

'***
Call SendMessage( _
ListView1.hwnd, _
LVM_SETEXTENDEDLISTVIEWSTYLE, _
LVS_EX_CHECKBOXES, _
SendMessage( _
ListView1.hwnd, _
LVM_GETEXTENDEDLISTVIEWSTYLE, _
0, _
ByVal 0&) Or LVS_EX_CHECKBOXES)
'***



--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
Le français se refait une beauté, parlons en :
http://www.orthographe-recommandee.info/