begin process at 2012 02 12 12:10:17
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > JAUGE HORIZONTALE PROGRESSIVE AVEC SIGNETS

JAUGE HORIZONTALE PROGRESSIVE AVEC SIGNETS


 Information sur la source

Note :
5 / 10 - par 1 personne
5,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Classé sous :usercontrol, progressbar, ocx Niveau :Initié Date de création :21/09/2005 Date de mise à jour :22/09/2005 23:11:51 Vu / téléchargé :6 301 / 508

Auteur : yannickt

Ecrire un message privé
Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Salut tout l'monde... particulièrement PCPT... j'ai retapé le code, je l'ai beaucoup amélioré, il prend maintenant en charge les minimums... NÉGATIFS! et tout est complètement fonctionnel... bien entendu, il s'agit encore une fois d'une source non complétée... il n'y a donc pas encore de gestion d'erreur ni de fonction très évoluées... Le code est encore un peu nébuleux et brouilon mais la logique est toute commentée... la prochaine étape: le plus de fonctions et d'options possible... et dépôt au propre du contrôle final... d'ici là, voici la dernière version de ma super jauge graduelle... Merci PCPT pour tes conseils... Bonne contuité et bonne prog à tous.

Source

  • Const NbColors As Integer = 16
  • Dim TabColors(NbColors - 1) As OLE_COLOR
  • Private Max As Long
  • Private Min As Long
  • Private nNv As Long
  • Private nns(20) As Long
  • Private sFx As String
  • Public Sub loadSig(sigID As Integer, Optional ByVal Couleur As OLE_COLOR = 0)
  • If Couleur = 0 Then Couleur = TabColors(Int(NbColors * Rnd))
  • Load sig1(sigID)
  • Load sig2(sigID)
  • Load tmrSig(sigID)
  • Load lblSig(sigID)
  • sig1(sigID).Visible = True
  • sig2(sigID).Visible = True
  • lblSig(sigID).Visible = True
  • sig1(sigID).BorderColor = Couleur
  • sig2(sigID).BorderColor = Couleur
  • lblSig(sigID).ForeColor = Couleur
  • End Sub
  • Public Sub unloadSig(sigID As Integer)
  • Unload sig1(sigID)
  • Unload sig2(sigID)
  • Unload tmrSig(sigID)
  • Unload lblSig(sigID)
  • End Sub
  • Public Sub setLmt(nMin As Long, nMax As Long, suffixe As String)
  • Min = nMin
  • Max = nMax
  • sFx = suffixe
  • setSig 0, 0
  • setSig 2, nMax
  • setSig 1, nMin
  • setJau nNv
  • End Sub
  • Public Sub setSig(sigID As Integer, Niveau As Long)
  • nns(sigID) = Niveau
  • tmrSig(sigID).Enabled = True
  • End Sub
  • Public Sub setJau(Niveau As Long)
  • tmrJau.Enabled = True
  • nNv = Niveau
  • End Sub
  • Private Sub tmrJau_Timer()
  • Dim Pt As Long
  • Dim Lc As Integer
  • Dim Pa As Integer
  • Dim Np As Integer
  • Dim Ec As Integer
  • Lc = con.Width 'Maximum pratique (aire de jeu, correspond à la longueur du contrôle)
  • Pa = niv.Width 'Niveau pratique actuel (longueur actuelle, avant calculs, de la barre)
  • Np = Lc * (nNv - Min) / (Max - Min) 'Niveau final pratique (longueur finale de la barre après la série de calculs)
  • Pt = ((Max - Min) / Lc * Pa) + Min 'Niveau théorique actuel (position actuelle entre le minimum et le maximum théorique)
  • If Np < 25 Then Np = 25 'éviter de créer une erreur en faisant disparaitre la barre
  • If Np < Pa Then Ec = (Pa - Np) / (Lc / 100) Else: Ec = (Np - Pa) / (Lc / 100) 'écart pratique positif sur 100 (entre la position actuelle de la barre et la position souhaitée)
  • If Np < Pa Then 'Mouvement négatif (si la nouvelle position de la barre est à gauche de la position actuelle de celle-ci)
  • If Ec < 1 Then Pa = Pa - 1 Else: Pa = Pa - Ec 'Décrémentation graduelle du niveau pratique en y soustrayant l'écart l'écart pratique
  • ElseIf Np > Pa Then 'Mouvement positif (si la nouvelle position de la barre est à droite de la position actuelle de celle-ci)
  • If Ec < 1 Then Pa = Pa + 1 Else: Pa = Pa + Ec 'Incrémentation graduelle du niveau pratique en y additioNivant l'écart l'écart pratique
  • ElseIf Pa = Np Then tmrJau.Enabled = False 'Arrêt du mouvement, (lorsque le niveau final pratique correspond à la position pratique actuelle de la barre)
  • End If
  • niv.Width = Pa 'Attribution de la longueur de la barre
  • lbllvl(0).Caption = Pt & sFx 'Écriture du niveau théorique sur la barre
  • lbllvl(1).Caption = Pt & sFx 'Même chose, mais sur la barre morte
  • End Sub
  • Private Sub tmrSig_Timer(Index As Integer)
  • Dim Nn As Long
  • Dim Pt As Long
  • Dim Lc As Integer
  • Dim Pa As Integer
  • Dim Np As Integer
  • Dim Ec As Integer
  • Nn = Int(nns(Index)) 'Niveau final théorique (position finale souhaitée entre le minimum et le maximum théorique)
  • Lc = con.Width 'Maximum pratique (aire de jeu, correspond à la longueur du contrôle)
  • Pa = sig1(Index).X1 'Niveau pratique actuel (position actuelle, avant calculs, du signet)
  • Np = Lc * (Nn - Min) / (Max - Min) + con.Left 'Niveau final pratique (Position finale du signet après la série de calculs)
  • Pt = ((Max - Min) / Lc * (Pa - con.Left)) + Min 'Niveau théorique actuel (position actuelle entre le minimum et le maximum théorique)
  • If Np < Pa Then Ec = (Pa - Np) / (Lc / 100) Else: Ec = (Np - Pa) / (Lc / 100) 'écart pratique positif sur 100 (entre la position actuelle du signet et la position souhaitée)
  • If Np < Pa Then 'Mouvement négatif (si la nouvelle position du signet est à gauche de la position actuelle de celui-ci)
  • If Ec < 1 Then Pa = Pa - 1 Else: Pa = Pa - Ec 'Décrémentation graduelle du niveau pratique en y soustrayant l'écart pratique
  • ElseIf Np > Pa Then 'Mouvement positif (si la nouvelle position du signet est à droite de la position actuelle de celui-ci)
  • If Ec < 1 Then Pa = Pa + 1 Else: Pa = Pa + Ec 'Incrémentation graduelle du niveau pratique en y additionnant l'écart pratique
  • ElseIf Pa = Np Then tmrSig(Index).Enabled = False 'Arrêt du mouvement (lorsque le niveau final pratique correspond à la position pratique actuelle du signet)
  • End If
  • 'sig1(Index).Left = Pa 'Attribution de la position du signet
  • sig1(Index).X1 = Pa
  • sig1(Index).Y1 = con.Top - 15
  • sig1(Index).X2 = Pa - 105
  • sig1(Index).Y2 = con.Top - 120
  • sig2(Index).X1 = Pa
  • sig2(Index).Y1 = con.Top - 15
  • sig2(Index).X2 = Pa + 105
  • sig2(Index).Y2 = con.Top - 120
  • lblSig(Index).Left = Pa - (lblSig(Index).Width / 2) 'Attribution de la position de l'étiquette du signet
  • lblSig(Index).Top = con.Top + con.Height
  • lblSig(Index).Caption = Pt & sFx 'Écriture du niveau théorique sur l'étiquette du signet
  • sig1(Index).ZOrder 0 'Premier plan
  • sig2(Index).ZOrder 0 'Premier plan
  • lblSig(Index).ZOrder 0 'Premier Plan
  • End Sub
  • Private Sub UserControl_Initialize()
  • 'init tableau couleur aléatoires
  • TabColors(0) = &HFFFFFF 'blanc
  • TabColors(1) = &HC0C0C0 'gris
  • 'pâles
  • TabColors(2) = &HC0C0FF 'rose
  • TabColors(3) = &HC0E0FF 'saumon
  • TabColors(4) = &HC0FFFF 'jaune
  • TabColors(5) = &HC0FFC0 'vert
  • TabColors(6) = &HFFFFC0 'bleu
  • TabColors(7) = &HFFC0C0 'violet
  • TabColors(8) = &HFFC0FF 'mauve
  • 'vifs
  • TabColors(9) = &HFF& 'rouge
  • TabColors(10) = &H80FF& 'orange
  • TabColors(11) = &HFFFF& 'jaune
  • TabColors(12) = &HFF00& 'vert
  • TabColors(13) = &HFFFF00 'bleu clair
  • TabColors(14) = &HFF0000 'bleu foncé
  • TabColors(15) = &HFF00FF 'magenta
  • Randomize 'Time pour aléatoire
  • Max = 100
  • Min = -40
  • sFx = "°C"
  • loadSig 1, TabColors(14)
  • loadSig 2, TabColors(9)
  • setSig 0, 0
  • setSig 1, -40
  • setSig 2, 100
  • setJau -12
  • End Sub
  • Private Sub UserControl_Resize()
  • con.Width = UserControl.Width - lblSig(0).Width
  • con.Left = lblSig(0).Width / 2
  • con.Height = UserControl.Height - 240 - lblSig(0).Height
  • con.Top = 240
  • lblSig(0).Top = 240 + con.Height
  • setSig 0, 0
  • setSig 2, Max
  • setSig 1, Min
  • setJau nNv
  • End Sub
