Ir al contenido


Foto

Forzar un Shortcout


  • Por favor identifícate para responder
6 respuestas en este tema

#1 Arkam

Arkam

    Newbie

  • Miembros
  • Pip
  • 3 mensajes

Escrito 04 marzo 2017 - 12:19

Un saludo a todos.
El tema que desearia conocer consiste en como forzar un shortcout.
Me explicaré: estoy intentando desarrollar una aplicación (bajo la plataforma Linux Mint) con varios Forms, en los cuales se integran distintos componentes como TBitBtn y TMainMenu, los cuales tienen asociados cada un sus correspondientes shortcuts. Sin embargo los caracteres subrayados solo se hacen visibles presionando la tecla Alt.
Agradecerá mucho saber si existe la posibilidad de simular por código, o de cualquier otro modo, la pulsación de esta tecla, de modo que cuando se ejecute la aplicación ya aparezcan los caracteres subrayados, sin necesidad de presionar continuamente la tecla Alt.
He buscado en este foro, así como en otros sitios, información al respecto, pero esta ha sido infructuosa o tal vez no he sabido buscar bien. Advierto que hace poco tiempo que llegué a Lazarus.


  • 0

#2 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 05 marzo 2017 - 11:16

Un saludo a todos.
El tema que desearia conocer consiste en como forzar un shortcout.
Me explicaré: estoy intentando desarrollar una aplicación (bajo la plataforma Linux Mint) con varios Forms, en los cuales se integran distintos componentes como TBitBtn y TMainMenu, los cuales tienen asociados cada un sus correspondientes shortcuts. Sin embargo los caracteres subrayados solo se hacen visibles presionando la tecla Alt.
Agradecerá mucho saber si existe la posibilidad de simular por código, o de cualquier otro modo, la pulsación de esta tecla, de modo que cuando se ejecute la aplicación ya aparezcan los caracteres subrayados, sin necesidad de presionar continuamente la tecla Alt.
He buscado en este foro, así como en otros sitios, información al respecto, pero esta ha sido infructuosa o tal vez no he sabido buscar bien. Advierto que hace poco tiempo que llegué a Lazarus.

 

Hola Arkam, Bienvenido a DelphiAcess.

Espero que esta comunidad te sea de buen agrado y se convierta en tu segundo hogar.

 

El hecho de que estés usando y compilando para alguna distribución de Linu, lo hace más difícil. En Windows bastaría con hacer uso de la API keydb_event() para simular la pulsación, o la API SendKeys(). Hay un par de opciones de hacerlo bajo Windows. Pero en Linux, la verdad desconozco si hay alguna forma "equivalente" como esta.

 

Y hay una cuestión más, que se me hace que eso de que muestre o no el caracter resaltado ya escapa de nuestro desarollo sino que es cosa de como el propio SO maneja las ventanas. En Windows Vista y posteriores también se ocultan (de hecho no se ven los menus en muchas aplicaciones) y hay que presionar Alt que se muestren y ahí mismo se resaltan los caracteres del shortcut. En Windows XP en cambio el menú no se oculta y los caracteres de los shortcuts están subrajados.

Ahora en Linux es... de nuevo, más complicado porque existen variados manejadores de ventanas. GTK, Qt, etc. Cada distro tiene lo suyo y "toquetea" algo seguramente. Por debajo de cualquiera de todo eso se traduce a alguna llamada a una API Kernel. La pregunta es ¿Cuál? Linux es de código libre, y ha dado tanta libertades que se ha dispersado demasiado. Le hace falta un MSDN y necesita empezar a unificar varias cosas seriamente. Tener un único punto de acceso para consulta a los desarrolladores... Te ves condicionado a buscar cada cosa dependiendo del "sabor" de manejador de ventana, "sabor" de paquete, "sabor" de formato, "sabor" de distro... Va a llegar el momento en que tal dispersión va a terminar matándolos. Miguel de Icaza dió alguna vez algunas expresiones en ese sentido.

 

Se que no ayudo mucho la verdad. Al igual que tu he tratado de hacer unas búsquedas y no encuentro algún sitio que me aclare el panorama. Espero que otros compañeros tengan algún consejo o propuesta. Por lo pronto lo que te puedo recomendar es que acudas al foro de Lazarus/FreePascal. Ahí tendrás más posibilidades de encontrar una respuesta.

 

Saludos,


  • 0

#3 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 05 marzo 2017 - 01:24

Al parecer hay un componente que nos permitiría simular entradas de teclado, y que es multiplataforma. Se llama MouseAndKeyInput.

