begin process at 2013 05 22 01:38:08
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Control

 > TRACKBAR - SLIDER VB.NET

TRACKBAR - SLIDER VB.NET


 Information sur la source

Note :
9,33 / 10 - par 6 personnes
9,33 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Control Source .NET ( DotNet ) Classé sous :trackbar, slider, Control Niveau :Débutant Date de création :05/10/2007 Date de mise à jour :05/07/2012 19:09:40 Vu / téléchargé :12 993 / 829

Auteur : lapix

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (33)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
Un petit code pour faire une trackbar.

Les propriété sont dans le groupe 'personnalisé'

Elle se positionne verticalement ou horizontalement simplement en modifiant ses dimensions.

On peut

Tracer des graduations ou pas, afficher sa valeur dans le curseur, les 2 en meme temps.

On peut changer rapidement de couleur par le biais de modeles
Egalement modifier son epaisseur
Le pas des graduations peut etre changé et s'ajuste automatiquement afin que ce soit toujours un diviseur de (maxi-mini)

Comme toujours, n'hesitez pas a commenter.
et merci de vos appreciations (bonnes ET mauvaises) et suggestions



 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

08 octobre 2007 17:49:15 :
Transformé le user control en classe, corrigé un soucis de marge, eliminé le clignotement de rafraichissement.
12 octobre 2007 16:49:15 :
Rajout dans la propriete _modele de l'option PasDeModele. Ceci permet de ne pas zapper les couleurs personnalisées choisies individuellement. Lors du choix d'une couleur directement dans le panel, le modele de couleur passe automatiquement a PasDeModele pour tenir compte de cela. (Conformement au commentaire d'ADN56)
26 avril 2012 21:30:21 :
Ajouté les évènements clavier (flèches , +- , Home, End) Ajouté le MouseWheel Corrigé un défaut de dessin qui décalait le dégradé de quelques pixels Renommé les propriétés commençant par '_' et ajout dans un groupe 'personnalisé' Ajouté le cercle dans les curseurs possibles Ajouté du commentaire
05 juillet 2012 19:09:41 :
Corrigé selon les commentaires de Sankassss, Corrigé la mise à jour de 'valeur' quand celle-ci était inférieure à mini ou supérieure à maxi, après modification de l'une ou l'autre de ces deux propriétés

 Sources du même auteur

Source avec Zip Source avec une capture Source .NET (Dotnet) VERTICAL PROGRESS BAR
Source avec Zip Source avec une capture Source .NET (Dotnet) USER CONTROL GRAPHIQUE VB 2005

 Sources de la même categorie

Source avec Zip Source avec une capture Source .NET (Dotnet) SOUS CLASSE DE DATATABLE POUR LA MISE À JOUR DE LA BASE DE D... par erdna
Source avec Zip RICHTEXTBOX AVEC ENREGISTREMENT DES COULEURS DE POLICES par bernardluguet
Source avec Zip Source avec une capture PROGRESSBAR GENRE "GLOSS" SANS MANIFEST par jack
Source avec Zip Source avec une capture UTILITAIRE MSR605/206 par PhoenixBytes
Source avec Zip Source avec une capture Source .NET (Dotnet) SELECTEUR ALPHANUMERIQUE (VB.NET 2010 par jemade

 Sources en rapport avec celle ci

Source .NET (Dotnet) BINDING COMBOBOX NOTHING par Amazing
Source avec Zip Source avec une capture Source .NET (Dotnet) CONTROLSTARS EN RÉPONSE À JAKNIGHT007 par bigboss9
Source avec Zip Source avec une capture Source .NET (Dotnet) COLORMATRIX_VB par Le Pivert
Source avec Zip Source avec une capture [VB6 - ACTIVEX] RGWEATHER - LA MÉTÉO SIMPLEMENT DANS VOS APP... par magicgus
Source avec Zip Source avec une capture POTAR SLIDER par nawakator

Commentaires et avis

Commentaire de Adn56 le 06/10/2007 11:51:42 9/10

j'aime bien ^^, je vais lire tout ça pour essayer d'améliorer mon control. Mais j'ai le meme soucis avec ton control que sur le miens, cela clignote sur un changement. Cela le fait chez toi ? et si oui comment virer cela ???
a te lire.
++

Commentaire de veler le 06/10/2007 12:11:59

Stylé!

Commentaire de lapix le 06/10/2007 20:19:44

J'ai aussi le probleme du clignotement, je cherche sur une voie qui consisterais a tracer un bmp et l'afficher d'un coup ou un equivalent de ce genre...

Si tu trouves avant n'hesites pas a m'en faire part

Commentaire de Adn56 le 06/10/2007 20:59:07

promis ^^

Commentaire de Adn56 le 08/10/2007 14:51:25

bon j'ai essayé tout un tas de trucs différents, comme dessiner dans un panel, plutot que sur la forme (http://www.codes-sources.com/code.aspx?ID=44039) mais cela fait pareil, j'ai essayé pour voir la différence entre refresh() et invalidate(), pareil :(
je séche. le pire je viens de voir que sur control gauge.ocx de VB4 (donc fait par crosoft) et ben cela clignote aussi si on change trop vite les valeurs. Donc conclusion pour ton control e tle miens il faut pas donner de valeur en temps réél si on veux que cela ne clignote pas ! c'est nul -_-

Voici les différentes version testé pour dessiner (s'il yen a d'autre je prends ^^)

Sur la form :

    Private Sub UserControl1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
        Try
            Dim gaugepen As New Pen(couleur, epaisseur)
            Dim x, y As Integer

            x = (centreX) + (RayonX * Math.Cos(val_PI))
            y = (centreY) - (RayonY * Math.Sin(val_PI))
            e.Graphics.DrawLine(gaugepen, (centreX), (centreY), x, y)
            e.Dispose()
        Catch excep As Exception
            Exit Sub
        End Try
            End Sub

ou dans un panel :

    Protected Sub dessin_VU() => appellé dans le panel1.paint()

        Try
            Dim Graphic As System.Drawing.Graphics = Panel1.CreateGraphics
            Dim gaugepen As New Pen(couleur, epaisseur)
            Dim x, y As Integer

            'Graphic.Clear(Color.Transparent)

            x = (centreX) + (RayonX * Math.Cos(val_PI))
            y = (centreY) - (RayonY * Math.Sin(val_PI))
            Graphic.DrawLine(gaugepen, (centreX), (centreY), x, y)
            Graphic.Dispose()
        Catch excep As Exception
            Exit Sub
        End Try

    End Sub 'dessine l'aiguille

Voila, et toi tu en est ou  ?

Commentaire de lapix le 08/10/2007 15:30:11

En fait je suis aussi parti sur invalidate.
Je suis en train de modifier mon code et je travaille avec :

Invalidate(Rect as rectangle) au lieu de invalidate()

dans toutes les proprietes je mets invalidate() au lieu de refresh(), et dans la propriete valeur je mets invalidate avec les coordonnées du rectangle que je veux redessiner.
En fait ca se fait par le biais d'une procedure InvalidatePartial(OldValue,Newvalue) que je cree pour que le controle ne soit rafraichi que sur cette zone là.

Pour ton cas par exemple, si ton aiguille est verticale, tu invalidate le rectangle vertical qui la contient et tu cree une nouvelle aiguille

Il y a un leger clignotement encore mais vraiment rien a voir avec le code precedent

Je ne sais pas si je suis clair. Je mets a jour mon code cet AM je pense, avec le support ca ira peut etre mieux

a te lire

Commentaire de Adn56 le 08/10/2007 16:09:10

C'est bon j'ai trouvé !
j'ai laissé mon code tel quel, mais j'ai changé les paramétres du control (user.form quoi) Et ça marche !!!! plus aucun clignotement !
voici les paramétres :
allowdrop = false
autoscalemode = none
autoscroll = false
autosize= false
autovalidate = DISABLE !
causevalidation = false
et surtout DOUBLEBUFFERED = TRUE ;-)
imemode = nocontrol
localizable = false
Et voila avec ça tu ne devrais plus avoir de soucis ^^
++

Commentaire de Adn56 le 08/10/2007 16:30:49

gloups je viens de tester cela sur ton code et cela ne clignote plus (ya rien qui s'affiche MDR) arggg j'y pige que kouik. bonne chance ++

Commentaire de lapix le 08/10/2007 17:51:54

Code mis a jour !
J'ai utilisé un peu de tout en fait...

Commentaire de Adn56 le 08/10/2007 18:44:29

lol cool, je l'intégre de ce pas à mes controls ;)

sinon je pense faire de même, mais avec le principe de mon control, style je change le bouton du slider avec un type.
du genre :
type 0 = bmp
type 1 = ton losange
type 2 = un rectangle avec propriété de couleur
puis aussi sur le fond de la trackbar
sacré boulot en perspective ^^, mais c'est comme cela que j'apprend lol

enfin tu vois le topo ^^

Commentaire de Bidou le 09/10/2007 10:18:41 administrateur CS 9/10

Le résultat visuel est bon :)

Commentaire de lapix le 09/10/2007 10:51:23

Merci bidou

Comme je fais de l'auto formation, j'apprecie tout particulierement le commentaire

Commentaire de Adn56 le 09/10/2007 12:53:15

pareil chez moi, ca tourne nickel ! bravo
étant aussi autoditacte, ej vais me permettre de te piquer deux trois idées ;)
+

Commentaire de lapix le 09/10/2007 14:23:28

C'est fait pour ca !On partage et on avance...

Commentaire de Adn56 le 10/10/2007 14:28:20

ok, je post ma mise à jour de ma DLL et puis j'essaye apres de compendre la différence avce une classe ;)
merci et @++

Commentaire de Adn56 le 12/10/2007 10:13:52

Salut, une idée !
Dans modéle de couleur il manque un modéle vierge.
En effet si l'on modifie les couleurs du curseur ou du fond via les propriétés _couleurA,_couleurcurse,etc elles seront réinitalisées par la propriété _modélecouleur.

vala ++

Commentaire de Adn56 le 12/10/2007 18:33:46

sinon pour info je commence à modifier ton code pour le rendre adhoc pour mes appli, je n'oublirai pas, biensur de te citer ^^. voila dés que j'ai fini je post ma source !
++ et merci bien pour tout

Commentaire de Adn56 le 08/04/2008 19:19:34

Merci l'ami ! du bon boulot que voila !!!
continue ;)