Const NbColors As Integer = 16
Dim TabColors(NbColors - 1) As OLE_COLOR
Private Max As Long
Private Min As Long
Private nNv As Long
Private nns(20) As Long
Private sFx As String

Public Sub loadSig(sigID As Integer, Optional ByVal Couleur As OLE_COLOR = 0)
If Couleur = 0 Then Couleur = TabColors(Int(NbColors * Rnd))
Load sig1(sigID)
Load sig2(sigID)
Load tmrSig(sigID)
Load lblSig(sigID)
sig1(sigID).Visible = True
sig2(sigID).Visible = True
lblSig(sigID).Visible = True
sig1(sigID).BorderColor = Couleur
sig2(sigID).BorderColor = Couleur
lblSig(sigID).ForeColor = Couleur
End Sub

Public Sub unloadSig(sigID As Integer)
Unload sig1(sigID)
Unload sig2(sigID)
Unload tmrSig(sigID)
Unload lblSig(sigID)
End Sub

Public Sub setLmt(nMin As Long, nMax As Long, suffixe As String)
Min = nMin
Max = nMax
sFx = suffixe
setSig 0, 0
setSig 2, nMax
setSig 1, nMin
setJau nNv
End Sub

Public Sub setSig(sigID As Integer, Niveau As Long)
nns(sigID) = Niveau
tmrSig(sigID).Enabled = True
End Sub

Public Sub setJau(Niveau As Long)
tmrJau.Enabled = True
nNv = Niveau
End Sub



Private Sub tmrJau_Timer()
Dim Pt As Long
Dim Lc As Integer
Dim Pa As Integer
Dim Np As Integer
Dim Ec As Integer

Lc = con.Width                                                               'Maximum pratique  (aire de jeu, correspond à la longueur du contrôle)
Pa = niv.Width                                                                'Niveau pratique actuel (longueur actuelle, avant calculs, de la barre)
Np = Lc * (nNv - Min) / (Max - Min)                                        'Niveau final pratique (longueur finale de la barre après la série de calculs)
Pt = ((Max - Min) / Lc * Pa) + Min                                        'Niveau théorique actuel (position actuelle entre le minimum et le maximum théorique)

If Np < 25 Then Np = 25                                                   'éviter de créer une erreur en faisant disparaitre la barre
If Np < Pa Then Ec = (Pa - Np) / (Lc / 100) Else: Ec = (Np - Pa) / (Lc / 100) 'écart pratique positif sur 100 (entre la position actuelle de la barre et la position souhaitée)

If Np < Pa Then                                                               'Mouvement négatif (si la nouvelle position de la barre est à gauche de la position actuelle de celle-ci)

    If Ec < 1 Then Pa = Pa - 1 Else: Pa = Pa - Ec               'Décrémentation graduelle du niveau pratique en y soustrayant l'écart l'écart pratique

