Buscando una manera de tener un & # 8220; botón de desplazamiento & # 8221; para expandir una sección

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

  •  03-07-2019
  •  | 
  •  

Pregunta

Tengo un panel de flujo en el que le estoy agregando elementos adicionales en el tiempo de ejecución en función de si han elegido mostrar todos los elementos. eso es todo funciona bien; la expansión está controlada por un botón de la barra de herramientas.

el problema es que nos gustaría que el usuario pudiera mover su mouse sobre el " + " Firmar para expandir la sección.

alt text

Inicialmente miré TSpeedButton (OnMouseEnter) pero incluso cuando está "Flat", el rectángulo de enfoque aún se muestra y el glifo no está centrado. El principal problema con esta solución es su apariencia.

luego miré a hacer un descendiente de TImage. eso es un poco " poco convencional " pero funcionaria en OnMouseEnter o OnClick, cambiaría un booleano interno " Expandido " marca y luego carga la imagen apropiada de un recurso. Me disgustan las soluciones no convencionales como esa.

Necesito agregarlo a algunas pantallas diferentes, por lo que probablemente sea prudente para mí tener / construir un componente para esto. Tengo JVCL pero no veo nada adecuado de antemano.

Gracias por sus comentarios / ayuda!

¿Fue útil?

Solución

Siempre me ha gustado el enfoque utilizado por Explorador de código de ModelMaker .

Por ejemplo, cuando estás agregando un nuevo método, algunas cosas que rara vez se usan se desploman ("Opciones y directivas" en la imagen de abajo).

 texto alternativo
(fuente: 17slon.com )

Cuando se desplaza sobre el texto, observa que en realidad es un botón plano. (Excepto que no lo es, creo que Gerrit hace un poco de magia de pintura personalizada aquí).

 texto alternativo
(fuente: 17slon.com )

Al hacer clic en este botón, aparece un panel. El botón sigue ahí, pero con una nueva imagen. Puede hacer clic en él para cerrar el panel.

 texto alternativo
(fuente: 17slon.com )

El estado de este botón de alternar se conserva entre sesiones. IOW, incluso si reinicia Delphi, la próxima vez que invoque 'Agregar método', el panel 'Opciones y directivas' aparecerá exactamente como lo dejó la última vez.

Otros consejos

  

Me disgustan las soluciones no convencionales como esa.

En los últimos años, me he vuelto un poco sospechoso de las soluciones UI poco convencionales & # 8212; que es lo que parece estar creando aquí. ¿Por qué no solo usar un botón que el usuario realmente tiene para hacer clic ? Eso parece ser mucho más común en el software que uso, ya sea MS Office o las utilidades de programación. Además, haría el botón un poco más grande: en la captura de pantalla, realmente parece una pequeña cosa que debes apuntar con el cursor del mouse. Oh, bueno, y si te estoy molestando con un aviso que no has pedido de todos modos, ¿por qué no lo das " > > " como un título en lugar de " + " ;? Y si también le asignaras un título textual con una mnemotécnica, en realidad sería accesible al teclado. Todo esto debería hacer que su UI sea mejor y más intuitiva. Supongo.

Me disculpo por no responder a tu pregunta, pero espero que pases 2 minutos pensando si los usuarios preferirían esta solución :-)

¡Buena suerte!

En realidad, creo que usar un TImage en esta situación es bastante convencional. He visto a muchas personas sugerir el uso de TImage, cuando el TButton o cualquiera de sus asociados no tenía la cantidad correcta de control de lo que el desarrollador intentaba hacer.

¿Has probado un TBitBtn? Creo que cuando te deshaces del texto, éste se centra en cualquier imagen que tengas asociada. Acabo de registrar en Delphi 6, todo lo que tengo instalado en esta máquina, y tuvo el evento MouseMove.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top