B4J Library [B4X] [XUI] xGauges and xGaugesRect Classes and Libraries

sultan87

Active Member
Licensed User
Longtime User
Bonsoir Klaus
mon fichier .zip semble trop gros
comment faire pour que vous puissiez le voir
Pierre
Bonsoir Klaus
j'ai éliminé les fichiers inutiles
ci-joint mon projet
Pierre
 

Attachments

  • Mon-Projets.zip
    18.3 KB · Views: 80

klaus

Expert
Licensed User
Longtime User
je n'ai pas reçu votre adresse email personnelle sur sultan87@free.fr ou p.m.chevalier@free.fr
Je l'ai envoyée par mail privé dans le forum, tu dois le trouver ici:

J'ai regardé ton programme, mais il manque un module Sous_Prog et un module Attente !?
Il y a aussi un object WhorlView, je ne connais pas.

En ouvrant le Designer, je reçois un message que les fichiers layout sont manquants.
Je ne peux donc rien tester.
 

sultan87

Active Member
Licensed User
Longtime User
Merci Klaus
j'installe le .zip sur mon ordinateur
je corrige et je t'envoie un nouveau .zip sans anomalie
Pierre
 

sultan87

Active Member
Licensed User
Longtime User
Bonjour Klaus
je pense avoir trouver le pourquoi l'aiguille reste positionnée sur 0
je change la couleur de l'aiguille en fonction de la température
B4X:
Sub Color_Needle(Temp As Double)
    If Temp <= 18 Then
        lbltemp.TextColor = Colors.blue
        Thermometre_Rond.NeedleColor = Colors.Blue
    End If
    If Temp > 18 And Temp <= 25 Then
        lbltemp.TextColor = Colors.Green
        Thermometre_Rond.NeedleColor = Colors.Green
    End If
    If Temp > 25 Then
        lbltemp.TextColor = Colors.Red
        Thermometre_Rond.NeedleColor = Colors.Red
    End If
End Sub

l'instruction
B4X:
Thermometre_Rond.NeedleColor = Colors.Blue
active le sous programme
B4X:
Public Sub setNeedleColor(NeedleColor As Int)
    cNeedleColor = NeedleColor
    ReInitialize
End Sub

avant la ligne de code 'ReInitialize' la flèche est bien postionnée
à l'exécution de 'ReInitialize' la flèche se repositionne sur 0

j'ai mis en commentaire cette ligne de code et cela fonctionne

est ce la solution

je regarde sur les gauges H et V

Pierre
 

sultan87

Active Member
Licensed User
Longtime User
Bonjour Klaus
je pense avoir trouver le pourquoi l'aiguille reste positionnée sur 0
je change la couleur de l'aiguille en fonction de la température
B4X:
Sub Color_Needle(Temp As Double)
    If Temp <= 18 Then
        lbltemp.TextColor = Colors.blue
        Thermometre_Rond.NeedleColor = Colors.Blue
    End If
    If Temp > 18 And Temp <= 25 Then
        lbltemp.TextColor = Colors.Green
        Thermometre_Rond.NeedleColor = Colors.Green
    End If
    If Temp > 25 Then
        lbltemp.TextColor = Colors.Red
        Thermometre_Rond.NeedleColor = Colors.Red
    End If
End Sub

l'instruction
B4X:
Thermometre_Rond.NeedleColor = Colors.Blue
active le sous programme
B4X:
Public Sub setNeedleColor(NeedleColor As Int)
    cNeedleColor = NeedleColor
    ReInitialize
End Sub

avant la ligne de code 'ReInitialize' la flèche est bien postionnée
à l'exécution de 'ReInitialize' la flèche se repositionne sur 0

j'ai mis en commentaire cette ligne de code et cela fonctionne la flèche est bien positionnée mais la couleur ne change pas

sur les gauges H et V le signet est bien positionné et la couleur est correcte

Pierre
 

klaus