ElseIf Np > Pa Then                                                         'Mouvement positif (si la nouvelle position de la barre est à droite de la position actuelle de celle-ci)

    If Ec < 1 Then Pa = Pa + 1 Else: Pa = Pa + Ec              'Incrémentation graduelle du niveau pratique en y additioNivant l'écart l'écart pratique

ElseIf Pa = Np Then tmrJau.Enabled = False                      'Arrêt du mouvement, (lorsque le niveau final pratique correspond à la position pratique actuelle de la barre)
    
End If

niv.Width = Pa                                                                 'Attribution de la longueur de la barre
lbllvl(0).Caption = Pt & sFx                                              'Écriture du niveau théorique sur la barre
lbllvl(1).Caption = Pt & sFx                                               'Même chose, mais sur la barre morte
End Sub

Private Sub tmrSig_Timer(Index As Integer)
Dim Nn As Long
Dim Pt As Long
Dim Lc As Integer
Dim Pa As Integer
Dim Np As Integer
Dim Ec As Integer

Nn = Int(nns(Index))                                                                 'Niveau final théorique (position finale souhaitée entre le minimum et le maximum théorique)
Lc = con.Width                                                               'Maximum pratique  (aire de jeu, correspond à la longueur du contrôle)
Pa = sig1(Index).X1                                                          'Niveau pratique actuel (position actuelle, avant calculs, du signet)
Np = Lc * (Nn - Min) / (Max - Min) + con.Left      'Niveau final pratique (Position finale du signet après la série de calculs)
Pt = ((Max - Min) / Lc * (Pa - con.Left)) + Min   'Niveau théorique actuel (position actuelle entre le minimum et le maximum théorique)

If Np < Pa Then Ec = (Pa - Np) / (Lc / 100) Else: Ec = (Np - Pa) / (Lc / 100) 'écart pratique positif sur 100 (entre la position actuelle du signet et la position souhaitée)

If Np < Pa Then                                                               'Mouvement négatif (si la nouvelle position du signet est à gauche de la position actuelle de celui-ci)

    If Ec < 1 Then Pa = Pa - 1 Else: Pa = Pa - Ec               'Décrémentation graduelle du niveau pratique en y soustrayant l'écart pratique

ElseIf Np > Pa Then                                                         'Mouvement positif (si la nouvelle position du signet est à droite de la position actuelle de celui-ci)

    If Ec < 1 Then Pa = Pa + 1 Else: Pa = Pa + Ec              'Incrémentation graduelle du niveau pratique en y additionnant l'écart pratique

ElseIf Pa = Np Then tmrSig(Index).Enabled = False                      'Arrêt du mouvement (lorsque le niveau final pratique correspond à la position pratique actuelle du signet)
    
End If

'sig1(Index).Left = Pa                                                                  'Attribution de la position du signet
sig1(Index).X1 = Pa
sig1(Index).Y1 = con.Top - 15
sig1(Index).X2 = Pa - 105
sig1(Index).Y2 = con.Top - 120
sig2(Index).X1 = Pa
sig2(Index).Y1 = con.Top - 15
sig2(Index).X2 = Pa + 105
sig2(Index).Y2 = con.Top - 120
lblSig(Index).Left = Pa - (lblSig(Index).Width / 2)     'Attribution de la position de l'étiquette du signet
lblSig(Index).Top = con.Top + con.Height
lblSig(Index).Caption = Pt & sFx                                               'Écriture du niveau théorique sur l'étiquette du signet
sig1(Index).ZOrder 0                                                         'Premier plan
sig2(Index).ZOrder 0                                                         'Premier plan
lblSig(Index).ZOrder 0                                                      'Premier Plan
End Sub

