|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : ListView et Slider pour scroll [ Archives Visual Basic / J'AI BESOIN D'AIDE !!!! :) ] (kabeydia)
Informations & options pour cette discussion
jeudi 13 novembre 2003 à 00:33:03 |
ListView et Slider pour scroll

kabeydia
|
Salut ! Je suis en train de faire un petit lecteur mp3 et j'ai besoin d'aide pour gérer la playlist. En fait, j'utilise une ListView pour afficher l'auteur, le titre et le temps total. A côté j'utilise un control Slider personnalisable (avec images de fond etc...), mais qui a les mêmes propriétés que le Slider de base Microsoft, pour avoir une jolie scrollbar au lieu d'un vilain truc gris. Mon problème: Comment faire défiler la liste avec un slider ? J'ai déjà tout essayé (notamment avec 'EnsureVisible') mais il ne m'affiche que le dernier de la liste (par conséquent, le 5ème) mais je n'arrive pas à revenir au premier. Ma liste est composée de 4 lignes max et à la propriété FlatScrollBar à True (pour éviter que les scrolls tout moches apparaissent !). Voici mon code: 'Empêche de remonter juqu'en haut pour respecter les proportionnalités du slider en fonction du remplissage de la listview
Private Sub sldScroll_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If sldScroll.Value < 4 * 100 / lstvListe.ListItems.Count Then sldScroll.Value = 4 * 100 / lstvListe.ListItems.Count End If End Sub
Private Sub sldScroll_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) If sldScroll.Value < 4 * 100 / lstvListe.ListItems.Count Then sldScroll.Value = 4 * 100 / lstvListe.ListItems.Count End If End Sub
'Click sur l'ascenceur de la liste
Private Sub sldScroll_Click() Dim nSnap As Integer 'Snap clické Dim nMultip As Integer 'Multiplicateur entre le scroll et la liste Dim nEnsure As Integer 'Index de la musique à afficher If sldScroll.Value < 4 * 100 / lstvListe.ListItems.Count Then sldScroll.Value = 4 * 100 / lstvListe.ListItems.Count End If nSnap = 4 * 100 / lstvListe.ListItems.Count nMultip = nSnap / 4 nEnsure = sldScroll.Value / nMultip lstvListe.ListItems(nEnsure).EnsureVisible
End Sub
|
Vala ! J'espère que quelqu'un aura une solution miracle ! Merci d'avance Kabeydia
|
|
|
jeudi 13 novembre 2003 à 09:22:45 |
Re : ListView et Slider pour scroll

Renfield
|
Utiliser EnsureVisible n'est pas une méthode performante. En effet, tu appliques cette methode sur un Item que tu desires voir. Ca ne fait donc pas un deplacement fluide.... pour faire ce que tu veux, il te faut faire avec des API..... j'ai beau tenter.... je ne parviens qu'a faire bouger le ScrollBar.... mais la liste n'est pas mise a jour.... Il doit pourtant bien exister un moyen..... au pire, tu pourrais utiliser une ListBox, celle-ci possede en effet la propriete TopIndex.... By Renfieldthomas_reynald@msn.comAucune touche n'a ete blessee lors de la saisie de ce texte..........
|
|
|
jeudi 13 novembre 2003 à 18:31:40 |
Re : ListView et Slider pour scroll