Expert
Licensed User
Longtime User
Quel est le code lorsque tu changes la valeur avec Thermometre_Rond.Value = Temp ?
J'ai essayé avec ce code, et ça fonctionne.

B4X:
    If Value < 80 Then
        xGaugeRectV.NeedleColor = xui.Color_Green
        xGauge2.NeedleColor = xui.Color_Green
    Else
        xGaugeRectV.NeedleColor = xui.Color_Red
        xGauge2.NeedleColor = xui.Color_Red
    End If
    xGauge2.Value = Value
    xGaugeRectV.Value = Value

If faut changer la couleur avant de changer la valeur.
 

sultan87

Active Member
Licensed User
Longtime User
le code utilisé est dans le sub Sub Color_Needle(Temp As Double) vue plus haut
effectivement je change la valeur avant de changer la couleur
je suis tes conseils et j'essaye
Pierre
 

sultan87

Active Member
Licensed User
Longtime User
le code utilisé est dans le sub Sub Color_Needle(Temp As Double) vue plus haut
effectivement je change la valeur avant de changer la couleur
je suis tes conseils et j'essaye
Pierre
Merci Klaus
j'ai appliqué tes conseils et cela fonctionne correctement avec xgauge3
sur xgaugerecth et xgaugerectv il est possible de déplacer les 2 curseurs
je voudrais récupérer la valeur de ces curseurs lorsque je les déplace
pourrait on également déplacer le curseur de température manuellement
encor merci de ton aide précieuse
Pierre
 

klaus

Expert
Licensed User
Longtime User
je voudrais récupérer la valeur de ces curseurs lorsque je les déplace
Ce sera fait.

pourrait on également déplacer le curseur de température manuellement
De quel curseur parles-tu ?
De l'aiguille qui indique la valeur ?
Si c'est ça, je ne vois pas quelle en serait l'utilité.
 

sultan87

Active Member
Licensed User
Longtime User
Merci Klaus
oui c'est le curseur qui indique la valeur
tout simplement pouvoir modifier ces 3 curseurs de la mème façon et ne plus avoir les bouton + et -
Pierre
 

klaus

Expert
Licensed User
Longtime User
Désolé, mais je ne comprends pas pourquoi tu veux déplacer l'aiguille avec les doigts ?
Je fais une différence entre les deux curseurs indiquant des limites ou valeurs de référence et l'aiguille indiquant la valeur actuelle d'une mesure.
C'est comme sur un appareil électromécanique, où on peut déplacer manuellement des curseurs mais pas l'aiguille.
Pour ajouter des fonctions dans une bibliothèque, je dois être convaincu de leur utilité.
Pour les curseurs c'est bon, j'ai déjà ajouté un évènement qui est généré lors du déplacement d'un curseur.
 

sultan87

Active Member
Licensed User
Longtime User
Bonjour Klaus
ce n'est pas déplacer l'aiguille mais le curseur sur gauge H ou V
merci pour la gestion des évènements générés lors du déplacement d'un curseur
comment faire pour les utiliser
je gère à distance le chauffage avec un module commercialisé par les italiens
ce module intercepte des sms qui permet de dire quelle température on veut dans la maison
si la température de la maison est inférieure à la température le module Comelec met en route la chaudière
jusqu'à présent dans mon appli B4A j'avais 3 modules
1 - modification de la température demandée
2 - modification de la température mini
3 - modification de la température maxi

les gauges H ou V permettent de modifier les températures Mini et Maxi
faire la mème chose pour la température me permettrait de n'avoir qu'un seul module au lieu de trois
j'espère m’être fait comprendre
je te joins le tuto du Comelec

merci de ton aide
 

Attachments

  • Comelec.pdf
    309.8 KB · Views: 76

sultan87

