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 :

TComboBox et propriété SelStart


Sujet :

Composants VCL Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 15
    Points : 5
    Points
    5
    Par défaut TComboBox et propriété SelStart
    Bonjour à tous.
    J'ai une TComboBox dont certains items sont plus longs que la largeur de la combobox.
    J'ai réglé ça avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tireurs.Perform(CB_SETDROPPEDWIDTH, long_tireur_max, 0);
    (les tireurs sont des escrimeurs).
    Quand je sélection un tel item, la zone edit ne peut bien sûr pas l'afficher en entier, mais le début me suffirait; malheureusement ce texte est sélectionné et donc le curseur est à la fin.
    Je n'arrive pas à faire fonctionner (pas d'effet)
    A tout hasard, je l'ai précédé de
    J'ai aussi essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tireurs.Perform(CB_SETEDITSEL,0,-1);
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SendMessage(tireurs.Handle,CB_SETEDITSEL,0,-1);
    Toujours sans aucun effet.
    Je sèche complétement.
    Merci pour vos conseils.
    Didier.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 49
    Points : 51
    Points
    51
    Par défaut
    Bonjour,

    Pas de problème chez moi :

    Le "tireurs.Perform(CB_SETDROPPEDWIDTH, long_tireur_max, 0)" fonctionne et lorsque je sélectionne un item plus large que le combo, le début de celui-ci s'affiche correctement dans l'edit.

    Michel

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 15
    Points : 5
    Points
    5
    Par défaut zone edit du combobox
    Merci pour ta réponse.
    Le choix séléctionné s'affiche bien aussi, mais comme il est sélectionné, le curseur se trouve à la fin, je ne lis donc pas le début du texte.
    Je voudrais donc "désélectionner" le texte à l'aide de SelStart. C'est ce qui est sans effet. Il doit y avoir une option à choisir pour que le début s'affiche dans l'edit comme pour toi.
    Didier.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 49
    Points : 51
    Points
    51
    Par défaut
    Dans mon cas, mon combo a la propriété csDropDownList. Si je lui affecte la propriété csDropDown, le problème se produit effectivement.

    Un SelStart me paraît difficile à utiliser car il n'existe pas d'événement se produisant après la sélection d'un item. Je vais essayer de trouver une solution.

    A bientôt...

    Michel

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Je confirme ce que tu dis pour la propriété style; en csDropDownList, le problème ne se produit pas.
    Je n'avais pas bien saisi la différence, mais le hasard fait bien les choses : je veux juste pouvoir taper les premières lettres, mais surtout pas rajouter d'item.
    Donc c'est OK comme ça.
    Merci beaucoup.
    Mais j'aimerais bien comprendre pourquoi le SelStart ne fonctionne pas.
    Didier.
    edit : j'ai essayé plusieurs évènements : onSelect, onChange, onEnter.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 49
    Points : 51
    Points
    51
    Par défaut
    Citation Envoyé par didier_ber Voir le message
    Mais j'aimerais bien comprendre pourquoi le SelStart ne fonctionne pas
    Le SelStart fonctionne mais il faudrait pouvoir le lancer après la sélection de l'item. Or le ComboBox ne fournit aucun événement suite à la sélection d'un item dans la liste déroulante (le OnChange n'est activé que si l'on modifie directement l'Edit).

    Michel

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    J'utilise l'évènement onChange pour modifier un autre composant de ma fiche lors de la sélection d'un item dans la combobox, sans rien saisir dans l'edit.
    Et ça marche.
    Didier.

  8. #8
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 693
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 693
    Points : 13 128
    Points
    13 128
    Par défaut
    Ajoute ceci dans le OnCloseUp (Ou OnClick):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      PostMessage(TComboBox(Sender).Handle, CB_SETEDITSEL, 0, 0);

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Ca marche !
    Là, je ne comprends pas, mais c'est parce que je ne connais pas suffisamment l'API Windows; je ne connaissais que SendMessage, pas PostMessage.
    Quelle est la différence ?
    Merci.
    Didier.

  10. #10
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 693
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 693
    Points : 13 128
    Points
    13 128
    Par défaut
    SendMessage est synchrone alors que PostMessage est asynchrone. En d'autres termes, un SendMessage est exécuté immédiatement (comme si on appelait une procédure) alors que PostMessage ajoute un traitement à effectuer à la suite de ceux en attente (la fermeture du combo aura donc déjà été exécutée).

    Résolu ?

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 49
    Points : 51
    Points
    51
    Par défaut
    Citation Envoyé par Michel Devaud Voir le message
    le OnChange n'est activé que si l'on modifie directement l'Edit
    J'ai dit des bêtises. Je me suis un ti peu mélangé les pinceaux dans mes tests !!!

    Citation Envoyé par Andnotor Voir le message
    Ajoute ceci dans le OnCloseUp
    Mon ComboBox n'a pas l'air de connaître le "OnCloseUp"...

  12. #12
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 693
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 693
    Points : 13 128
    Points
    13 128
    Par défaut
    Citation Envoyé par Michel Devaud Voir le message
    Mon ComboBox n'a pas l'air de connaître le "OnCloseUp"...
    Je ne me souviens plus à partir de quelle version ça a été implémenté. Mais c'est pour ça que j'ai également proposé un autre événement entre parenthèses .

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

Discussions similaires

  1. TMaskEdit, propriété selstart
    Par OutOfRange dans le forum Delphi
    Réponses: 4
    Dernier message: 22/11/2006, 16h48
  2. Accés rapide aux propriétés d'un Objet
    Par Alacazam dans le forum C++Builder
    Réponses: 4
    Dernier message: 28/11/2002, 21h56
  3. [ActiveX] Visibilité d'une propriété
    Par paradise dans le forum Composants VCL
    Réponses: 2
    Dernier message: 14/11/2002, 18h33
  4. [controle] propriété read only
    Par Fizgig dans le forum Composants VCL
    Réponses: 6
    Dernier message: 28/08/2002, 10h30
  5. [propriétés]Option Checked
    Par psl dans le forum Composants VCL
    Réponses: 6
    Dernier message: 22/08/2002, 08h07

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