Page 1 sur 1
[R] Faire défiler le contenu d'une listbox
Posté : lun. 25 janv. 2010 12:22
par Serge63
Bonjour
J'utilise une liste (GUICtrlCreatList) qui contient un nombre varié d'éléments.
Cette liste est mise à jour au fur et à mesure pendant le déroulement de mon programme.
A l'affichage, le contenu de la liste reste figé à la première ligne.
J'aimerais que cette liste défile au fur et à mesure pour voir apparaitre les nouvelles lignes. Je ne veux pas redimensionner l'affichage car la liste peut contenir des dizaines, voire des centaines d'éléments.
Je n'ai pas trouvé dans l'aide ni sur le forum.
Si vous avez une piste, je suis preneur.
Merci d'avance
Re: [..] Faire défiler le contenu d'une listbox
Posté : lun. 25 janv. 2010 13:54
par peuchere83
Bonjour,
pour pouvoir t'aider plus facilement, il faudrait le code source.
Par contre as tu regardé l'exemple fourni dans l'aide sur la commande "GUICtrlCreateList " ?
Je pense que tu as oublié le caractère de fin de saisie "|".
Comme dans l'exemple ci-dessous" :
Sans ce caractère tu ne passes pas à la ligne suivante.
J'espère avoir pu t'aider
Re: [..] Faire défiler le contenu d'une listbox
Posté : lun. 25 janv. 2010 14:28
par Serge63
Le caractère de fin de saisie "|" est nécessaire quand on utilise plusieurs colonnes dans la liste pour spécifier quelle colonne on veut modifier. Je n'en ai pas besoin dans mon cas puisque je n'utilise qu'une seule colonne.
Voici la ligne qui créé ma liste à l'initialisation de la fenetre :
► Afficher le texte
Code : Tout sélectionner
$liste = GUICtrlCreateList("", 20, $intTOP, 760, 220, 0x00200000)
Voici la fonction qui met à jour ma liste pendant le déroulement du programme :
► Afficher le texte
Code : Tout sélectionner
Func _Comparer($strComparerIn, $strComparerOut)
LOCAL $intComparerIn
LOCAL $intComparerOut
LOCAL $intComparer
; on vérifie que le fichier en entrée existe
If FileExists($strComparerIn) Then
; on vérifie la date du fichier en entrée
$intComparerIn = FileGetTime($strComparerIn, 0, 1)
; on vérifie que le fichier en sortie existe
If FileExists($strComparerOut) Then
; on vérifie la date du fichier en sortie
$intComparerOut = FileGetTime($strComparerOut, 0, 1)
; on cherche la différence entre les 2 dates
$intComparer = $intComparerIn - $intComparerOut
; on compare les 2 dates
If $intComparer > 30 Then
; on incremente le nombre de fichiers traités
$intUpdateNombre += 1
; on affiche un message
GUICtrlSetData($Liste, "Mettre à jour ==> " & $strComparerOut)
; on remplace le fichier de sortie par le fichier en entrée en cas de modification
FileCopy($strComparerIn, $strComparerOut, 1)
EndIf
Else
; on incremente le nombre de fichiers traités
$intUpdateNombre += 1
; on affiche un message
GUICtrlSetData($Liste, "Ajouter ==> " & $strComparerOut)
; on copie le fichier en entrée vers l'emplacement en sortie avec l'option "créer le dossier si inexistant"
FileCopy($strComparerIn, $strComparerOut, 8)
EndIf
Else
; on vérifie que le fichier en sortie existe
If FileExists($strComparerOut) Then
; on incremente le nombre de fichiers traités
$intUpdateNombre += 1
; on affiche un message
GUICtrlSetData($Liste, "Supprimer ==> " & $strComparerOut)
; on supprime le fichier en sortie
FileDelete($strComparerOut)
EndIf
EndIf
EndFunc
Mes lignes sont bien toutes ajoutées les unes après les autres.
Lorsque la liste est plus longue que la hauteur de la fenêtre, un ascenseur apparait sur la partie droite.
Mais la liste ne défile pas et reste sur les premiers éléments du haut de la liste. Pour voir les derniers éléments, je dois faire descendre l'ascenseur.
J'aimerais que la liste défile toute seule au fur et à mesure pour voir en permanence la dernière ligne ajoutée.
Re: [..] Faire défiler le contenu d'une listbox
Posté : jeu. 28 janv. 2010 15:17
par Serge63
pas d'idée ???

Re: [..] Faire défiler le contenu d'une listbox
Posté : ven. 12 févr. 2010 08:31
par Serge63
je viens de trouver la solution (qui n'était pas si difficile que ça en fait

)
il faut employer
GUICtrlCreateListView pour créer la liste au lieu de
GUICtrlCreatList
ensuite la fonction
_GUICtrlListView_Scroll permet de faire défiler le contenu de cette liste