Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > Delphi > Langage
Langage Tout ce qui concerne le langage (POO, syntaxe, message d'erreur...)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 18/12/2012, 16h28   #1
Helber
Invité de passage
 
Inscription : mai 2010
Messages : 22
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 22
Points : 0
Points : 0
Par défaut Entrées interdépendantes : mise à jour automatique?

Bonjour,

J'ai un programme à destination scientifique, et dans lequel j'aimerais que l'utilisateur puisse définir 2 paramètres p1 et p2. Mon problème est que ces 2 paramètres sont interdépendants, par exemple p1=2 x p2 (la relation n'est évidemment pas si simple, sinon je ne m'embêterais pas! ). Et j'aimerais que, si l'utilisateur décide d'entrer une valeur de p1, la valeur de p2 soit calculée automatiquement et affichée instantanément. Et vice et versa s'il choisit d'entrer la valeur de p2.

Quelle solution ai-je pour faire ça?

Merci
Helber
Helber est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2012, 18h16   #2
Charly910
Membre chevronné
 
Avatar de Charly910
 
Homme Charly
Ingénieur TP
Inscription : décembre 2006
Messages : 582
Détails du profil
Informations personnelles :
Nom : Homme Charly
Localisation : France

Informations professionnelles :
Activité : Ingénieur TP
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : décembre 2006
Messages : 582
Points : 664
Points : 664
Bonjour,

je vais peut être dire une betise, mais tu ne peux pas utiliser le OnChange de 2 TEdit (un pour p1, et un pour p2).

Par exemple de P1 vers p2 :

Code :
1
2
3
4
5
6
procedure TForm1.Edit1Change(Sender: TObject);
Var
   P2 : Integer ;
begin
   If TryStrToInt(Edit1.text, P2) Then Edit2.text := InTToStr(P2 * 2) ;
End ;
à perfectionner et à blinder en fonction du type de p1 et p2 (réels ?)

A+ Charly
Charly910 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2012, 21h36   #3
Helber
Invité de passage
 
Inscription : mai 2010
Messages : 22
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 22
Points : 0
Points : 0
En effet ça marche. Le petit raffinement que je voudrais avoir maintenant, c'est que la mise à jour et son affichage soient automatique, et pas seulement à la fermeture de ma fenêtre.
Merci déjà!
Helber est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2012, 10h26   #4
Charly910
Membre chevronné
 
Avatar de Charly910
 
Homme Charly
Ingénieur TP
Inscription : décembre 2006
Messages : 582
Détails du profil
Informations personnelles :
Nom : Homme Charly
Localisation : France

Informations professionnelles :
Activité : Ingénieur TP
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : décembre 2006
Messages : 582
Points : 664
Points : 664
avec le EditChange, c'est automatique à la frappe dans Edit1, Edit2 se met à jour instantanément ? pas besoin de fermer la fenêtre ?

il faut ensuite faire un EditChange pour Edit2 afin que l'opération se fasse aussi dans l'autre sens (lorsque tu modifie Edit2, Edit1 se met à jour)

Charly
Charly910 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2012, 11h12   #5
Charly910
Membre chevronné
 
Avatar de Charly910
 
Homme Charly
Ingénieur TP
Inscription : décembre 2006
Messages : 582
Détails du profil
Informations personnelles :
Nom : Homme Charly
Localisation : France

Informations professionnelles :
Activité : Ingénieur TP
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : décembre 2006
Messages : 582
Points : 664
Points : 664
Bonjour,

il faut que tu ajoute un "focused" pour ne pas que les 2 EditChange "se marchent sur les pieds". Voilà le code complet de mon petit exemple :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    procedure Edit1Change(Sender: TObject);
    procedure Edit2Change(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;
 
var
  Form1: TForm1;
  p1 , P2 : Integer ;
 
implementation
 
{$R *.dfm}
{ ================================================================ }
procedure TForm1.Edit1Change(Sender: TObject);
begin
   If Edit1.Focused  Then
   If TryStrToInt(Edit1.text, P2) Then Edit2.text := InTToStr(P2 * 2) ;
End ;
{ ================================================================ }
procedure TForm1.Edit2Change(Sender: TObject);
begin
   If Edit2.Focused  Then
   If TryStrToInt(Edit2.text, P1) Then Edit1.text := InTToStr(P1 div 2) ;
end;
{ ================================================================ }
 
end.
A+

Charly
Charly910 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 07h44.


 
 
 
 
Partenaires

Hébergement Web