p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Invité de passage
    Inscrit en
    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

  2. #2
    Membre émérite Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    décembre 2006
    Messages
    760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : décembre 2006
    Messages : 760
    Points : 952
    Points
    952

    Par défaut

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  3. #3
    Invité de passage
    Inscrit en
    mai 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : mai 2010
    Messages : 22
    Points : 0
    Points
    0

    Par défaut

    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à!

  4. #4
    Membre émérite Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    décembre 2006
    Messages
    760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : décembre 2006
    Messages : 760
    Points : 952
    Points
    952

    Par défaut

    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

  5. #5
    Membre émérite Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    décembre 2006
    Messages
    760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : décembre 2006
    Messages : 760
    Points : 952
    Points
    952

    Par défaut

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

Discussions similaires

  1. [AC-2010] Mise à jour automatique champ commun entre plusieurs tables
    Par Fontaine_CLB dans le forum IHM
    Réponses: 18
    Dernier message: 23/10/2014, 16h58
  2. [AC-2010] Lien entre deux formulaires et mise à jour automatique du titre !
    Par matty_bzh dans le forum Access
    Réponses: 3
    Dernier message: 27/07/2012, 14h18
  3. mise à jour automatique entre deux table
    Par debutantasp dans le forum MS SQL-Server
    Réponses: 2
    Dernier message: 08/02/2008, 11h00
  4. Réponses: 9
    Dernier message: 18/11/2007, 22h59
  5. mise à jour automatique de champs entre 2 tables
    Par romdyane dans le forum Access
    Réponses: 5
    Dernier message: 11/10/2005, 18h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo