Comment permettre des effacements libres dans des Tedits?

Résolu
Leader2000 Messages postés 187 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 28 août 2015 - 12 févr. 2008 à 02:00
Leader2000 Messages postés 187 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 28 août 2015 - 14 févr. 2008 à 14:02
Salut!

Ma question s'pose sur des Tedits qui peuvent permettre un simple effacement.
Je prends un exemple:
edit1.txt + edit2.txt = edit3.txt

edit3.text:= FloatToStr(StrToFloat(edit1.txt) + StrToFloat(edit2.txt));

La chose que je constate. Bien qu'elle soit normal...j'aimerai du moins savoir comment m'en sortir.
En runtime, si l'on efface un chiffre se trouvant dans un des edits. Il y a toujours un message d'erreur appairaissant pour dire qu'il ne permet qu'un edit soit vide. Y a t-il un moyen de faire accepter des effacement libres dans les deux edits (edit1.txt et edit2.txt) sans qu'il y est ces messages d'erreurs?

Merci,

Developper est une dimension pour moi.
Leader2000

4 réponses

Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 48
12 févr. 2008 à 03:44
Salut,

montre nous la procedure qui gère les caractères des TEdits
et celle qui appelle : edit3.text:= FloatToStr(StrToFloat(edit1.txt) + StrToFloat(edit2.txt));

ton problème est simple il se situe soit dans la procedure qui gère les caractères autorisés dans les TEdits soit dans la procedure qui appelle le code qui calcule la valeur de Edit3 ... soit les deux

mais tu peux déjà tenter d'utiliser StrToFloatDef qui renvoie la
valeur par défaut si il y a un problème lors de la conversion.

  Edit3.Text := FloatToStr(StrToFloatDef(Edit1.Text, 0.0) + StrToFloatDef(Edit2.Text, 0.0));

avec un peut de chance ça résoudra le problème
 
@+
Cirec

<hr siz="" />
3
Utilisateur anonyme
12 févr. 2008 à 09:31
Salut,

Ben c'est simple : If Edit1.Txt='' Then Edit1.Txt:='0'; à mettre dans la procédure qui déclenche
edit3.text:= FloatToStr(StrToFloat(edit1.txt) + StrToFloat(edit2.txt));
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 37
12 févr. 2008 à 15:35
tu gere l'evenement OnKeyPress du TEdit :

procedure TFormX.EditNKeypress(Sender: TObject; var key : char);
begin
  // adjust the correct decimal separator to system defaut

  if Key in [',','.'] then
    Key := DecimalSeparator;

  // only Float chars 123456.789[e/E][+/-]123 , #8 = BackSpace touch
  if not (Key in ['0'..'9',DecimalSeparator,'e','E','-','+',#8]) then
    Key := #0;
end;

ensuite tu gere l'evenement OnChange des TEdit :

procedure TFormX.EditNChange(sender: TObject);
begin
  with (sender as TEdit) do
    if Text = EmptyStr then
      Text := '0';
end;

<hr size="2" width="100%" />
http://deefaze.gnomz.com
0
Leader2000 Messages postés 187 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 28 août 2015
14 févr. 2008 à 14:02
Cirex, Francky et Foxi. Merci pour votre participation.

Leader2000

Developper est une dimension pour moi.
Leader2000
0