![]() |
Enviar teclas al teclado
Cordial saludo a todos,
Existe algún comando-función para enviar teclas al buffer del teclado???. La idea es que cuando un control reciba el foco, en caso de que su contenido sea nulo, se envíen una serie de dígitos/letras a dicho control (por ejemplo un TEdit) y que el usuario complete dicho campo con el resto de información quedando preestablecido el inicio del campo y variable la parte final del mismo. Gracias por su colaboracion. |
¿Y no basta asignar los dígitos/teclas a la propiedad Text del TEdit?
// Saludos |
Puedes usar keybd_event, o enviar un mensaje diciendo que la tecla está presionada.
Saludos! |
Gracias por responder.
>>¿Y no basta asignar los dígitos/teclas a la propiedad Text del TEdit? Básicamente, al hacer esto lo que obtengo es el campo con su contenido pero no puedo hacer que el usuario simplemente continúe digitando sobre el mismo campo. Quiero que el valor asignado quede al comienzo del campo y que el cursor quede ubicado enseguida del último caracter insertado para que continúe digitando el campo. >>Puedes usar keybd_event, o enviar un mensaje diciendo que la tecla está presionada Intenté usar keybd_event pero no sucedió nada. No sé que es lo que no funciona. Lo jice de la siguiente forma: var caracter : Byte begin caracter := StrToInt('0'); keybd_event(caracter,0,0); caracter := StrToInt('7'); keybd_event(caracter,0,0); end; El campo sigue vacío. |
¿Y qué tal algo como
Código:
Edit1.Text := 'abc123'; // Saludos |
Al utilizar SelStart funciona pero el texto queda sombreado y si el usuario comienza a digitar sobreescribe el valor asignado y la idea es que se continúe con el contenido del campo. Para que no sobreescriba se obliga al usuario a presionar la tecla Flecha Derecha y entonces iniciar la digitación, y debido a que se requiere captura de alto número de formularios el impacto es alto.
Alguna sugerencia adicional?? Gracias |
Cita:
Efectivamente funcionó y ahora hace lo que inicialmente deseaba. En este momento tengo una inquietud adicional: Cómo hago para que esto mismo funcione no en TEdit sino en un DBGrid??? Gracias |
Pon la propiedad AutoSelect a false.
|
Cita:
Al buscar en la ayuda, encuentro que AutoSelect es propiedad de aquellos objetos que heredan de TCustomEdit, y la grilla no pertenece a este grupo. Alguna sugerencia??? |
Cita:
PD: Otra solución puede ser hacer un PASTE en un control! Saludos! |
Perdón, lo del AutoSelect a false aplicaba para el Edit, es que coincidimos en la hora del post, y esa respuesta la puse para cuando decías no te funcionaba el SelStart.
Lo siento, para Grid, no sé cómo hacer. Saludos.... |
Para conseguir que al entrar en cada celda de un DBGrid lo haga en modo edición, como si pulsaras la tecla F2, aparte de activar dgEditing y dgAlwaysShowEditor en Options, hay que recurrir al método EditorMode de la clase TCustomGrid, que logra que aparezca el cursor parpadeando al final, pero éste es protected. Así que una forma de solucionarlo es declarar una clase que haga de intermediaria:
Código:
TMyGrid = class(TCustomGrid) Código:
// interceptamos el OnColEnter del DBGrid |
:) Gracias por responder.
La solución planteada por andres funciona perfectamente. Ya solucioné mi problema. Quiero resaltar de esta respuesta, la claridad en su explicación y el hecho de insertar un ejemplo, datos con los cuales pude fácilmente dar solución a mi inquietud. Nuevamente, mil gracias:cool: |
La franja horaria es GMT +2. Ahora son las 07:24:23. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi