Gambas France BETA


Pas de compte ? Incription

Un slider un peu têtu...

1
AuteurMessages
Foromus#1 Posté le 1/2/2011 à 20:29:00
Bonjour,

Sur mon formulaire, j'ai plusieurs sliders. Leur "value" est enregistrée dans un fichier. Normalement, à l'ouverture, je récupère les valeurs en lisant le fichier, après quoi, je les propose aux sliders pour que le curseur se positionne.
En suivant pas à pas, je remarque que dès la valeur proposée, le programme va vers la procédure du contrôle concerné, en général, il se passe deux voyages, comme si on avait cliqué sur le contrôle pour obtenir une autre valeur, après quoi, le programme continue. Or, et bizarrement, si tout se passe bien pour tous ou presque, le dernier en date sur mon formulaire - rajouté ce matin - me fait des caprices. Bref, les valeurs du fichier impliquent bien un aller-retour sur tous, sauf sur le dernier, et la plupart du temps, rien ne se passe. Je ne vois pas pourquoi ça marcherait pour tous ... sauf un !
J'avais cru solutionner le problème en mettant une valeur quelconque (au lieu de 0 par défaut) dans la propriété "Value" du contrôle, ce qui n'a aucune importance dans ce cas puisqu'elle sera immédiatement remplacée par celle lue dans le fichier. A première vue, ça à marché, à seconde vue, ça marche ... quand ça a le temps... Vous me direz que je n'en ai rien à faire, vu que la valeur dont j'ai besoin est bien là puisque trouvée dans le fichier, mais seulement voilà, dans ma procédure, en plus de récupérer la valeur, je l'affiche dans un label. Et naturellement, si le déroulement ne passe pas par la routine en question, rien n'est affiché.
Il y a probablement une erreur quelque part, cependant, ce dernier slider a été posé tout simplement par copie d'un qui était, et est toujours, déjà en place - donc, les caractéristiques sont les mêmes, à part le nom et les valeurs qui ont été changés, mais c'est tout.
C'est juste pour l'étiquette, je trouve ce truc très désagréable, et ça fait désordre...
Une idée ?...
spheris#2 Posté le 2/2/2011 à 23:00:00
Foromus,
J'ai saisi l'idée générale de ton problème.
pourrais-tu l'agrémenter de lignes de code pour voir où est ton erreur ?
D'avance merci.
;) ;)
Foromus#3 Posté le 3/2/2011 à 09:04:00
J'ai contourné le problème, mais pas résolu. J'explique :
Au démarrage du projet, je lis MonFichier. Je récupère MaValeur (integer)
Ensuite, et sur la page concernée je pose :

1
Slider.Value = MaValeur


Ceci bien entendu pour que le curseur se positionne là où il correspond à la valeur.
Dans ma procédure, je récupère MaValeur, ce qui est normal, car elle a pu être modifiée par ledit, et je l'affiche dans un label, donc :

1
PUBLIC SUB Slider_Change() Mavaleur = Slider.Value Label.txt = MaValeurEnd


Rien que du banal, donc, mon code, c'est exactement ça, (aux noms près)

Seulement voilà, MaValeur doit varier entre 50 et 250. J'ai donc renseigné les propriétés Max et Min de mon Slider, respectivement à 250 pour le Max, à 50 pour le Min. Et là, ca coince, c'est-à-dire que quand le programme démarre, la procédure ci-dessus n'est pas visitée, donc, mon Label.txt pas renseigné. Je pourrais passer outre puisque la variable quant à elle est bien renseignée, du fait que je l'ai récupérée dans MonFichier, mais je n'aime pas, le label qui reste à zéro, ça fait désordre, d'autant que j'en ai cinq autres à côté qui, eux, sont bien renseignés.
En désespoir de cause, j'ai changé les contrôles, modifié tout ce que j'ai pu, rien n'y faisait. Puis en posant un slider sur ma feuille, comme ça, brut de décoffrage, je me suis aperçu que lui, était réceptif... Tiens donc ?.... Que je le complète avec les consignes désirées, et il ne l'était plus... Résultat concret et résumé : quand la propriété Min est à 0 (zéro), ça va, quand elle est à 50, ça ne va plus... Etrange, non ?...