Active Member
Licensed User
Longtime User
Bonjour Klaus
tu me disais
Pour les curseurs c'est bon, j'ai déjà ajouté un évènement qui est généré lors du déplacement d'un curseur.
comment faire pour l'utiliser
je vois dans tes messages précédents sultan87 said. comment faire la mème chose pour reprendre ce que tu as dit précédemment
Pierre
 

klaus

Expert
Licensed User
Longtime User
Désolé, mais j'ai raté ton message de samedi.

Pour les curseurs j'ai ajouté des évènements, mais pas encore publié.
Ci-joint, la bibliothèque version 1.3 avec les évènements.

Le code pour l'évènement lorsqu'un des curseurs est déplacé :
B4X:
Private Sub xGaugeRectV_CursorValueChanged(CursorIndex As Int, CursorValue As Double)
    Log("Cursor : " & CursorIndex & " value = " & CursorValue)
End Sub

Sinon tu peux accéder aux valeurs des curseurs avec ces propriétés :
B4X:
    ValeurCurseur1 = xGaugeRectV.CursorValue
    ValeurCurseur2 = xGaugeRectV.Cursor2Value

faire la mème chose pour la température me permettrait de n'avoir qu'un seul module au lieu de trois
Je n'ai toujours pas bien compris ton problème, avec trois modules.
C'est quoi ces trois modules ?
Les GaugeV et GaugeH ne sont que des afficheurs et ne régulent rien.
Les deux curseurs ne sont que des indicateurs visuel pour des limites.
Si tu veux une 3ème valeur ça veut dire que tu aimerais un troisième curseur.
Et ça ne fait, en principe, pas partie d'un appareil d'affichage.

Si j'ai bien compris, sur le module Comelec tu peux définir 3 températures.
1. Température désirée
2. Température min.
3. Température max.

Est-ce que ça veut dire que tu définis la température désirée et s'il y a un problème avec le chauffage tu reçois une alarme si la température effective est en dessous ou en dessus d'une des limites ?
 

Attachments

  • xGaugesRect.b4xlib
    8.2 KB · Views: 60

sultan87

Active Member
Licensed User
Longtime User
merci Klaus
Le code pour l'évènement lorsqu'un des curseurs est déplacé fonctionne bien
je n'avais pas optimisé mon projet et j'avais donc créé 3 modules chacun modifiant les températures demandée, maxi, mini
je modifie le projet pour n'avoir qu'un module
sur xgaugesRectV ou xgaugesRectH je récupère les valeurs des curseurs pour les températures mini et maxi
je voudrais donc faire la mème chose avec le curseur qui me permettrai de modifier la température demandée(défini avec la propriété Needle)
Pierre
 

sultan87

Active Member
Licensed User
Longtime User
lorsqu'on déplace les curseurs les valeurs changent donc une multitude de log ou de récupération de valeur
serait il possible de récupérer la valeur seulement lorsqu'on lâche le curseur et peut être lui donner un pas de déplacement ???
 

klaus

Expert
Licensed User
Longtime User
lorsqu'on déplace les curseurs les valeurs changent donc une multitude de log ou de récupération de valeur
serait il possible de récupérer la valeur seulement lorsqu'on lâche le curseur
Oui, bonne idée.
Fait pour la prochaine mise à jour.
J'ai finalement ajouté un 3ème curseur qui satisfait tes besoins.
Modifier l'aiguille n'a pas de sens pour moi.
Je trouve aussi intéressant d'ajouter un pas pour le déplacement des curseurs.
Mais ça demande un peu plus de réflexion sur comment l'implémenter de manière 'universelle' pour toutes les configurations possibles.
Laisse moi un peu de temps.
Actuellement je suis assez occupé, mon épouse est à l’hôpital, fémur cassé, don je m'occupe de tout.
 

sultan87

Active Member
Licensed User
Longtime User
ok merci
ce n'est pas urgent
comment faire l'encart sultan87 said: qui reprend une partie des messages précédents
bon rétablissement pour ton épouse
Pierre
 
Cookies are required to use this site. You must accept them to continue using the site. Learn more…