Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  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 Charly
    Ingénieur TP
    Inscrit en
    décembre 2006
    Messages
    722
    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 : 722
    Points : 893
    Points
    893

    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 :
    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 Charly
    Ingénieur TP
    Inscrit en
    décembre 2006
    Messages
    722
    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 : 722
    Points : 893
    Points
    893

    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 Charly
    Ingénieur TP
    Inscrit en
    décembre 2006
    Messages
    722
    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 : 722
    Points : 893
    Points
    893

    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 :
    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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •