Delphi/Lazarus: Asignar ShortCut a MenuItem mediante código
Pregunta de Compi | 03/11/2026 a las 17:57
Quiero establecer la combinación de teclas (ShortCut) de un elemento de menú (Menu Item) mediante código, en lugar de hacerlo a través del Object Inspector. En el Object Inspector existe una lista desplegable para seleccionar dicho atajo de teclado.
Sin embargo, al escribir la siguiente línea de código...
MenuItem.ShortCut := 'F1';
...obtengo el siguiente mensaje de error:
Error: Incompatible type for arg no. 1: Got "Constant String", expected "TShortCut"
¿Qué estoy haciendo mal aquí? En el Inspector de Objetos también selecciono una cadena de texto, pero, al escribir el código, el compilador indica un error porque he pasado una cadena. ¿O es que esta propiedad solo se puede modificar a través del inspector?
Temas Relacionados
MySQL: Saltos de Línea en MySQL
Consejo | 0 Comentarios
Delphi/Lazarus: Seleccionar todo con CTRL+A en ListView
Consejo | 0 Comentarios
Lazarus: Cargar Archivo como Array de Bytes y Guardar Array de Bytes como Archivo
Tutorial | 0 Comentarios
Delphi/Lazarus: ¿Está presionada la tecla ALT, SHIFT o CTRL?
Tutorial | 0 Comentarios
Delphi/Lazarus: Resultado de ShowModal
Consejo | 0 Comentarios
Delphi/Lazarus: Cerrar Programa con la Tecla ESC
Consejo | 0 Comentarios
Lazarus: Detectar el Sistema Operativo (Compiler Switch)
Tutorial | 0 Comentarios
Aviso Importante
Por favor tenga en cuenta: Las contribuciones publicadas en askingbox.com son contribuciones de los usuarios y no deben reemplazar el asesoramiento profesional. No son verificados por independientes y no reflejan necesariamente la opinión de askingbox.com. Aprende más.
Participar
Haga su propia pregunta o escriba su propio artículo en askingbox.com. He aquí cómo.
Modificar o asignar un atajo de teclado también es posible mediante código. Sin embargo, no podemos simplemente pasar una cadena de texto, ya que "TShortCut" es de tipo "Word".
Afortunadamente, tanto Delphi como Lazarus ofrecen la función TextToShortCut(), la cual nos permite convertir fácilmente una cadena de texto al valor numérico necesario.
Por tanto, en su ejemplo, puede escribir:
MenuItem.ShortCut := TextToShortCut('F1');La función TextToShortCut() transforma la representación de string de un atajo de teclado en su representación de código. Para realizar la operación inversa, se dispone de la función ShortCutToText(). Cabe señalar que esta función también se invoca internamente en el IDE al configurar un atajo, lo que permite introducirlo fácilmente como una cadena de texto desde el Inspector de Objetos (Object Inspector).
Otra función útil es ShortCutToKey(). Esta permite descomponer la representación textual de una combinación de teclas en dos elementos: la tecla en sí (Key) y el estado de las teclas modificadoras (ShiftState).
03/11/2026 a las 19:08