Recherche d'un moyen d'avoir un «bouton de survol» pour développer une section

StackOverflow https://stackoverflow.com/questions/159262

  •  03-07-2019
  •  | 
  •  

Question

J'ai un panneau de flux dans lequel j'y ajoute des éléments supplémentaires au moment de l'exécution, en fonction de leur choix d'afficher ou non tous les éléments. c'est tout fonctionne bien; l'expansion est contrôlée par un bouton de la barre d'outils.

le problème est que nous voudrions que l’utilisateur puisse déplacer sa souris sur le " + " signe pour développer la section.

alt text

Au départ, j’ai regardé TSpeedButton (OnMouseEnter), mais même quand il est "plat", le rectangle de focus est toujours affiché et le glyphe n’est donc pas centré. Le principal problème de cette solution est son apparence.

alors j'ai regardé faire un descendant de TImage. c'est un peu "non conventionnel" et mais ça marcherait. dans OnMouseEnter ou OnClick, il basculerait un booléen interne " Expanded " drapeau puis chargez l’image appropriée à partir d’une ressource. J'ai une aversion pour les solutions non conventionnelles comme ça.

Je dois l’ajouter à quelques écrans différents, il est donc probablement prudent que j’ai / construise un composant pour cela. J'ai JVCL mais je ne vois rien qui puisse convenir.

merci pour vos commentaires / aide!

Était-ce utile?

La solution

J'ai toujours aimé l'approche utilisée par l'Explorateur de code ModelMaker .

Par exemple, lorsque vous ajoutez une nouvelle méthode, certains éléments rarement utilisés sont affichés réduits (Options et directives dans l'image ci-dessous).

 alt text
(source: 17slon.com )

Lorsque vous survolez le texte, vous remarquez qu'il s'agit en réalité d'un bouton plat. (Sauf que ce n'est pas - je crois que Gerrit fait ici de la peinture magique sur mesure).

 alt text
(source: 17slon.com )

Lorsque vous cliquez sur ce bouton, un panneau apparaît. Le bouton est toujours là, mais avec une nouvelle image. Vous pouvez cliquer dessus pour fermer le panneau.

 alt text
(source: 17slon.com )

L'état de ce bouton bascule est préservé entre les sessions. IOW, même si vous redémarrez Delphi, vous invoquez 'Ajouter une méthode' le prochain panneau, le panneau 'Options et directives' apparaîtra exactement comme vous l'avez laissé la dernière fois.

Autres conseils

  

j'ai une aversion pour les solutions non conventionnelles comme ça.

Ces dernières années, je suis devenu un peu méfiant vis-à-vis des solutions UI non conventionnelles - ce que vous semblez créer ici. Pourquoi ne pas simplement utiliser un bouton que l'utilisateur doit réellement cliquer ? Cela semble être beaucoup plus courant dans les logiciels que j'utilise, que ce soit MS Office ou des utilitaires de programmation. De plus, je rendrais le bouton un peu plus grand: dans la capture d'écran, cela semble vraiment être une toute petite chose à cibler avec le curseur de la souris. Oh bien, et si je vous dérange avec le conseil que vous n'avez pas demandé de toute façon, pourquoi ne pas lui donner "> > "" comme une légende au lieu de "+ +" Et si vous lui donniez une légende textuelle avec une mnémonique également, il serait en fait accessible au clavier. Tout cela devrait rendre votre interface utilisateur meilleure et plus intuitive. Je suppose.

Je m'excuse de ne pas avoir répondu à votre question, mais j'espère que vous passerez 2 minutes à vous demander si vos utilisateurs préféreraient cette solution: -)

Bonne chance!

En fait, je pense que l’utilisation d’un TImage dans cette situation est assez conventionnelle. J'ai vu beaucoup de gens suggérer d'utiliser TImage, alors que TButton ou l'un de ses associés ne disposait pas du contrôle nécessaire pour ce que le développeur essayait de faire.

Avez-vous essayé un TBitBtn? Je pense que lorsque vous supprimez le texte, il est centré sur l’image que vous lui associez. Je viens de vérifier dans Delphi 6, tout ce que j’ai installé sur cette machine et l’événement MouseMove.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top