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

Langage Delphi Discussion :

Comment marche le OnChange dans un edit


Sujet :

Langage Delphi

  1. #1
    Membre habitué
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2003
    Messages
    397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2003
    Messages : 397
    Points : 165
    Points
    165
    Par défaut Comment marche le OnChange dans un edit
    Bonjour,

    j'essaie de faire une sorte de saisie semi auto dans un edit. Pour cela j'ai écrit une petite procédure qui lit un fichier lorsqu'un caractère est saisie dans mon Edit.

    Le problème c'est que cela fonctionne sur la première lettre mais pas sur les suivantes.
    Donc ma question est : Le Onchange est il activé à chaque caractère saisie ou une seule fois (sur le premier caractère)

    Ci-dessous la procédure concernée

    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
     
     
    procedure libelle();
    var
    i,j,k,m:integer;
    nomtext,nomprovi,nom:string;
    begin
     
               // ouverture ou création du fichier texte
               try
                  nomprovi:='';nom:='';
                   for i:=pos('.del',nomfich) downto 1 do
                     begin
                       if ord(nomfich[i])<>92  then nomprovi:=nomprovi+char(ord(nomfich[i]));
                       if ord(nomfich[i])=92  then Break;
                     end;
                      nom:=nomprovi;nomprovi:='';
     
                    for i:=length(nom) downto 2 do
                      begin
                        nomprovi:=nomprovi+char(ord(nom[i]));
                     end;
     
               nomtext:=ExtractFilePath(Application.ExeName)+'dab00\'+ nomprovi +'mot.del';
               AssignFile(fich_text,nomtext);Reset(fich_text);
               except
               AssignFile(fich_text,nomtext);ReWrite(fich_text);
               enregindex.index_mot:=0;
               Seek(fich_index,1);Write(fich_index,enregindex);
               end;
     
               Seek(fich_index,1);Read(fich_index,enregindex);
               i:=enregindex.index_mot;
               if i>0 then
               begin
               compte.aide_saisie.Clear;
               compte.aide_saisie.Left:=84;
               compte.aide_saisie.Top:=122;
               compte.aide_saisie.Visible:=true;
                  for j:=1 to length(compte.Edit1.Text) do
                    begin
                      for k:=1 to enregindex.index_mot do
                        begin
                         Seek(fich_text,k); Read(fich_text,enregtext);
                           for m:=1 to length(enregtext.mot) do
                              begin
                              if enregtext.mot[m]=trim(compte.Edit1.Text) then
                                compte.aide_saisie.Items.Add(enregtext.mot);
                              end;
                        end;
                    end;
               end; // fin de if i>0
     
    end;


    Merci de vos commentaires

  2. #2
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    L'évènement OnChange est déclenché à chaque fois qu'une action est entreprise sur le contrôle et est suceptible d'avoir modifié son contenu.
    La propriété Modified permet de savoir si celui-ci a réellement été modifié.

    Je suppose que tu appelles la procédure Libelle dans le OnChange, donc cela doit ressembler à ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TForm1.Edit1Change(Sender: TObject);
    begin
      if TEdit(Sender).Modified then
        Libelle;
    end;
    Remarque: Je ne vois pas de CloseFile dans ta procédure.

    @+ Claudius

  3. #3
    Membre habitué
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2003
    Messages
    397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2003
    Messages : 397
    Points : 165
    Points
    165
    Par défaut
    Merci, donc c'est ma procédure qui bogue
    A+

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/02/2015, 10h45
  2. [Data] Comment marche les transactions dans spring?
    Par mcfly37 dans le forum Spring
    Réponses: 7
    Dernier message: 09/07/2010, 13h58
  3. Comment recuper un reel dans un Edit sur C++ Builder 6
    Par fmr130 dans le forum Débuter
    Réponses: 1
    Dernier message: 15/01/2009, 09h07
  4. Réponses: 10
    Dernier message: 08/02/2006, 19h42
  5. Réponses: 9
    Dernier message: 15/09/2004, 21h35

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