Private Sub UserControl_Initialize()
'init tableau couleur aléatoires
TabColors(0) = &HFFFFFF 'blanc
TabColors(1) = &HC0C0C0 'gris
                'pâles
TabColors(2) = &HC0C0FF 'rose
TabColors(3) = &HC0E0FF 'saumon
TabColors(4) = &HC0FFFF 'jaune
TabColors(5) = &HC0FFC0 'vert
TabColors(6) = &HFFFFC0 'bleu
TabColors(7) = &HFFC0C0 'violet
TabColors(8) = &HFFC0FF 'mauve
                'vifs
TabColors(9) = &HFF&    'rouge
TabColors(10) = &H80FF& 'orange
TabColors(11) = &HFFFF& 'jaune
TabColors(12) = &HFF00& 'vert
TabColors(13) = &HFFFF00 'bleu clair
TabColors(14) = &HFF0000 'bleu foncé
TabColors(15) = &HFF00FF 'magenta

Randomize 'Time pour aléatoire

Max = 100
Min = -40
sFx = "°C"
loadSig 1, TabColors(14)
loadSig 2, TabColors(9)
setSig 0, 0
setSig 1, -40
setSig 2, 100
setJau -12
End Sub

Private Sub UserControl_Resize()
con.Width = UserControl.Width - lblSig(0).Width
con.Left = lblSig(0).Width / 2
con.Height = UserControl.Height - 240 - lblSig(0).Height
con.Top = 240
lblSig(0).Top = 240 + con.Height
setSig 0, 0
setSig 2, Max
setSig 1, Min
setJau nNv
End Sub

 Conclusion

Voici la version fonctionnelle "contrôle" ainsi que l'interface de test du code... il n'y a pas de gestion d'erreur, encore, alors soyez prudent lors de vos manoeuvres... MERCI beaucoup à PCPT pour ses astuces... Ma source vaut maintenant la mention initié... hein PCPT ;) Bonne continuité et bonne prog à tous!

 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

21 septembre 2005 09:05:54 :
Quelques petites erreurs se sont glissées dans le code... je l'ai mis à jour
21 septembre 2005 18:27:50 :
Conseil d'un autre utilisateur...
22 septembre 2005 09:46:59 :
Révision de la source
22 septembre 2005 23:11:51 :
Début de mise en contrôle...

 Sources du même auteur

SYNCHRONISATION HORRAIRE (HORLOGE ATOMIQUE) AVEC GESTION DE ...

 Sources de la même categorie

Source avec Zip TEXTBOX EN NUMÉRIQUE par 320C
Source avec Zip DÉCIMAL TO HEXDECIMAL par loulou27200
SOUS-TITRES : INCRÉMENTATION DE TOUTES LES CHAÎNES DE CARACT... par ALMIRA
Source avec Zip Source avec une capture EVALUER UN NOMBRE D'OBJETS AVEC UNE BALANCE ET DEUX ÉCHANTIL... par lexsty
Source avec Zip Source avec une capture PETIT LOGICIEL DE DEVIS SANS BD par lololilizozo

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture VU-MÉTRE À AIGUILLE par epson1
Source avec Zip Source avec une capture UN OCX PASSE-PARTOUT POUR LA SÉLECTION D'UNE COULEUR par lermite222
Source avec Zip Source avec une capture OCX PROGRESSBAR SANS FIN PARAMÉTRABLE par tbbuim1
Source avec Zip Source avec une capture CONTROLE PERSO (*.CTL) --> PROGRESSBAR STYLÉE XP TRÈS PERSON... par violent_ken
Source avec Zip OCX POUR IMPRIMER DES DONNÉES DANS DES GRILLES par jmberriot

Commentaires et avis

Commentaire de yannickt le 21/09/2005 08:53:34

Les questions et le commentaires constructifs et pertinents sont les bienvenus!

Yannick

Commentaire de PCPT le 21/09/2005 13:12:50 administrateur CS

salut,
le code est vraiment à revoir.
aucune indentation, des lignes inutiles
ex :

If (nn - (100 / con.Width * niv.Width)) < 1 Then niv.Width = niv.Width + 1: GoTo fin
niv.Width = niv.Width + (nn - (100 / con.Width * niv.Width)): GoTo fin

avec un fin: juste en dessous

le ELSE sert à çà ;)

des OnError partout.... (pas une vrai gestion çà)

la jauge à 0 ou 99 n'est pas correcte
tu n'as pas géré l'erreur du Load(5) si plusieurs fois

bref, bcp de boulot encore.
mais pour ta défense, le résultat est plutôt pas mal, même si j'ai du mal à en voir réellement l'application et l'utilité.

tu devrais également gérer par exemple ces fameux Load par un menu (pour ne pas en ajouter qu'un seul)
régler ce problème de graduation incorrecte
nommer tes contrôles !!!!
pouvoir bouger manuellement les signets (à la souris, drag & drop), çà serait bien plus sympa ;)

je note pas, y'a du boulot.

ah, et si tu ne veux pas trop te faire charpiller, petit conseil, ne laisse pas le code en "initié"

j'attend la suite et une réponse sur "mais pourquoi l'intégrer à un projet" (utilité)

++ bon courage
PCPT

Commentaire de yannickt le 21/09/2005 18:39:07

he bien, he bien, he bien... je crois mon cher PCPT que tu n'as pas lu ou j'ai écris que ce n'étais effectivement pas complété, qu'il y avait place à amélioration et que ça été fait en 20 mins.... bien entendu, je reçois tes conseils concernant le code (rappel: vite fait) Je n'ai effectivement pas eu le temps de revoir le code, mais la logique complèxe est là et je crois toujours que c'est de niveau initié quoique pour te faire plaisir, j'aie changé le niveau... Pour ce qui est du l'utilité, principalement pour du "monitoring", ce qui serait probablement très utile pour un ingénieur... du reste, le code que vous avez actuellement est une étape dans la conception, les autres sont bien définies dans la description, je travaille actuellement dessus à temps morts...

Je m'excuse de vous avoir livré un fouilli de code, mais c'est une étape "fonctionnelle" de mon projet, Merci de ton commentaire, PCPT.

Commentaire de PCPT le 21/09/2005 19:06:21 administrateur CS

he bien, he bien, he bien... mon cher YannickT, en effet, je n'ai pas vu (et ne vois toujours pas) que ce code a été fait en un laps de temps "déterminé", mais si j'avais pensé qu'il était terminé, je n'aurais pas dit qu'il restait du boulot et que j'attendais la suite, mais que c'était un projet incomplet méritant un mauvaise note.

tu demandes des commentaires constructifs et pertinants, je le crois au moins constructif.
pertinant, dire qu'un contrôle nommé est préférable, rien de bien pertinant, mais ce n'est pas ce qui prend le plus de temps dans un projet... (si?)

qu'il soit incomplet n'est pas un problème, c'est justement le but de demander un avis préalable pour l'améliorer....

pour le niveau, pour être honnête, çà me fait une belle jambe. met comme il te plaît. ce qui est certain, c'est que le lecteur qui ne fera que survoler ta source sera encore plus sévère avec un niveau disproportionné

pour l'utilité de ce contrôle, je n'arrive toujours pas à me le représenter.
je répère, contrôle intéressant, effet réussi.

bonne continuation
PCPT

Commentaire de yannickt le 21/09/2005 19:38:31

