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 :

Limiter le nombre d'items affiches sur un Popupmenu


Sujet :

Composants VCL Delphi

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2002
    Messages : 245
    Points : 154
    Points
    154
    Par défaut Limiter le nombre d'items affiches sur un Popupmenu
    Bonjour,

    J'ai deux soucis avec le Popupmenu.
    1 - Je veux limiter le nombre d'items visibles dans un popupmenu (ex: 10 items visibles, les autres il faut scroller pour les voir).
    2 - Est-possible de changer le scroll natif au popupmenu (deux fleches sur les parties superieures et inferieures du popupmenu) par un scroll normal (comme une seimple fenetre, un scroll sur le cote droit du menu).

    Merci.


  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 674
    Points : 5 259
    Points
    5 259
    Par défaut
    Regarde, du coté de la JVCL, y'a peux être un composant qui le fait.
    Si tu n'en trouve pas je peux te proposer une solution de remplacement.

    L'idée est de passer par un composant qui gère le scroll nativement, genre un TStringGrid.

    En gros voici, comment faire :
    1) Tu place une TStringGrid sur ta fiche à l'emplacement où est censé apparaître ton menu. Sinon, tu peux le placer en utilisant les coordonées de la souris.
    2)Tu met deux colonnes à ton StringGrid (la première pour le code de l'action à exécuter, la deuxième pour le texte contenus dans ton menu). Tu redefini le nombre de ligne de manière à n'afficher que le nombre souhaité d'entrée. Tu change la couleur de fond de la grille pour qu'elle soit de la même couleur que ton menu et tu met le tableau à non visible.

    3) Sur le click de de l'item de ton menu, voire sur le survol de cet item, tu fait apparaitre la grille en masquant la première colonne.

    4) Sur le click de ta grille tu récupère le code de la première colonne et tu exécute. A partir de ce code tu déduit une action et tu l'exécute.

    PS : Je n'ai pas testé mais en principe cela devrait fonctionner. Essaie et reviens me voir si tu bloques quelque part

  3. #3
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Avec la StringGrid, il pourrait utiliser Object pour stocker un pointeur vers une procédure au lieu d'un code d'action ...

    sinon, as-tu pensé au ComboBox ... n'affiche que le bouton fléche du combo et s'en servir comme menu ... ça serait moins compliqué à développer qu'avec la grille ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  4. #4
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Bonjour,

    Je ne sais pas si ça peut t'aider, mais il est possible se scinder le contenu en deux colonnes.

    J'ai tenté de bidouiller, mais je n'y arrive pô

    @+

  5. #5
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 674
    Points : 5 259
    Points
    5 259
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Avec la StringGrid, il pourrait utiliser Object pour stocker un pointeur vers une procédure au lieu d'un code d'action ...

    sinon, as-tu pensé au ComboBox ... n'affiche que le bouton fléche du combo et s'en servir comme menu ... ça serait moins compliqué à développer qu'avec la grille ...
    Je trouvait beaucoup plus simple de gerer un mini-gestionnaire d'action plutôt que d'associer un un objet et en en plus associer une procédure à l'objet.

    Par contre pour la combo, il doit y avoir une propriété que je ne connais pas parce limiter le nombre d'élements affichés, je ne vois pas comment faire avec une combo. Avec une TListBox, je vois mieux.

    Après les possibilités sont multiples.
    Essaie un truc et reviens si tu bloques.

  6. #6
    Membre du Club

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 43
    Points : 48
    Points
    48
    Par défaut
    Bonjour

    Je relance le topic car la 2ème question de Ben_le_cool m'intéresse très fortement.
    J'ai une situation où je peux me retrouver avec un sous-menu contenant beaucoup d'items (ils sont ajoutés dynamiquement). Du coup, une petite flèche apparaît en haut et en bas pour scroller. C'est très lent et pas pratique. Vous me direz que mon menu est bidon pour avoir à afficher autant d'items mais c'est comme ça

    J'avais pensé à faire apparaître le menu sur plusieurs colonnes (c'est bien possible pour le menu Démarrer de Windows). Ou alors pourquoi pas mettre un "vrai" scroll bar à la place de ces 2 flèches.

    Donc si qqun a une solution ou la réponse au message suivant de Droïde Système 7, je suis preneur :

    Citation Envoyé par Droïde Système7 Voir le message
    Je ne sais pas si ça peut t'aider, mais il est possible se scinder le contenu en deux colonnes.

    J'ai tenté de bidouiller, mais je n'y arrive pô
    Je précise que je n'ai pas envie de simuler le popup avec un autre composant type TListBox, ça serait trop galère avec l'existant que j'ai déjà.
    J'ai aussi jeté un coup d'oeil sur la JVCL mais il n'y a rien de plus à ce niveau.

    Merci d'avance.

  7. #7
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Bonjour,

    Donc si qqun a une solution ou la réponse au message suivant de Droïde Système 7, je suis preneur :
    Ça y est j'ai retrouvé, j'explique :

    Par exemple tu clics sur l'item du milieu de ton très très haut PopUpMenu (standard) et là en propriété :

    Break => change ce qu'il y a par défaut

    @+

  8. #8
    Membre du Club

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 43
    Points : 48
    Points
    48
    Par défaut
    Très bien ! Je vais pouvoir me débrouiller avec ça.

    Merci !

Discussions similaires

  1. Réponses: 6
    Dernier message: 03/10/2007, 14h58
  2. Réponses: 2
    Dernier message: 08/09/2007, 11h58
  3. [XSL] Limiter le nombre de caractères à afficher
    Par KingSora dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 20/09/2006, 16h07
  4. Limiter le nombre d'items d'un menu déroulant
    Par greg778 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 12/02/2006, 16h05

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