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 :

Selection par programme d'un Item Combobox


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 19
    Points : 10
    Points
    10
    Par défaut Selection par programme d'un Item Combobox
    Bonjour,

    Je dois utiliser une application sur écran tactile.
    Je cherche donc à créer un clavier virtuel pour renseigner un combobox en utilisant tout de même l'AutoComplete de ce dernier.
    J'ai essayé en simulant les touches sans succès
    keybd_event(50,0,1,0); //touche enfoncé
    keybd_event(50,0,2,0); //touche relevé

    Je rencontre vraisemblablement le problème du focus sur le combobox que je ne parviens pas à résoudre.
    Y à t'il une autre solution pour rechercher l'index dans la liste à partir d'une valeur d'un Edit et le transmettre à Itemindex?
    Si vous aviez une info, je vous en remercie d'avance.

    Thierry.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 69
    Points : 57
    Points
    57
    Par défaut
    Salut,

    J'espère avoir compris ^^. Tu veux à partir de la valeur d'un Edit modifier l'itemindex d'un combobox.
    Voilà ce que j'utiliserai si le combobox est dans une application externe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SendMessage(ComboBox1.Handle,CB_SETCURSEL,StrToInt(Edit1.Text),0);
    ComboBox1.Handle est l'adresse du combobox. Si il est dans une application externe utilise findwindow et findwindowex pour retrouver son handle.

    Si tu ne comprends pas mon code, vas lire la doc pour PostMessage/SendMessage et CB_SETCURSEL ca va t'éclaircir.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Salut,

    Merci pour ta réponse,
    En fait le combobox serait dans la même appli voir même sur la même fiche.
    Ce que je souhaite en faite s'est sur un Onchange d'un édit rechercher dans la liste du combobox la valeur qui commence par le text de l'édit (exemple Toto pour 'T' dans l'édit ...) puis retourner l'index de la liste du combobox pour la valeur Toto dans l'ItemIndex du combobox.
    J'espère avoir été suffisamment explicite...

    Merci encore.

  4. #4
    Membre émérite
    Avatar de skywaukers
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2005
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 219
    Points : 2 307
    Points
    2 307
    Par défaut
    Bonjour,

    il suffit d'affecter une valeur à la propriété ItemIndex du Combobox pour que l'élément soit sélectionné. A partir de là, si tes éléments sont triés alphabétiquement, il suffit que tu parcours les items jusqu'à en trouver 1 alphabétiquement supérieur ou égal à ce qu'a saisit l'utilisateur.

    @++
    Dany

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Merci bien,

    J'ai donc effectivement fait une recherche dans un tableau préalablement chargé de la liste et champs adjacent.

    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
     
    procedure TFm_S_Alpha.Affect_Cbx;
    var Idx, IdxItem: integer;
    begin
      //Recherche position dans tableau
      Idx := 0;
      IdxItem := Cbx_Col.ItemIndex;
      //Boucle sur le tableau d'intem et sortie si équivanlence de début de texte
      While  idx < Nbr_Prod do
        begin
          if Tab_Prod[Idx].NomPRec  >= Saisie_New then
            begin
              Cbx_Col.ItemIndex := Idx;
              Break;
            end;
          Idx := Idx+1;
        end;
     
      //Prise en compte de la dernière lettre uniquement si utilisée
      if Cbx_Col.ItemIndex <> IdxItem then Saisie := Saisie_New;
     
      Edit_saisie.text := Saisie;
    end;

Discussions similaires

  1. Sélection par programme d'un item d'un TDbLookupListBox
    Par defluc dans le forum Bases de données
    Réponses: 14
    Dernier message: 09/03/2007, 20h51
  2. [JTree] Selection d'un noeud par programme
    Par Stef-78 dans le forum Composants
    Réponses: 1
    Dernier message: 14/12/2006, 11h40
  3. remplacer a item dans un select par a autre
    Par koukoya dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 15/09/2006, 12h15
  4. manipulation par programmation d'un DBGRID et d'un COMBOBOX avec DELPHI6
    Par djambo1er dans le forum Bases de données
    Réponses: 3
    Dernier message: 10/08/2006, 11h25
  5. [JTextArea]selection par programmation
    Par let_me_in dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 15/02/2006, 17h32

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