2008-10-01 17 views
2

J'ai un panneau de flux auquel j'ajoute des éléments supplémentaires à l'exécution selon qu'ils ont choisi d'afficher 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 aimerions que l'utilisateur puisse déplacer sa souris sur le signe "+" pour agrandir la section.Recherche d'un moyen d'avoir un "bouton Hover" pour développer une section

alt text http://xrw.bc.ca/download/so/q.gif

Au départ, je regardais TSpeedButton (OnMouseEnter), mais même quand il est « Flat », le rectangle de mise au point affiche encore et si le glyphe est pas placé au centre. le principal problème avec cette solution est son apparence.

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

J'ai besoin de l'ajouter à quelques écrans différents, donc il est probablement prudent pour moi d'avoir/construire un composant pour cela. J'ai JVCL mais je ne vois rien de convenable.

merci pour vos commentaires/aide!

Répondre

6

J'ai toujours aimé l'approche utilisée par le ModelMaker Code Explorer. Par exemple, lorsque vous ajoutez une nouvelle méthode, des éléments rarement utilisés s'affichent («Options et directives» dans l'image ci-dessous).

alt text http://17slon.com/krama/expand-mmx-1.png

Lorsque vous passez la souris sur le texte, vous remarquez que c'est en fait un bouton plat. (Sauf que ce n'est pas - je crois que Gerrit fait de la magie de peinture personnalisée ici).

alt text http://17slon.com/krama/expand-mmx-2.png

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 http://17slon.com/krama/expand-mmx-3.png

L'état de ce bouton à bascule est conservée entre les sessions. IOW, même si vous redémarrez le Delphi, la prochaine fois que vous appellerez 'Add Method', le panneau 'Options and Directives' apparaîtra exactement comme vous l'avez laissé la dernière fois.

+0

merci gabr; Je pense que je vais le faire de cette façon. merci pour vos réponses sur stackoverflow; je vois tes contributions souvent! –

0

En fait, je pense qu'utiliser un TImage dans cette situation est assez conventionnel. J'ai vu beaucoup de gens suggérer d'utiliser le TImage, quand soit le TButton, ou l'un de ses associés n'avait pas la bonne quantité de contrôle pour tout ce que le développeur essayait de faire.

Avez-vous essayé un TBitBtn? Je pense que lorsque vous vous débarrassez du texte, il centre toute image que vous lui avez associée. Je viens de vérifier dans Delphi 6, tout ce que j'ai installé sur cette machine, et il a eu l'événement MouseMove.

+0

que vous pour votre commentaire. je n'ai pas essayé TBitBtn. Je pense que je dois parler plus avec le chef de projet et le marketing. –

1

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

Au cours des dernières années, j'ai grandi un peu suspect de non conventionnelles UI solutions - qui est 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 commun dans le logiciel que j'utilise, que ce soit MS Office ou les utilitaires de programmation. En outre, je ferais le bouton un peu plus grand: dans la capture d'écran, cela ressemble vraiment à une toute petite chose que vous devez cibler avec le curseur de votre souris. Eh bien, et si je vous embête avec un conseil que vous n'avez pas demandé de toute façon, pourquoi ne pas lui donner ">>" comme légende au lieu de "+"? Et si vous lui donniez une légende textuelle avec un mnémonique, ce serait en fait accessible au clavier. Tout cela devrait rendre votre interface utilisateur meilleure et plus intuitive. J'imagine.

Je vous présente mes excuses pour ne pas répondre à votre question, mais j'espère que vous passerez 2 minutes en pensant que vos utilisateurs seraient en fait préférer cette solution :-)

Bonne chance!

+0

merci pour votre réponse. Je partage votre inquiétude et considère le design que j'ai mentionné comme une "mauvaise odeur". ce sont ces gars-là dans le marketing! ;-) –

+0

@ Onnodb- Parfois, il s'agit de l'espace disponible sur l'écran. Vous devez également considérer les utilisateurs avec des résolutions de 1024x768 pix. Pour les grandes applications avec beaucoup de contrôles, il est difficile de mettre tous les boutons appartenant à un module/fonctionnalité/section sur l'écran. – Ampere