Ahora bien hay dos cosas que es importante señalar: Una es que su licencia es GPL por lo que de usarlo tu aplicación también deberá ser GPL. Y lo más importante es que NO soporta la tecla Alt.  :( 

 

Seguimos en la misma nada. :(

 

Saludos,


  • 0

#4 Agustin Ortu

Agustin Ortu

    Advanced Member

  • Moderadores
  • PipPipPip
  • 831 mensajes
  • LocationArgentina

Escrito 05 marzo 2017 - 02:02

De todos modos yo creo que lo que intentas hacer va en contra de lo que se esperaria de la aplicacion. Lo normal es que no solo luzca, sino que se comporta como la plataforma lo define. Los framework hacen un esfuerzo tremendo por lograr que la experiencia de usuario sea la que el usuario espera.

 

Si vos simulas que la tecla alt este presionada, entonces eso significa que si yo aprieto la tecla "B"  el sistema detectaria "Alt+B" y se ejecuta el menu contextual "Buscar" (por poner un ejemplo)

 

Yo creo que la solucion va por otro lado. Si lo que necesitas es que los usuarios puedan descubrir cuales son los atajos de tu aplicacion, podrias poner un boton que sea bastante vistoso, con el icono universal "?"  y que al presionarlo se muestre una pantalla que indique para cada funcion cual es su atajo


  • 0

#5 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 05 marzo 2017 - 02:32

De todos modos yo creo que lo que intentas hacer va en contra de lo que se esperaria de la aplicacion. Lo normal es que no solo luzca, sino que se comporta como la plataforma lo define. Los framework hacen un esfuerzo tremendo por lograr que la experiencia de usuario sea la que el usuario espera.

 

Si vos simulas que la tecla alt este presionada, entonces eso significa que si yo aprieto la tecla "B"  el sistema detectaria "Alt+B" y se ejecuta el menu contextual "Buscar" (por poner un ejemplo)

 

Yo creo que la solucion va por otro lado. Si lo que necesitas es que los usuarios puedan descubrir cuales son los atajos de tu aplicacion, podrias poner un boton que sea bastante vistoso, con el icono universal "?"  y que al presionarlo se muestre una pantalla que indique para cada funcion cual es su atajo

 

Buen punto.

¡Incluso hay que repasar en casos en los que pudiera dar incluso un falso shortcut!

Otra posibilidad, y que he visto en un par de aplicaciones es la distinguir la tecla caliente mediante corchetes. Por ejemplo: [A]rchivo. No queda tan mal.

 

Saludos,


  • 0

#6 Arkam

Arkam

    Newbie

  • Miembros
  • Pip
  • 3 mensajes

Escrito 06 marzo 2017 - 05:05

Muchas gracias por vuestras indicaciones, muchas de las cuales me están confirmado algunas de mis sospechas.
Sobre todo que la presentación de los shortcuts depende de como el sistema operativo y sobre todo el entorno gráfico (Kde, Gnome, Unity...), gestionan tanto ventanas como teclas. Precisamente, este fin de semana, un colega me comentó que hace unos meses instaló Lázarus en Ubuntu 16 bajo entorno Unity. La instalación se ejecutó sin problemas, pero la ejecución de sus aplicaciones no fué precisamente satisfactoria, precisamente con los shortcuts. Si bien el caracter subrayado no se mostraba sin pulsar Alt (algo con lo que parece que deberemos aprender a vivir), el verdadero problema es que al ejecutar el shortcut también se ejecutaba la ventanita de lanzamiento de comandos del sistema. Finalmente, tras darle varias vueltas a la cosa y viendo que debería alterear demasiado el funcionamiento de este entorno, el hombre optó por cambiar el escritorio a otro menos inovador que Unity. La verdad es que Unity, ni a el ni a mí, no nos ha hecho nunca demasiada gracia. Sin embargo todo esto demuestra que cada entorno gráfico va por su lado, tal como Delphius nos ha referido en los casos de WindowsXp y Vista.
También es muy cierto, como indica Agustín, que al simular la tecla Alt, al pulsar cualquier tecla el sistema detectará inevitablemente Alt+tecla, por tanto lo que solucionamos por un lado lo estropeamos por otro. No se como no caí en ello. También estoy empezando a pensar que la solución hay que buscarla en otra dirección, solo falta toparse un dia con ella.

Un cordial saludo a todos.
 


  • 0

#7 Agustin Ortu

Agustin Ortu

    Advanced Member

  • Moderadores
  • PipPipPip
  • 831 mensajes
  • LocationArgentina

Escrito 06 marzo 2017 - 07:37

En Windows 10 (no lo recuerdo en versiones anteriores y me he saltado Windows 8), cuando pulsas Alt se aprecia esto para indicar los atajos:
 
Archivo adjunto  shortcuts.png   148,23KB   2 descargas
 
Y luego si ejecuto alguno de ellos, por ejemplo, Inicio (h), se despliega esto (no se porque motivo no logro obtener una captura de pantalla completa)
 
Archivo adjunto  shortcuts2.png   49,94KB   3 descargas
 
Quiza te sirva de inspiracion


  • 0




IP.Board spam blocked by CleanTalk.