Recuperer des valeurs dans un tedit [Résolu]

sfkuhvdlkufgs 31 Messages postés jeudi 16 décembre 2004Date d'inscription 4 mai 2007 Dernière intervention - 24 avril 2006 à 15:20 - Dernière réponse : florenth 1105 Messages postés dimanche 1 août 2004Date d'inscription 17 août 2008 Dernière intervention
- 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.
Afficher la suite 

11 réponses

Répondre au sujet
cs_sim51 314 Messages postés dimanche 31 octobre 2004Date d'inscription 31 décembre 2006 Dernière intervention - 24 avril 2006 à 15:38
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_sim51
Utilisateur anonyme - 24 avril 2006 à 16:17
+3
Utile
Salut,

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.

A+ et bon coding ...
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Utilisateur anonyme
sfkuhvdlkufgs 31 Messages postés jeudi 16 décembre 2004Date d'inscription 4 mai 2007 Dernière intervention - 24 avril 2006 à 15:32
0
Utile
une petite precision : je ne suis pas sur non plus qu'il faille utiliser des tedit
Commenter la réponse de sfkuhvdlkufgs
sfkuhvdlkufgs 31 Messages postés jeudi 16 décembre 2004Date d'inscription 4 mai 2007 Dernière intervention - 24 avril 2006 à 18:27
0
Utile
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 :-)
Commenter la réponse de sfkuhvdlkufgs
cs_sim51 314 Messages postés dimanche 31 octobre 2004Date d'inscription 31 décembre 2006 Dernière intervention - 24 avril 2006 à 18:34
0
Utile
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.
Commenter la réponse de cs_sim51
Cirec 4217 Messages postés vendredi 23 juillet 2004Date d'inscription 3 avril 2018 Dernière intervention - 24 avril 2006 à 18:47
0
Utile
Salut,
et tu peux aussi si tu désires mettre en forme (afficher) une opération tu peux utiliser la fonction Format :


Label1.Caption := Format('%s * %s := %d', [Edit1.Text, Edit2.Text, StrToIntDef(Edit1.Text, 0) * StrToIntDef(Edit2.Text, 0)]);

Donc si Edit1.Text := 50
Et si Edit2.Text := 50
Label1.Caption Affichera 50 * 50 := 2500



<HR>





n'oubliez pas de cliquer sur Réponse Acceptée
si elle vous convient


<HR>


@+
Cirec
Commenter la réponse de Cirec
Cirec 4217 Messages postés vendredi 23 juillet 2004Date d'inscription 3 avril 2018 Dernière intervention - 24 avril 2006 à 18:54
0
Utile
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


<HR>


@+
Cirec
Commenter la réponse de Cirec
florenth 1105 Messages postés dimanche 1 août 2004Date d'inscription 17 août 2008 Dernière intervention - 24 avril 2006 à 19:19
0
Utile
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
Commenter la réponse de florenth
Utilisateur anonyme - 24 avril 2006 à 19:31
0
Utile
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).

Désolé A+
Commenter la réponse de Utilisateur anonyme
Cirec 4217 Messages postés vendredi 23 juillet 2004Date d'inscription 3 avril 2018 Dernière intervention - 25 avril 2006 à 01:04
0
Utile
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


<HR>

@+
Cirec
Commenter la réponse de Cirec
florenth 1105 Messages postés dimanche 1 août 2004Date d'inscription 17 août 2008 Dernière intervention - 25 avril 2006 à 08:39
0
Utile
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
Commenter la réponse de florenth

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.