FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
¿Cómo simular de "verdad" las teclas SHIFT+TAB?
Hola, me explico:
Tengo un simple TStringGrid, al iniciar está el foco en la primera celda, la fila 1, columna1, ya que la 0,0 es la del título y la de los datos del lado izquierdo. Si se pulsa la tecla TAB, el foco pasa a la siguiente, fila 1, columna 2. Si se repite la pulsación de TAB pasamos a fila 1, columna 3. Cuando se pulsa TAB en la última columan de la primera fila entonces el foco pasa a la primera celda de la segunda columna (2,1), y así sucesivamente hasta llegar a la última fila, columna. Una vez allí, si pulsamos TAB, el foco vuelve al principio, a la celda 1,1. Hasta aquí no he dicho nada que todos sepáis. Bien, si en lugar de pulsar TAB, decidimos pulsar SHIFT+TAB, el proceso es exactamente el mismo, pero al revés, marcha atrás, del final hacia el principio. Y siempre, en ambos casos, es una "rueda" sin fin. Bien, lo complicamos un poco, tengo un array bidimensional con las mismas celdas que tiene el Grid, básicamente se ve así:
Cada posición del array representa una celda del StringGrid anterior.
¿Qué hace esto?, fácil, si nos movemos a una celda de StringGrid y en el array aCeldas esa posición está a 'false', simula la tecla TAB y pasa a la siguiente posición. Todo este "invento" es para que sólo puedan ser editadas unas celdas y otras no, lo mismo existe otra forma mucho más cómoda de hacerlo, pero no se me ha ocurrido o, enfrascado en esto, se me olvidó. Bien, sigo, cambiamos los valores del array para probarlo:
Perfecto, si nos movemos con la tecla TAB o con la tecla SHIFT+TAB, funciona perfecto, tanto hacia delante como hacia atrás, se salta las celdas que en el array están a false y sólo se posiciona en las que están a true. Aunque cuando va hacia atrás no debería de funcionar, viendo el código del evento SelectCell se ve que debería de avanzar, no retroceder, cuando encuentre una posición con valor false , pero funciona perfecto. Bien, continuo, lo que quiero es que pulsando las teclas de flechas IZQUIERDA y DERECHA funcione exactamente igual que con las teclas TAB y SHIFT+TAB. He buscado por los foros y he encontrado diversas formas, pero ninguna de ellas funciona, eso me hace sospechar que no son de "verdad" simuladoras de la pulsación de esas teclas. Ahora sí, ya termino: ¿Cómo puedo simular de verdad las teclas SHIFT+TAB, para que el resultado sea exactamente igual que pulsando esas teclas?. ¡Ale!, se acabó el rollo |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Detectar pulsación de teclas Ctrl, Alt y Shift y teclas virtuales (de función,...) | rrf | Varios | 11 | 09-08-2017 13:24:21 |
El programa se queda "colgado" mientras copia y luego "despierta" | NeWsP | OOP | 5 | 10-03-2010 22:05:40 |
Como hacer que se vea "Si" en vez de "TRUE" en un DBGrid | lu9eui | C++ Builder | 2 | 07-08-2007 04:03:13 |
Necesito llamar a métodos de clases "hija" desde su clase "padre" | Flecha | OOP | 17 | 20-04-2007 00:03:53 |
|