Commentaire de yassirguitare le 01/11/2008 23:17:08

methode refresh() pour le clignotement

Commentaire de Mayzz le 08/06/2009 08:22:20

Bravo, très beau contrôle, bien élaboré, code propre je met 10 sans hésiter !

Commentaire de Mayzz le 08/06/2009 08:26:01 10/10

Arf, pas pris la note je recommence(et un ptit click sur ta barre de pub ;o) )

Commentaire de oblykody le 11/08/2009 03:47:09 10/10

Très beau contrôle, merci de nous pondre de belles sources comme ça !

Commentaire de Golard le 10/08/2010 11:49:38 8/10

Très joli !

ça nous change de l'horrible Trackbar de vbnet qui n'est autre que le non moins horrible slider de vb6 qui lui-même semble tout droit sorti des premiers contrôles visuels des année 80 !!!

Dommage que la roulette de la souris n'agisse pas dessus comme sur le slider de vb... peux-tu améliorer ça ?

Encore bravo ! Je m'abonne au fil au cas où tu mettes à jour le source,

A +

Commentaire de lapix le 10/08/2010 14:03:39

Bonjour Golard

Pour obtenir ce que tu souhaites, tu paux coller ce bout de code :

  Protected Overrides Sub OnMouseWheel(ByVal e As System.Windows.Forms.MouseEventArgs)
            MyBase.OnMouseWheel(e)
            Dim ChangeValue As Integer = CInt(e.Delta / 120) '* SystemInformation.MouseWheelScrollLines / 40)
            Me._Valeur += ChangeValue
        End Sub

        Protected Overrides Sub OnMouseClick(ByVal e As System.Windows.Forms.MouseEventArgs)
            MyBase.OnMouseClick(e)
            Me.Select()
        End Sub