kabeydia
|
Idée à réfléchir... Mais le problème des listboxes c'est qu'il n'y a qu'une seule colonne ! :(
Je ne suis encore une bête en vb mais comment on utilise les API ?
|
|
|
jeudi 13 novembre 2003 à 20:18:04 |
Re : ListView et Slider pour scroll

Renfield
|
Il faut declarer l'API en question. ensuite, tu agis avec comme avec toute fonction..... exemple : Private Declare Function Chord Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long, ByVal X4 As Long, ByVal Y4 As Long) As Long
Private Sub Form_Click() Chord Me.hdc, 10, 10, 100, 100, 40, 60, 60, 40 End Sub
|
tu trouvera surement des tas d'informations sur le Net, sur les API. pour les ListBoxes, tu peux toujours afficher plusieurs colonnes, en separant les champs par des tabulations. une API te permet de les aligner, comme dans Word..... Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Private Const LB_SETTABSTOPS As Long = &H192
Private Sub Form_Load() '# On definit le nombre de caracteres pour chacun des TabStops Dim TabStop(3) As Long TabStop(0) = 2& TabStop(1) = 120& TabStop(2) = 200& '# Essaie de mettre la ligne suivante en commentaire, tu y verras une difference !! SendMessage List1.hwnd, LB_SETTABSTOPS, 3&, TabStop(0)
Dim a As Byte For a = 0 To 254 List1.AddItem "Item Court " & a & Chr$(9) & "SubItem " & a & Chr$(9) & "SubItem2" List1.AddItem "Item Long XxXxXxXxXxX " & a & Chr$(9) & "SubItem " & a & Chr$(9) & "SubItem2" Next a End Sub
| By Renfieldthomas_reynald@msn.comAucune touche n'a ete blessee lors de la saisie de ce texte..........
|
|
|
jeudi 13 novembre 2003 à 21:11:39 |
Re : ListView et Slider pour scroll

kabeydia
|
Ouf ! Je n'ai même pas eu le temps de regarder ta réponse ! Après une longue réflexion, j'ai trouvé un truc qui marche (sans API). En fait, il faut ne pas définir de Snap (espacements dans la scroll quand on clique) et mettre ce code: 'Click bas sur l'ascenceur de la liste
Private Sub sldScroll_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If sldScroll.Value < 100 / lstvListe.ListItems.Count Then sldScroll.Value = 100 / lstvListe.ListItems.Count End If End Sub
'Mouvement sur l'ascenceur de la liste
Private Sub sldScroll_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim dScroll As Double 'Valeur d'une ligne par rapport au scroll Dim dQuatre As Double 'Valeur de 4 lignes à afficher Dim nEnsure As Integer 'Index de la musique à afficher Dim nI As Integer 'Variable de boucle If sldScroll.Value < 4 * 100 / lstvListe.ListItems.Count Then sldScroll.Value = 4 * 100 / lstvListe.ListItems.Count End If dScroll = 100 / lstvListe.ListItems.Count dQuatre = sldScroll.Value / dScroll nEnsure = dQuatre - 3 For nI = nEnsure To nEnsure + 3 lstvListe.ListItems(nI).EnsureVisible Next nI End Sub
'Click haut sur l'ascenceur de la liste
Private Sub sldScroll_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim dScroll As Double 'Valeur d'une ligne par rapport au scroll Dim dQuatre As Double 'Valeur de 4 lignes à afficher Dim nEnsure As Integer 'Index de la musique à afficher Dim nI As Integer 'Variable de boucle If sldScroll.Value < 4 * 100 / lstvListe.ListItems.Count Then sldScroll.Value = 4 * 100 / lstvListe.ListItems.Count End If dScroll = 100 / lstvListe.ListItems.Count dQuatre = sldScroll.Value / dScroll nEnsure = dQuatre - 3 For nI = nEnsure To nEnsure + 3 lstvListe.ListItems(nI).EnsureVisible Next nI End Sub
|
En fait, c'était tout con... mais il fallait y penser ! Merci quand même pour ton aide précieuse :) Kab
|
|
|
jeudi 13 novembre 2003 à 21:15:40 |
Re : ListView et Slider pour scroll

Renfield
|
avec un ListBox, tu n'aurais pas non plus eu besoin d'API. tu fait un Slider.max = List1.ListCount et dans Slider1._Change, tu fais List1.TopIndex = Slider1.Value ------------------------------------------------ sachant que ca fonctionne aussi avec le ListView, mais c'est pas pareil..... tu fait un Slider.max = List1.ListItems.Count et dans Slider1._Change, tu fais Listview1(Slider1.Value).EnsureVisible By Renfieldthomas_reynald@msn.comAucune touche n'a ete blessee lors de la saisie de ce texte..........
|
|
|
jeudi 13 novembre 2003 à 21:49:16 |
Re : ListView et Slider pour scroll

kabeydia
|
Ah ouaiis !! C'est un "petit peu" plus simple :)
En fait, je me prenais la tête avec des pourcentages car j'avais initialisé le max du scroll à 100....
Dans tous les cas, quand y faut se compliquer la vie, je suis la reine !
Merci :)
Kabeydia
|
|
|
Cette discussion est classé dans : value, integer, listitems, sldscroll, lstvliste
Répondre à ce message
Sujets en rapport avec ce message
Question sur TStream, TPersistent (Delphi win32 - D7) [ par Andalarius ]
Bonjour à tous, Voici ma situation : Je désire écrire les objets complexes (contenant différents objets eux-mêmes ou des listes d'objets) dans un fi
pb dans les objets field [ par nicolas ]
je lis ds les msdn que les valeurs associés au type des enregistrements sont :Constant Value Description adVarWChar 202 Null-terminated Unicode charac
Keydown [ par JeffC1977 ]
Salut à tous...J'ai un bug avec mon keydownvoici mon codePrivate Sub form_Keydown(KeyCode As Integer, Shift As Integer) Select Case KeyCode
possibilité de faire checki.value=???i=integer 1,2,3,4,5,6.... [ par cardonc ]
Bonjour a tous,Je souhaite réaliser une boucle sur une variable i qui varie de 1 à 100. Dans la boucle si checki.value=1 je sauvegarde la valeur de i.
Macro pour Excel erreur dans "cells" [ par Eurylochos ]
Bonjour,J'essaie depuis quelques jours de me mettre à VBA. J'ai donc fait les quelques lignes qui suivent, mais un message d'erreur persiste sur la li
pbm avec classe [ par newgame ]
bonjourje suis débutant en VB6 et j'ai besoinde crée un pgm basic ou l'on remplitla classe puis on affiche résultatmoy dans un label après avoir cliq
Développement d'un calculateur VBa [ par Yurie ]
Bonsoir à tous et toutes,Comme l'indique le titre de mon post, je dois développer un calculateur du droit d'enregistrement lors d'un achat de bien imm
Problème initialisation tabstrip [ par elkochta ]
Bonjour à tous, J'explique mon problème: Je voudrai créer un formulaire dynamique avec un contrôle tabstrip avec un nombre d'onglets variable e
Porblème Boucle + récupération de données [ par Zouzou12345 ]
Bonjour à tous! Je suis débutante en vba et j'ai un problème qui dure depuis 2 jours! J'ai crée un Userform avec 2 listes déroulantes où on choisit le
Créer un fichier dans un répertoire [ par bopguyizot ]
Bonjour,Je débute avec VBA et j'ai un problème pour créer un fichier excel dans un répertoire que je crée juste avant.Voici mon code:Sub ExempleModele
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version
|