![]() |
key de CTRL+V y de CTRl+C
Tengo un edit con el siguiente código en el evento OnKeyPress para que admita solo números decimales:
Esto me impide copiar y/o pegar en el edit, pero necesito poder hacerlo. He pensado poner una condición algo así: If (key = 'VK_KeyDeCtrl+V) or (key = 'VK_KeyDeCtrl+C) then ....controlar valor pegado else ... control entrada solo números ¿ key de CTRL+V y de CTRl+C ?, o algún sitio donde pueda buscarlas. Gracias. |
El problema del OnKeyPress es que no te da información extra de teclas de CTRL, ALT,... como hacen por ejemplo el OnKeyDown/OnKeyUp.
La primera opción es ver si puedes cambiar el código a uno de estos eventos. Si no puedes, la otra opción es utilizar la API para preguntar cómo está en un momento dado una determinada tecla. GetKeyState o GetKeyboardState te pueden servir. Para ver cómo se usan puedes revisar este post de Roman. |
Yo me andaría con ojo, ya que mucha gente (por ejemplo, yo ;)) utiliza las combinaciones [Ctrl]+[Ins] y [Mays]+[Ins] para copiar y pegar (aparte de [Ctrl]+[Supr] para cortar, etc). Creo recordar que también se puede cambiar en la configuración del teclado qué teclas utilizar para estas operaciones.
¿No hay alguna forma de obtener (por ejemplo, del registro) cómo están configuradas estas combinaciones? |
Creo que estamos confundiendo las cosas, cuando copiamos o pegamos, ya sea usando el menú o utilizando alguna combinación de teclas, lo que llega al edit son los mensajes WM_COPY y WM_PASTE. En ningún momento llegan al edit las pulsaciones de esas teclas porque se procesan por windows mucho antes.
Para controlar cuando, y como, se copia y se pega lo que tenemos que hacer es interceptar los mensajes WM_COPY y WM_PASTE. Se puede hacer de varias maneras, pero ahora mismo se me ocurre que lo podemos hacer sustituyendo el WndProc del edit. Algo así:
|
Cita:
// Saludos |
Gracias a todos, voy a ponerme con lo que me indicais.
Un saludo. |
Cita:
|
Lo he solucionado a través del evento OnChange del edit. Controlo que el edit solo pueda admitir números con una coma, y el edit permite copiar y pegar.
Gracias. Un saludo. |
| La franja horaria es GMT +2. Ahora son las 21:44:42. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi