Accueil > Forum > > > > ListView et Slider pour scroll
ListView et Slider pour scroll
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ée 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
[Catégorie modifiée VB6 --> VBA] Erreur d'exécution n° 5 [ par jpb974 ]
Bonjour à tous, Grand débutant en VBA, j'apprécie votre forum où j'apprends beaucoup de choses. Mais là, je bloque totalement sur quelques lignes qui
[Déplacé .Net --> VBA] Erreur de type Dépassement de capacité [ par olidef ]
Bonjour, Je débute dans la programmation sous VBA Excel (2003). Je viens de créer une application, grâce à vos précieux conseils. Il reste tout de
[Déplacé VB6 --> VBA] écrire des données d'un textbox sous excel 2007 [ par shadowskill67 ]
hello, J'ai un petit soucis rien de bien grave. J'ai simplement l'impression qu'il y a des changement d'écriture entre excel 2003 et 2007. Pour comm
[Déplacé VB6 --> VBA] condition pour remplir une colonne avec VBA (urgent) [ par ABMP ]
Bonjour, J'ai cherché avant mais je n'ai rien trouvé sur le forum. je voudrais savoir comment poser une condition afin qu'un colonne prenne une val
Création de classe - surcharge méthode avec début signature identique [ par mioumiounorris ]
Bonjour ! J'essaye actuellement de créer ma première classe pour me mettre à la POO. Je comprends le principe de base, et j'ai déjà défini mes variabl
Livres en rapport
|
Derniers Blogs
XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE)[HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE) par Gio
Je m'y prends un peu tard je sais, mais bon je suis développeur web et donc hyper fainéant ! Toujours dans le cadre des technologies émergentes, ici HTML5, parce qu'on aime HTML5 chez Wyg , nous seront présent, le vieux ( Aurélien V.) et moi, pour pr...
Cliquez pour lire la suite de l'article par Gio [WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|