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 :

ComboBox.DropDownCount, comportement différent entre 2000 et XP


Sujet :

Composants VCL Delphi

  1. #1
    Expert éminent sénior
    ComboBox.DropDownCount, comportement différent entre 2000 et XP
    Bonjour à tous.

    Le code suivant fonctionne parfaitement bien sous 2000, (ie, comportement normal d'un ComboBox, on clique sur la flèche et la liste s'affiche) :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    procedure TForm1.FormCreate(Sender: TObject);
    var
      i : integer;
    begin
      for i := 7 to 22 do
      begin
        cbb.Items.Add(Format('%2.2d', [i]) + '.00');
        cbb.Items.Add(Format('%2.2d', [i]) + '.15');
        cbb.Items.Add(Format('%2.2d', [i]) + '.30');
        cbb.Items.Add(Format('%2.2d', [i]) + '.45');
        cbb.DropDownCount := cbb.Items.Count;
      end;
    end;

    mais sous XP la liste s'affiche et se referme aussitôt !
    Faut garder le clic appuyé sur la flèche pour pouvoir choisir une valeur, et une fois la valeur choisie, la flèche garde le look « enfoncé »...
    Testé sur 2 machines différentes...

    Une idée, quelqu'un ?
    Merci d'avance,
    --
    jp
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  2. #2
    Rédacteur/Modérateur

    Salut,

    J'ai réussi à reproduire l'erreur ...

    Ton combobox comporte beaucoup d'entrées et lorsqu'on clic dessus, la liste déroulante est OK sauf que si elle dépasse de la Form qui l'appelle, on a l'effet que tu as ...

    Essaie de mettre ta form en plein écran et voit ce que ca fait

  3. #3
    Expert éminent sénior
    Salut, ero-sennin, et merci de te pencher sur ce problème.

    Suivant tes conseils, j'ai retaillé ma form de manière à ce qu'elle soit plus grande que la liste déroulée, et j'ai mis Form1.WindowState à wsMaximized dans l'inspecteur d'objets.
    Mais malgré ça, même comportement...

    La solution consiste à positionner le ComboBox en haut de la form, de manière à ce que la liste déroulante se déroule exclusivement vers le bas ! (dans mon premier essai, la liste se déroulait au-dessus et au-dessous du ComboBox)

    À retenir, donc !

    Merci à toi de m'avoir mis sur cette piste,
    --
    jp
    [edit] PS : le fait de corriger le bug (j'ai fait ça tard..., ) de mon premier post n'avait rien arrangé : il faut bien sûr mettre
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
        cbb.DropDownCount := cbb.Items.Count;
    après la boucle, [/edit]
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  4. #4
    Rédacteur/Modérateur

    En effet, j'avais pas fait attention ... j'avais mis mon composant tout en haut ...

    Donc la véritable raison est que la liste ne doit être en dessus de la listbox et uniquement vers le bas...
    [EDIT : Tu as donné la solution, je me répète :aie: ) Merci pour l'info, je garde celà de coté ;)

  5. #5
    Expert éminent sénior
    Arf, je me cite :
    Citation Envoyé par Jipété Voir le message
    La solution consiste à positionner le ComboBox en haut de la form, de manière à ce que la liste déroulante se déroule exclusivement vers le bas ! (dans mon premier essai, la liste se déroulait au-dessus et au-dessous du ComboBox)
    Et je précise, puisque je viens de faire l'essai à l'instant sur une machine dont l'affichage est réglé sur 1024 x 768, ie, trop petit en hauteur pour contenir tous les items du ComboBox, qu'il faut absolument que la liste ait suffisament de place pour s'afficher en entier et vers le bas, sinon le problème se manifeste.
    --
    jp
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

###raw>template_hook.ano_emploi###