sfkuhvdlkufgs
Messages postés31Date d'inscriptionjeudi 16 décembre 2004StatutMembreDernière intervention 4 mai 2007
-
24 avril 2006 à 15:20
florenth
Messages postés1023Date d'inscriptiondimanche 1 août 2004StatutMembreDernière intervention17 août 2008
-
25 avril 2006 à 08:39
Bonjour,
Je débute sous delphi, et je doit faire une interface graphique dans laquelle l'utilisateur entrera des valeures que je devrai récuperer dans des variables des qu'il apuira sur un bouton de validation.
pour cela, j'ai créé un tform dans lequel il y a des tedit eu un bitbutton de validation.
quelqu'un pourrait-il me dire comment je peut récupérer les valeurs que l'utilisateur aura préalablement entré dans les tedit pour les mettre dans des variables ? (ou au moin m'indiquer un tutoriel en parlant )
Merci.
cs_sim51
Messages postés240Date d'inscriptiondimanche 31 octobre 2004StatutMembreDernière intervention31 décembre 20062 24 avril 2006 à 15:38
salut,
Pour récupérer la valeur d'un tedit dans une variable var il te suffit de faire :
var := edit.text;
Cependant le type de ta variable var sera de type string. Si tu veux que cela soit des entiers ou des valeurs numériques il te faudra faire un transtypage.
Bonne continuation
J'ai 5 min alors je te file une autre technique quand tu as plusieurs edit. Edit.text est "un string". Bien je te propose de créer une variable correspondant non pas à un string mais à une "liste de strings ", ok??
Procedure RecupererEditDansVariable (Sender : TObjet);
Var
List : TSTRINGLIST; //
begin
List:=TStringList.Create; // On crée la stringlist
List.Add(Edit1.text); // On ajoute le contenu de l'edit1
List.Add(Edit2.text);
List.Add(Edit3.text);
{ Tu mets içi ce que tu veux faire de ta stringlist}
List.free; // On a plus besoin de List on la libère
end;
J'ai pas delphi sous les yeux mais ca devrait etre bon. Il est préférable d'utiliser try except et finally. Je les ai pas mis pour pas te compliquer.
sfkuhvdlkufgs
Messages postés31Date d'inscriptionjeudi 16 décembre 2004StatutMembreDernière intervention 4 mai 2007 24 avril 2006 à 18:27
merci tous les deux, éant donné que les valeurs entrées vont me servir pour une fonction mathematique, je vais pltit prendre la premiere solution.
En tout cas c'est sympade m'avoir répondu si vite :-)
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_sim51
Messages postés240Date d'inscriptiondimanche 31 octobre 2004StatutMembreDernière intervention31 décembre 20062 24 avril 2006 à 18:34
Re,
Puisque ce sont bien des valeur numérique n'oublie pas de faire le transtypage. D'ou fait plutot ceci :
var := strtofloat(edit.text);
Comme cela var sera une variable de type réelle (ou fait strtoint pour la variable soit de type entier).
Bonne continuation.
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 24 avril 2006 à 18:54
Ps : préferez les fonctions StrToType en StrToTypeDef :
Exemple pour StrToFloat :
function StrToFloatDef(const S: string;
const Default: Extended): Extended; overload;
Donc :
var := strtofloat(edit.text);
devient
Var := StrToFloatDef(Edit.Text, 0.0); // voilà donc si Edit.Text n'est ni un entier ni un réel la fonction renvoie 0.0 et ne génère pas d'erreur
<HR>
n'oubliez pas de cliquer sur Réponse Acceptée
si elle vous convient
florenth
Messages postés1023Date d'inscriptiondimanche 1 août 2004StatutMembreDernière intervention17 août 20083 24 avril 2006 à 19:19
En même temps Cirec, si tu veux différencier la valeur 0 d'une saisie incorrecte, tu es mal barré !
Moi je préfère utiliser StrToInt() et mettre un masque de saisie à l'Edit, c'est à dire mettre
if not (Key in ['0'..'9', Chr(VK_RETURN), Chr(VK_DELETE)]) then Key := #0;
dans l'évenement OnKeyPress des Edits concernés. Ou alors utiliser un TMaskEdit.
@ +
Florent
Si tu ne te plantes pas ......
tu ne pousseras jamais
Oup la j'ai fais une boulette : deux fois rien mais bon
Procedure RecupererEditDansVariable (Sender : TObjet); à remplacer par
Procedure TForm1.RecupererEditDansVariable (Sender : TObjet); (et oui c'est un ptit bouton).
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 25 avril 2006 à 01:04
Oui Florenth,
mais il y a des cas ou une valeur par défaut est utile.
Et le problème de ta méthode est qu'en cas d'un coller (WM_PASTE) tu peux quand même rentrer autre chose que les caractères prévues à la base et donc la soit du refait un contrôle avant (mais niveau code c'est pas terrible) où alors il faudra compter avec une EConvertError. Alors qu'avec l'autre il renvoie la valeur par défaut.
Comme dans la plus part des cas on a des limites dans les valeurs il suffit de déclarer une Constante qui est en dehors de ces limites Ex :
// pour un interval entre 0 et 1024
Const Out_Of_Limit = 9999;
procedure TForm1.Button1Click(Sender: TObject);
Var Valeur : Integer;
begin //On transtype avec une valeur par défaut si besoin on affecte Out_Of_Limit
Valeur : = StrToIntDef(Edit1.Text, Out_Of_Limit);
// On vérifie les limites si en dehors on affecte Out_Of_Limit
If (Valeur > 1024) or (Valeur < 0) Then Valeur := Out_Of_Limit;
//Où avec InRange de l'unité Math (Mais il faut ajouter Uses Math;)
If Not InRange(Valeur, 0, 1024) Then Valeur : = Out_Of_Limit;
...
end;
Voilà et il n'y a pas d'erreur ni avec un coller ni autre ce qui n'empêche pas de l'utiliser
simultanément avec un contrôle de la frappe ce qui est plus élégant
<HR>
n'oubliez pas de cliquer sur Réponse Acceptée
si elle vous convient
florenth
Messages postés1023Date d'inscriptiondimanche 1 août 2004StatutMembreDernière intervention17 août 20083 25 avril 2006 à 08:39
Eh eh bien vu Cirec. Je n'avais pasdu tout pensé au cas du copier-coller. Mais bon, avec un MaskEdit, pas de problème normalement (je dis bien normalement car j'ai pas encore testé)
Si tu ne te plantes pas ......
tu ne pousseras jamais