Pour l'instant, je fais une addition ou une soustraction de 50 entre MaValeur et Slider.Value, comme ça, ça fonctionne... Mais franchement, c'est ridicule...
(J'espère avoir été précis...)
spheris#4 Posté le 5/2/2011 à 11:11:00
Foromus,

Vu ce que tu me décris, cela ressembla à une erreur de type de données.
car lorsque tu additionnes ou soustrais 50 tu convertis implicitement tes données string en integer

En effet, la valeur d'un slider est de type INTEGER alors que lire des données dans un fichier est de type STRING.
tu dois faire la conversion au passage pour tous tes slider comme ceci :

1
slider.value = CInt(mavaleur)


Essaye cela et tiens nous au courant.
A bientôt
;) ;)
Foromus#5 Posté le 5/2/2011 à 11:37:00
Bonjour,

OK, je vais essayer, cela dit :
J'ai 5 autres sliders qui fonctionnent exactement dans les mêmes circonstances, qui utilisent d'ailleurs le même fichier et les mêmes types de variables (integer). Mes valeurs sont déclarées de type Integer, comme je viens de ledire, et elles se valorisent dès la lecture du fichier, donc, en supposant que les données du fichier soient de type String, le simple fait de les affecter à une donnée de type Integer devrait les "convertir".
Par ailleurs, c'est le fait de mettre le Min à 50 qui me donne le problème, le mettre à 0 me l'occulte. Un minimum de logique m'incline à penser que le souci se trouve plutôt du côté du contrôle que de la déclaration de la variable !.. Mais je reconnais humblement que je n'en sais rien.
J'aimerais avoir des témoignages de personnes qui ont utilisé un slider dans ces circonstances (Min > 0), je crois que cela pourrait être intéressant.
spheris#6 Posté le 6/2/2011 à 17:57:00
Foromus,
Je vais faire un petit projet pour essayer de reprduire ton souci.
Quelle est la version 2 de Gambas que tu utilises ?
;) ;)
spheris#7 Posté le 6/2/2011 à 20:36:00
Foromus,
voici mon projet. Aucun souci apparent.
http://gambaslinux.eg2.fr/img/heberger/unslider-0.0.2.tar.gz
charge le fichier valeurslider puis les sliders se mettront à la bonne valeur. Change la valeur des sliders et enregistre le résultat. Relis les, il n'y a pas de souci.
information :
je travaille avec qt et non gtk sur gb version 2.22.
;) ;)
Foromus#8 Posté le 8/2/2011 à 21:17:00
Bonsoir,

Par curiosité, j'ai passé mon projet sous qt, alors qu'il est établi en gtk. Je ne sais pas trop si je dois employer l'un ou l'autre. Si j'en juge par les "aides" qui s'affichent, le qt semble beaucoup plus complet que le gtk.
Vite fait comme ça, j'ai décoché gtk et coché qt résultat : j'ai plein de choses qui fonctionnent mal ou plus du tout, le graphisme n'est plus le même. Je suppose que, une fois démarré sur un option, on la garde définitivement !

Je vais approfondir la question dans les prochains jours...

Merci pour l'aide, je ne mets pas Résolu, puisque ça ne l'est pas vraiment, mais je pense qu'il n'est peut-être pas nécessaire d'insister sur le sujet !
(Je pourrais mettre [Abandon], j'aime bien, ça change...)
gambix#9 Posté le 23/4/2011 à 17:10:00
Faire simple !
Vite fait comme ça, j'ai décoché gtk et coché qt résultat : j'ai plein de choses qui fonctionnent mal ou plus du tout, le graphisme n'est plus le même. Je suppose que, une fois démarré sur un option, on la garde définitivement !


Oui en gb2, non en gb3
Moins de texte dans une signature c'est agrandir son espace.
1