Ca doit repondre a ta question, il suffit de cliquer une fois sur le controle pour lui donner le focus et ensuite tu peux utiliser la roulette de souris pour changer la valeur dans les bornes définies

Bonne journée

Commentaire de Adn56 le 10/08/2010 18:02:33

ou en plus lui attribuer directement le focus avec getfocus() si tu veux
vraiment s'était bien cette époque, des bons controls...3ans déja..
Allez lapix encore du code ^^

Commentaire de Adn56 le 27/04/2012 08:10:30

Merci lapix (:

Commentaire de Adn56 le 27/04/2012 18:52:36

juste une question après lecture du code (tu t'es bien pris la tête à commenter ! bravo et encore merci), pourquoi ne pas avoir hérité du control track bar et surcharger le paint ?
@++ l'ami

Commentaire de lapix le 28/04/2012 11:28:58

Salut ADN

Juste pour le plaisir de partir de rien et explorer le plus de choses possibles. Je n'ai pas de contraintes de productivité donc je prend le temps et essaie de m'enrichir.
La je voulais comprendre pourquoi et comment prendre en compte les touches et notamment les fleches qui sont consacrées habituellement à d'autres taches, par exemple le changement du focus sur le controle suivant/precedent

A +

Commentaire de sankasssss le 02/07/2012 17:44:42 10/10

Très bon composant bien codé.
Félicitations.

Commentaire de sankasssss le 04/07/2012 22:32:10

Bonjour,

Je ne sais pas si le bug est connu mais il existe un problème lorsque l'on met un minimum.
Dès le lancement l'affichage est erroné, si vous mettez la valeur 10 dans minimum, le composant marque bien 10 mais commence 10 graduation avant la première barre du rectangle censée être celle à 10.
En déplacement, le curseur est toujours 10 plus loin que le curseur.

Je regarderai à la méthode de calcul de la valeur demain et testerai aussi s'il n'existe pas un problème avec le maximum.

Bonne nuit.

Commentaire de sankasssss le 05/07/2012 17:34:21

J'ai corrigé le problème, il faut ajouter + z_Minimum à la variable Combien dans OnMouseDown et OnMouseMove :
      Protected Overrides Sub OnMouseDown(ByVal e As MouseEventArgs)
            If e.Button = Windows.Forms.MouseButtons.Left Then
                If IsHorizontal() Then
                    Dim Combien As Integer = CInt((e.X - MargeH) / ((Me.Width - MargeH * 2) / (z_Maximum - z_Minimum))) + z_Minimum
                    'Debug.WriteLine(Combien)
                    If Combien <> Me.OldValue Then Me.Valeur = Combien

                ElseIf Not IsHorizontal() Then
                    Dim Combien As Integer = CInt(((Me.Height - e.Y - MargeH) / (Me.Height - MargeH * 2)) * (z_Maximum - z_Minimum)) + z_Minimum
                    'Debug.WriteLine(Combien)
                    If Combien <> Me.OldValue Then Me.Valeur = Combien

                End If

            End If

            MyBase.Select()
            MyBase.OnMouseDown(e)
        End Sub

        Protected Overrides Sub OnMouseMove(ByVal e As MouseEventArgs)
            If e.Button = Windows.Forms.MouseButtons.Left Then

                If IsHorizontal() Then
                    Dim Combien As Integer = CInt((e.X - MargeH) / ((Me.Width - MargeH * 2) / (z_Maximum - z_Minimum))) + z_Minimum
                    'Debug.WriteLine(Combien)
                    If Combien <> Me.OldValue Then Me.Valeur = Combien

                ElseIf Not IsHorizontal() Then
                    Dim Combien As Integer = CInt(((Me.Height - e.Y - MargeH) / (Me.Height - MargeH * 2)) * (z_Maximum - z_Minimum)) + z_Minimum
                    'Debug.WriteLine(Combien)
                    If Combien <> Me.OldValue Then Me.Valeur = Combien

                End If

            End If

            MyBase.OnMouseMove(e)
        End Sub

;)

Commentaire de lapix le 05/07/2012 18:52:02

Bonjour SanKasssss

Effectivement, je n'ai jamais, malgré différents tests, verifié cette situation

Merci pour la correction, je remonte le source corrigé

Bonne journée

Commentaire de sankasssss le 05/07/2012 20:32:02

De rien, et encore merci pour la source.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Ou se trouve le Control "slider"? [ par Thanatozblob ] Bonjour, je suis d&#233;butant, et je ne sais pas quelle case cocher dans la liste "composants" de vb6 pour pouvoir ajouter un contr&#244;le "slider", comment naviguer dans un mp3 avec un control slider [ par MortDansLAme ] Bonjours &#224; tous et &#224; toutes, je suis en ce moment en train de concevoir un lecteur MP3 sous VB6. A l'heure actuel, un control slider me perm Control.Print [ par makram2006 ] Je veux bien savoir comment d&#233;finir la police pour la m&#233;thode Print en VB6. control wav [ par hamada2010 ] bjr, je voudrais un control auquel je peux inserer du&nbsp;son, wav ou wma,et que je puisse le controler avec un programme.et merci Control richtextbox transparent attaché a sa form [ par adess00 ] Bonjour Je voudrai savoir comment faire pour rendre ma richtextbox transparente.J ai trouv&#233; des sources mais le probleme est que la richtextbox d Comment faire un Control Array en vb.net sans ajouter de composant. [ par XGuarden ] Je suis en trein de faire un programme de r&#233;servations de spactacles en vb.net 2003. dans un datagrid, j'ai la liste des si&#232;ges r&#233;serv Recuperation de la couleur de fond d'un control pour la mettre dans une cellule Excel [ par asaudemont ] Bonjour a tous,Je souhaite recup&#233;rer la couleur de fond d'un control pour pouvoir la mettre dans une cellule Excel.Qui peux m'aider?&nbsp;&nbsp;& Probleme avec Scale [ par boulacmoi ] Bonjours,J'ai un petit probl&#232;me avec tout ce qui est scale et width, height etc....J'ai cr&#233;er un nouveau control utilisateur, a qui je deman problème de scale [ par boulacmoi ] Bonjours,J'ai un petit probl&#232;me avec tout ce qui est scale et width, height etc....J'ai cr&#233;er un nouveau control utilisateur, a qui je deman control volume du son avec MMcontrol [ par thebrainwasher ] bonjours &#224; tous, voila c'est tout simple comme question j'aurais voulu savoir s'il est possible de controler le volume du son produit avec un MMC


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2013
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,434 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales