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

Delphi Discussion :

évenements d'une ComboBox


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 365
    Par défaut évenements d'une ComboBox
    j'ai une ComboBox (cbEtudiants) qui contient une liste d'Etudiants.

    Quand j'effectue le choix d'un étudiant E1 sur cette combo, je vais chercher quelques informations dans une base de données en rapport avec E1.
    Je mets donc mes traitements dans l'évenement OnChange de la combo.

    J'ai aussi la possibilité dans cette combo de taper un nouveau nom d'étudiant.

    Problème:
    SI je tape 'A'--> mon prog va faire le traitement pour l'étudiant 'A' (va dans la base, cherche l'étudiant 'A', puis me renvoie un résultat nul car 'A' n'existe pas)
    SI je tape encore une fois 'A' (j'aurai 'AA' sur la combo), le meme traitement se refait pour l'étudiant 'AA'..
    et ainsi de suite...

    cela est-il évitable?
    j'ai essayé de jongler avec les évenements de la combo (on exit, on select..) mais je ne trouve pas une solution.

    Merci..

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    410
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 410
    Par défaut
    branche toi sur l'évenement OnKeyPress et si la touche pressée n'est pas Entrée alors tu annules l'évenement OnChange, autrement tu le rebranches et tu y vas

    ce qui nous donne un code du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    procedure TForm1.cbEtudiantsKeyPress(Sender: TObject; var Key: Char);
    begin
     if key<>#13 then
      cbEtudiants.OnChange := nil
      else begin
            cbEtudiants.OnChange := cbEtudiantsChange;
            cbEtudiantsChange(cbEtudiants);
           end;
    end;

  3. #3
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 365
    Par défaut
    j'y ai effetivement pensé, par contre je n'ai pas besoin de valider ma sélection ou ma saisie dans la combo. donc pas d'utilisation de la touche entrée, ni d'un bouton de commande...

  4. #4
    Membre Expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 55
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Par défaut
    Et comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TForm1.cbEtudiantsChange(Sender: TObject);
    begin
      if cbEtudiants.Items.IndexOf(cbEtudiants.Text)>-1 then
      begin
        ShowMessage('action');
      end;
    end;
    avec la propriété AutoComplete à false.

  5. #5
    Expert confirmé
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 944
    Par défaut
    Mais il faut que la combobox soit triée, non ?

    Est-ce le cas?

  6. #6
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 365
    Par défaut
    je ne comprends pas..
    on dirait qu'on ne parle pas de la même chose..

    je veux juste savoir si c'est possible de n'effectuer un traitement que lorsque j'ai fini ma saisie dans la combo, et non pas entre temps..

    Le seul problème c'est que je n'ai pas de moyen pour valider ma saisie..

Discussions similaires

  1. Multi-selection dans une ComboBox ?
    Par Moloko dans le forum MFC
    Réponses: 5
    Dernier message: 07/07/2021, 17h26
  2. [TStringGrid] intégrer une ComboBox
    Par AnneOlga dans le forum C++Builder
    Réponses: 2
    Dernier message: 14/10/2004, 15h46
  3. [VB6] largeur d'une zone de liste d'une combobox
    Par Nick13 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 28/08/2004, 12h30
  4. Réponses: 2
    Dernier message: 26/07/2004, 13h34
  5. Pré-sélectionner un élément d'une combobox
    Par delphim dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/06/2003, 15h26

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