hehe... je le termine et je te l'envoies personnellement à ton courriel... Pour ce qui est de la nomenclature des contrôles (textbox, commandbutton, etc) il s'agit de contrôles temporaires avec lesquels je test mon code, ils n'y seront plus lorsque le programme sera un contrôle, et pour l'utilité, c'est tout simplement une version améliorée de la barre de progression... juste pas terminé... Merci encore pour ton commentaire.

Commentaire de yannickt le 22/09/2005 09:49:45

Bon... j'ai bûché fort pour sortir cette révision, mais bon, j'espère qu'elle vous plaiera...

Commentaire de PCPT le 22/09/2005 12:20:13 administrateur CS

salut,
prise en compte des valeurs négatives, très bien.

j'ai regardé le code d'un peu plus près, voici une petite amélioration possible.
principe : aléatoire sur les couleurs des signets supplémentaires
pratique :


' *- déclaration -*
Const NbColors As Integer = 15
Dim TabColors(NbColors) As OLE_COLOR

' *- form Load -*
'(...)
'init tableau couleur aléatoires
TabColors(0) = &HFFFFFF 'blanc
TabColors(1) = &HC0C0C0 'gris
                'pâles
TabColors(2) = &HC0C0FF 'rose
TabColors(3) = &HC0E0FF 'saumon
TabColors(4) = &HC0FFFF 'jaune
TabColors(5) = &HC0FFC0 'vert
TabColors(6) = &HFFFFC0 'bleu
TabColors(7) = &HFFC0C0 'violet
TabColors(8) = &HFFC0FF 'mauve
                'vifs
TabColors(9) = &HFF&    'rouge
TabColors(10) = &H80FF& 'orange
TabColors(11) = &HFFFF& 'jaune
TabColors(12) = &HFF00& 'vert
TabColors(13) = &HFFFF00 'bleu clair
TabColors(14) = &HFF0000 'bleu foncé
TabColors(15) = &HFF00FF 'magenta

Randomize 'Time pour aléatoire
'(...)

'(et Load 1 et 2 sont devenus "loadSig 1, TabColors(14) 'vbBlue"
"loadSig 2, TabColors(9) 'vbRed")



' *- loadSig -*
Public Sub loadSig(sigID As Integer, Optional ByVal Couleur As OLE_COLOR = 0)
'(...)
If Couleur = 0 Then Couleur = TabColors(Int(NbColors * Rnd))
'(puis tes 2 Load normaux)


' *- command3 (appel Load Signet) -*
loadSig txtsig, 0
setSig txtsig, txtns




encore du boulot, mais c'est vraiment pas mal ;)

modification possibles en ocx:
*éventuellement écrire le texte (pas en label) + pouvoir le placer (right left center) + Font
*choisir couleur de fond (même si j'aime le noir ;))
*pouvoir étirer ou rétrécir, au moins en longueur
*menu contextuel sur le contrôle, mais tout dépend de l'utilité...
*signets personnalisés


toujours pas noté ;)
bon boulot, bonne continuation
++
PCPT

Commentaire de yannickt le 22/09/2005 18:58:56

Hoooo.... franchement t'as de la suite dans les idées, mon cher PCPT... je vais faire les modifications... merci beaucoup pour tes recommendations... j'avais pas pensé à écrire directement sur images! t'es fort! Merci encore...

Commentaire de PCPT le 22/09/2005 19:16:19 administrateur CS

re,
je viens de m'apercevoir d'un petite bétise :
pour l'exemple, il y a 16 couleurs, donc logiquement :

' *- déclaration -*
Const NbColors As Integer = 16
Dim TabColors(NbColors-1) As OLE_COLOR

' *- loadSig -*
(...)...= TabColors(Int((NbColors-1) * Rnd))

et bien sûr, le principe de mettre un "Optionnal", c'est d'appeler :
' *- command3 (appel Load Signet) -*
loadSig txtsig 'pas besoin de préciser "0"
'(...)


tout restait correct, mais bon^^

@+
PCPT

Commentaire de yannickt le 22/09/2005 23:14:07

Bon... mon cher PCPT, j'ai ajouté ta fonction, et j'ai commencé à l'intégrer dans un controle qui est somme toutes assez fonctionnel, et j'irais même jusqu'à dire, prêt à l'emploi, mais bon, il demeure que rien n'est parfait et il y a encore de nombreuses choses à finaliser... Merci encore

Commentaire de Adn56 le 11/08/2009 09:22:38 5/10

testé sous .Net :
Couleur des Sig ne marche pas, le redimensionnement du control non plus (le fait de passer par un bitmap peut être ?), une erreur lors de la pause sur la form, mais apres il roule.
Code Ex :
    Dim i As Integer = 0

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'limite min, max et légende
        AxUserControl11.setLmt(0, 100, "°C")
'position des Signets
        AxUserControl11.setSig(0, 10)
        AxUserControl11.setSig(1, 50)
        AxUserControl11.setSig(2, 90)
        AxUserControl11.loadSig(3, 2) ' reste toujours noir qq soit la valeur ou rouge si aucune valeur de tapé.

        Timer1.Enabled = True
    End Sub

    Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
'incrémente la jauge
        If i < 100 Then i = i + 2
        AxUserControl11.setJau(i)
' fait bouger le signet 4
        If i < 50 Then
            AxUserControl11.setSig(3, 2 * i)
        Else
            AxUserControl11.setSig(3, i / 2)
        End If

    End Sub
Pour ce qui est de l'utilité, cela peu permettre d'afficher plusieurs valeur (grace au signet) sur un seul bargraph. Ex °C,Hygro,Pression. Dommage qu'il soit si vérouillé niveau paramétres (pas possible de l'avoir vertical par exemple)
@++

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

MSCOMCTL.OCX [ par zekmek ] Depuis que j'ai rajouté une progressbar dans mon form j'ai ce message qui se lance a l'execution... MSCOMCTL.OCX; en effet pour inclure ma progressbar Ocx et propriété [ par Cartman ] Je cherche à utiliser la propriété ItemData d'un listebox que g créé dans un UserControlvoila ce que g fait dans mon Let et je c pas quoi mettre comme Une Form dans un ActiveX (OCX) [ par Lolux ] Bonjour, Je suis en train de créer un ActiveX qui contient :Une FormUn ModuleUn UsercontrolMa form et une sorte de fenêtre d'option qui doit permettre OCX - USERCONTROL - ENTREES/SORTIES [ par salazar ] J'ai créé indépendemment 2 usercontrols. Le 1er a 2 variables d'entrées/sortie et le 2ème en a également 2.A partir des 2 codes sources, j'ai généré 2 Diffusion usercontrol ocx [ par RMamat ] Bonjour Je cherche a savoir comment faire pour diffuser une librairie ocx.Voici mon probleme: j'ai fais un usercontrol. Ce usercontrol est comporte u SOS URGENT comment obtenir de nouveau ocx pour les progressbar [ par Sytchev3 ] Comment puis je trouver d'autres ocx pour les progressbar afin de changer les carr&#233; ou la progression en continuMerci de ma r&#233;pondre Très urgent compiler mon usercontrol.... [ par lex1111 ] Salut, j'aimerais compiler le usercontrole que j'ai trouvé sur vbfrance et que j'ai modifié un peu...J'aimerais le passer de ".ctl" a ".ocx" pour le j ActiveX Usercontrol [ par thierry00191 ] Bonjour &#224; tous,Je suis nouveau &#224; la programmation sur vb6 et plus particuli&#232;rement sur les activeX. Voici mon soucis:Je dois programmer Quelle difference entre Me et Usercontrol a l'interieur d'un OCX ? [ par jimmypage64 ] Bonjour, Quand je suis dans le code de mon controle OCX j'ai l'impression que Me et Usercontrol ne sont pas le même object. Par exemple Me.hdc ne co fermeture d'un ocx [ par pointdalattitude ] Bonjour,Je voulai savoir si c'&#233;tait possible de fermer mon control activex avec un bouton de commande.J'ai essayer en placant un CommandButton su


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 0,702 sec (3)

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