Saisie numérique avec alignement à doite

Résolu
dalatifa Messages postés 22 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 2 octobre 2007 - 18 août 2005 à 12:55
dalatifa Messages postés 22 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 2 octobre 2007 - 22 août 2005 à 13:38
Salut tt le monde , j'ai besoin d'utiliser une zone de texte où l'utilisateur peut saisir que des chiffres alignés à droite, j'ai essayé edit il n'a pas la propriété alignement, et si j'utilise BIDIMODE il influence sur les flèches de direction , ce n'est vraiement pas impécable, j'ai essayé trichedit son prob c'est qu'il fait des retours en lignes automatiquement.
alors,vous avez une solution pr moi SVP? j'en ai vraiement besoin.
MERCI

9 réponses

jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
18 août 2005 à 22:46
je nee comprends pas chez moi ça marche, j'ai quand meme légèrement
modifier le code en faisant toutes les opérations sur "buffer"

procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);

const Valid = #13, '0'..'9';

var buffer:string;

begin

with sender as Tmemo do

begin

buffer:=lines[0];

if length(buffer)=10 then key:=#0; //on limite la saisie

if key='-' then

begin

buffer:= lines[0];

if buffer='' then buffer:='0';

if buffer<>'0' then

begin


if pos('-',buffer)=0 then buffer:='-'+buffer

else delete(buffer,1,1);

end;

lines[0]:=buffer;key:=#0;

end;

if not(key in valid) then key:=#0;

if key=#13 then

begin


key:=#0;// pour l'exemple rajoute ici ton traitement de donnée

end;

end;



end;

une chose, j'ai constaté que si les lines du memo étaient
initialisées par défaut la limitattion ne faisait pas toujours effet
donc: dans l'éditeur il faut initialiser les lines du memo sans
retour a ligne (tu effaces tout) et si tu rentre une valeur ne fais pas
entree.
3
vaughan Messages postés 198 Date d'inscription mardi 6 août 2002 Statut Membre Dernière intervention 29 octobre 2008
18 août 2005 à 13:59
0
dalatifa Messages postés 22 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 2 octobre 2007
18 août 2005 à 17:43
salut jlen100,
c'est bien mais ça retourne à la ligne, alors t'as une solution?
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
18 août 2005 à 18:05
salut jai pas tester mais je pense que si l'on traite le #13 dans l'évènemnt onclick on devrait pouvoir s'en sortir.

je regarde cela.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
18 août 2005 à 18:22
je viens de tester ceci:

tu rajoutes un test du #13(retour chariot) et une condition de longueur de saisie (10 caractères dans
l'exemple) car je suppose que ton nombre de chiffres n'est pas infini
!!! et tu fait ta fenêtre dee saisie en conséquence.

procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);

const Valid = #13, '0'..'9';

var buffer:string;

begin

with sender as Tmemo do

begin

if length(lines[0]) =10 then key:= #0; //on limite la saisie

begin
if key ='-' then

begin

buffer:= lines[0];

if buffer ='' then buffer:= '0';

if buffer<>'0' then


begin


if pos('-',buffer) =0 then buffer:= '-'+buffer

else delete(buffer,1,1);

end;

lines[0]: =buffer;key:= #0;

end ;

if not(key in valid) then key: =#0;
if key= #13 then

begin

key: =#0;// pour l'exemple rajoute ici ton traitement de donnée

end;

end;

end;

end;

bonne prog
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
18 août 2005 à 18:31
c'est encore moi

pour info ça marche aussi avec richedit tu remplace simplement

with sender as Tmemo do par:

with sender as TRichEdit do tu ainsi avoir les enrichissement de richedit
0
dalatifa Messages postés 22 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 2 octobre 2007
18 août 2005 à 19:46
le retour à la ligne se fait automatiquement, même avec le traitement par le code de #13, je ne sais vraiement koi faire,
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
19 août 2005 à 00:54
une dernière chose dans le memo met wordwrap à false.
0
dalatifa Messages postés 22 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 2 octobre 2007
22 août 2005 à 13:38
oui jlen100 , c'est ça, mtn ça marche à parfait,
mille merci à toi.
0
Rejoignez-nous