IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants VCL Delphi Discussion :

reinitialiser champs Text de plusieurs Tedit?


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 10
    Par défaut reinitialiser champs Text de plusieurs Tedit?
    Bonjour,

    Avant toute chose veuillez excuser mon ignorance, je debute avec delphi

    J'ai pas mal cherché sur le forum et sur le net mais je ne trouve pas de réponse à ma question.

    J'ai un formulaire créer sur un TPanel avec plusieurs champs TEdit, j'ai mis des champs Text par défaut (dans l'inspecteur d'objet) et ils apparaissent correctement quand j'appelle le formulaire. Mon probleme est que si, apres l'avoir utilisé une fois et donc changé les champs, on rappelle le formulaire les champs réapparaisse avec les dernieres info saisie.

    Actuellement pour les "réinitialiser" je fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    procedure TForm1.Formulaire1Click(Sender: TObject);
    begin
      Edit1.Text := 'blabla1';
      Edit2.Text := 'blabla2';
      Edit3.Text := 'blabla3';
      Edit4.Text := 'blabla4';
      PanelFormulaire.Show;
    end;
    Avec ça les champs reviennent bien comme je veut mais je trouve pas ça très propre, y à il une façon plus simple? genre un Form1.AllEdit.reset :p

    merci.

  2. #2
    Membre éprouvé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Par défaut
    Simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    procedure TForm1.Formulaire1Click(Sender: TObject);
    begin
      Edit1.Text := '';
      Edit2.Text := '';
      Edit3.Text := '';
      Edit4.Text := '';
      PanelFormulaire.Show;
    end;

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 10
    Par défaut
    Merci de ta réponse mais j'ai du mal m'expliquer

    un exemple valant mieux qu'un long discours, j'ai fait un truc rapidement pour exposer mon problème:

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ExtCtrls;
     
    type
      TForm1 = class(TForm)
        Panel1: TPanel;
        Edit1: TEdit;
        Edit2: TEdit;
        Edit3: TEdit;
        Edit4: TEdit;
        Label1: TLabel;
        Label2: TLabel;
        Label3: TLabel;
        Button1: TButton;
        Panel2: TPanel;
        Label4: TLabel;
        Label5: TLabel;
        Button2: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Resultat: string;
      a, b, c, d: Real;
    begin
      Panel1.Hide; //je ferme le panel 1 avec les edit demandant les chiffres à calculer
      a := StrToFloat(Edit1.Text);
      b := StrToFloat(Edit2.Text);
      c := StrToFloat(Edit3.Text);
      d := StrToFloat(Edit4.Text);
     
      Resultat := FloatToStr(a+b+c+d);
      Label5.Caption := Resultat;
      Panel2.Show; //j'ouvre le panel 2 avec le label contenant le resultat
     
    end;
     
    procedure TForm1.Button2Click(Sender: TObject);
    begin
      Panel2.Hide; //Je ferme le panel de resultat
      Edit1.Text := '1'; //je remet les valeurs par défaut aux edit
      Edit2.Text := '1';
      Edit3.Text := '2';
      Edit4.Text := '2';
      Panel1.Show; //je reouvre le panel 1 avec les edit remis à leurs valeurs d'origine
    end;
     
    end.
    J'ai joins le projet complet pour mieux voir ce dont je parle.

    donc ici est ce possible de réaffecter les valeurs de Edit*.Text de façon plus simple que ça (enfin c'est pas que ce soit compliqué mais la question est plutot de savoir si une fonction existe pour tout remettre comme configuré dans les propriété des edit)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TForm1.Button2Click(Sender: TObject);
    begin
      Panel2.Hide;
      Edit1.Text := '1';
      Edit2.Text := '1';
      Edit3.Text := '2';
      Edit4.Text := '2';
      Panel1.Show;
    end;
    C'est pas évident à expliquer... j'espère me faire comprendre cette fois :p


    Projet1.zip

  4. #4
    Membre émérite
    Inscrit en
    Juin 2005
    Messages
    644
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 644
    Par défaut
    le plus 'rationnel' serait de créer dynamiquement un array [1..n] of TEdit, définir un array de constantes
    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
     
    const N = 4;
    var Mes_edit : array[1..N] of TEdit;
    const mes_def : array[1..N] of string = ('1','2','3','4');
     
    ...
     
    procedure ini();
       begin
       for i:=1 to N do if Mes_edit[i]=nil then
          begin
          Mes_edit[i]:=TEdit.Create(nil); // ou form1 ou ...
          if Mes_edit[i] <> nil then
             panelxxx.insertcontrol(Mes_edit[i])
          else
             showmessage('PROBLEME!!!');
          end;
       end;
     
    ...
    initialization
    for i:=1 to N do Mes_edit[i]:=nil;
    end.
    puis réinitialiser via une boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ini();
    ...
    for i:=1 to N do Mes_edit[i].Text:=mes_def[i];

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 10
    Par défaut
    merci,

    Donc pas de truc "tout fait", il faut les reinit nous même.

    Merci j.p.mignot pour l'idée des array, je pense que je vais faire comme ça.

  6. #6
    Membre chevronné Avatar de archonte
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 343
    Par défaut
    Citation Envoyé par galio Voir le message
    donc ici est ce possible de réaffecter les valeurs de Edit*.Text de façon plus simple que ça (enfin c'est pas que ce soit compliqué mais la question est plutot de savoir si une fonction existe pour tout remettre comme configuré dans les propriété des edit)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TForm1.Button2Click(Sender: TObject);
    begin
      Panel2.Hide;
      Edit1.Text := '1';
      Edit2.Text := '1';
      Edit3.Text := '2';
      Edit4.Text := '2';
      Panel1.Show;
    end;
    variante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    const
      ValeursParDefaut : array[1..4] of string = ('1', '1', '2', '2');
     
    ...
     
    for i:=1 to 4 do
      (Form1.FindComponent('Edit'+IntToStr(i)) As TEdit).Text := ValeursParDefaut[i];
    A lire également : le commentaire de Paul Toth ici.

    Par ailleurs, ne laisse pas des Edit1, Edit2, ... EditN : c'est difficile à maintenir. Utilise des noms "auto-documentés" : exemples :
    - BtnAfficherCalcul au lieu de Button1
    - BtnRAZDataPanel au lieu de Button2
    - EdMachin pour Edit1
    - EdTruc pour Edit2
    - etc



    [edit] Grillé par J.P.M +1

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 10
    Par défaut
    Citation Envoyé par archonte Voir le message
    Par ailleurs, ne laisse pas des Edit1, Edit2, ... EditN : c'est difficile à maintenir. Utilise des noms "auto-documentés" : exemples :
    - BtnAfficherCalcul au lieu de Button1
    - BtnRAZDataPanel au lieu de Button2
    - EdMachin pour Edit1
    - EdTruc pour Edit2
    - etc
    Oui habituellement je fait comme ça, j'ai fait le code donnée en exemple juste pour illustrer ma demande

    Merci pour votre aide en tout cas.

    A puis j'ai faillit oublier, Bonne fêtes à tous!

  8. #8
    Membre chevronné Avatar de archonte
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 343
    Par défaut
    Ou bien une boucle for ou while et la fonction findcomponent (ici dans la ), par exemple !

    Mais de toute façon, il va falloir coder l'action que tu souhaites !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 29/06/2009, 11h46
  2. Réponses: 35
    Dernier message: 21/11/2007, 19h59
  3. Champ text avec plusieurs lignes ?
    Par Death83 dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 17/10/2006, 11h42
  4. Réponses: 14
    Dernier message: 10/07/2006, 10h58
  5. 8i : sql loader et champ texte sur plusieurs lignes
    Par naonedboy dans le forum SQL*Loader
    Réponses: 1
    Dernier message: 23/11/2005, 10h07

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