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)

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

Administrateur CodeS-SourceS
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 Renfield

thomas_reynald@msn.com

Aucune 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

Administrateur CodeS-SourceS
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 Renfield

thomas_reynald@msn.com

Aucune 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

Administrateur CodeS-SourceS
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 Renfield

thomas_reynald@msn.com

Aucune 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


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,577 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.