Le forum (ô combien francophone) des utilisateurs de Powerbuilder.





Bonjour,
Je suis confronté à un étrange problème que je ne parviens pas à résoudre.
J'ai une datawindow sans procedure : elle sert uniquement à récolter des données. Dans cette dernière il y a une colonne qui est visible comme un champ de saisie.
Ce champ correspond à un montant, donc je veux lui appliquer les règles suivantes :
- si le champ est vide, il prend 0
- si le champ vaut 0, il reste à 0
- la valeur peut-être positive ou négative
- la valeur tient sur 5 chiffres
Exemples :
10
0
99999
-555
Via le painter, je vais dans l'onglet 'Edit' du champ.
La propriété 'Style type' prend 'EditMask'
La propriété 'Mask' prend '####0'
Tout fonctionne parfaitement, sauf dans un cas très particulier :
- si l'utilisateur supprimer le contenu du champ avec les touches backspace ou del, il prend 0 (c'est bien ce que je souhaite)
- si l'utilisateur saisi tout le contenu du champ avec sa souris (surligne en bleu) et entre le chiffre 0, puis qu'il valide en cliquant ailleurs, alors le champ reprend sa valeur précédente o_O
J'ai été regardé mes itemchanged() et itemfocuschanged() events, mais le retour à la valeur précédente se fait avant qu'ils ne soient déclenchés. C'est bien le masque qui pose soucis.
J'ai testé le masque '#####' mais ca ne me convient pas : si l'utilisateur n'entre pas de valeur, alors le champ reste vide et ne prend pas la valeur 0. Par contre je peux alors lui specifier un format du type "##,##0;##,##0;##,##0;##,##0". Cela fonctionne mais dès que mon champ reprend le focus, alors il devient à nouveau vide.
Voyez-vous une solution, notamment par un masque ?
Merci pour vos conseils.
Dernière modification par Nyphel (03-07-2008 17:28:54)
Hors ligne
salut,
c'est pas une histoire d'acceptext() ca ?

Hors ligne








DW externe alors ?
Quelle est le type de données de ta colonne ?
Numérique ?
Hors ligne





Oui en effet j'ai une sheet dans laquelle je place cette datawindow.
Le type de mes données est bien numérique. (J'ai testé avec un type nummber et un decimal (2))
Je précise aussi que ca ne survient que lorsque je surligne et que je tappe le chiffre 0. Si je tappe un autre chiffre (1-9) alors ca fonctionne correctement, et le chiffre restera bien affiché dans mon champ.
Dernière modification par Nyphel (04-07-2008 08:40:55)
Hors ligne