![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#21
|
||||
|
||||
|
Cita:
Bueno, este último no lo he probado. // Saludos |
|
#22
|
||||
|
||||
|
Bueno, he hecho unas pruebas y el código de Román funciona bien
. Me he encontrado con un problema añadido, que ya está solucionado, cuando pulsaba enter sobre una celda para editarla, se quedaba el texto seleccionado, así que si intentaba teclear algo... se perdía lo que había. Un mal menor que ya está solucionado.Escafandra, el código que has puesto creo que necesita algo más que no has puesto, me da error en la línea:
Dice que no sabe qué es 'Tipo'. Hay otra propiedad, IType, o algo así, será esa la que hay que poner, ¿no?
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#23
|
||||
|
||||
|
Ciertamente no había probado con el evento OnSelectCell que proponía Casimiro. Claro, el problema está en el evento. Cuando pulsamos Shift está pulsado constantemente, pero cuando lo simulamos lo despulsamos. Así al retroceder a una celda prohibida se simula un TAB sin Shift y se para...
Cita:
Código:
typedef struct tagINPUT {
DWORD type;
union {
MOUSEINPUT mi;
KEYBDINPUT ki;
HARDWAREINPUT hi;
};
} INPUT, *PINPUT;
Ahora me doy cuenta de que en la unidad windows está definida la estructura y le dan el nombre de iType. Ese es el nombre que debes usar. Saludos. Última edición por escafandra fecha: 21-09-2011 a las 00:21:07. |
|
#24
|
||||
|
||||
|
Cita:
Cita:
![]() // Saludos |
|
#25
|
||||
|
||||
|
A ver..... sigo soltando tonterías.
![]() De una forma o de otra creo que mi componente heredado del stringrid funciona como tú quieres, si quieres te lo envío y le echas un vistazo, aunque aviso que tiene un rato de conversación. ![]() Saludos
__________________
Be water my friend. |
|
#26
|
||||
|
||||
|
Hola !
Voy a tomar parte de este hilo, aunque yo no use el TStringGrid sino el StringGrid de TMS. En cualquier caso tampoco se me ha planteado todavía la necesidad de realizar la acción que comenta Casimiro. Con toda humildad, no entiendo la problemática de este hilo. He realizado pruebas muy básicas para cerciorarme de que lo que pensaba era más o menos así, y creo que he podido comprobar que si funciona como pienso. No he terminado el código pero expongo la idea. El StringGrid tiene el evento OnKeyPress en el cual puedes 'interceptar' las teclas del cursor Izquierda y Derecha. Basta con que muevas la posición Col y Row del StringGrid : StringGrid1.Col := StringGrid1.Col + 1; (o - según Der o Izq) Una vez que te posiciones, compruebas si la celda es editable o no, y si no lo es aumentas la posición de la columna. Al comprobar que llegas a la última columna y pulsas derecha, vuelves a la 1a columna pero con 1 fila más, y así sucesivamente. No veo la necesidad de utilizar la función Keyb_Event. A lo mejor me equivoco, claro está ..... P.D. Al menos en la prueba con un TStringGrid que acabo de hacer, además me funcionan las teclas del cursor 'en cierta manera' como se indica en este hilo. Hacia la derecha va bien, hasta la última columna, pero hacia la izquierda me edita cada celda antes de pasar a la celda anterior.
__________________
Piensa siempre en positivo ! |
|
#27
|
||||
|
||||
|
Cita:
![]() Sólo añadí una variable booleana más y añadí lo siguiente al evento KeyDown:
De esta manera al pulsar "enter" la primera vez se simula F2 y pasa a editar poniendo el cursor al final del texto que exista en la celda. La siguiente vez que se pulsa "enter" se ejecuta normalmente y "acepta" el contenido. La siguiente vez... vuelta a empezar. Cita:
.Cita:
, por lo que decidí dejarlo.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#28
|
||||
|
||||
|
Cita:
Evidentemente podemos capturar en el evento OnKeyDown todas las teclas en juego (VK_TAB, VK_SHIF, VK_LEFT y VK_RIGHT) y mover el foco como tu comentas . PD: Veo que Casimiro comenta sus motivos. Saludos. |
|
#29
|
||||
|
||||
|
A veces, las cosas más sencillas (aparentemente) son las que más tiempo llevan, se complican de una manera absurda con pequeños detalles que no terminan de quedar bien. Solucionamos un detalle y aparece otro, y así sucesivamente hasta que por fin lo tienes ¿todo? controlado.
Cuando te das cuenta, resulta que has perdido un montón de tiempo, pero es lo que tiene cuando quieres hacer algo decente.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#30
|
||||
|
||||
|
Cita:
Cita:
Pero como estaba empecinado con el TAB pues también seguí por ese camino.Toma en cuenta, eso sí, como menciona escafandra, que debes manejar no sólo las teclas LEFT y RIGHT sino también UP, DOWN, PRIOR, NEXT, TAB, o sea, todas las que muevan el cursor del teclado con lo cual prácticamente estás rehaciendo la lógica del movimiento y en ese punto uno se pone a pensar que la idea de Casimiro no es mala pues se termina escribiendo, quizá, menos código. // Saludos |
|
#31
|
||||
|
||||
|
Al principio lo intenté controlando las teclas de flechas, y aunque parece lo más simple, sin embargo no terminaba de funcionar bien, entonces por casualidad vi que las teclas tab y shift+tab funcionaban perfectamente en la misma situación que las teclas normales no terminaban por hacer bien su cometido. Y fue cuando me dije, "pues mejor simulo que he pulsado esas teclas (tab y shift+tab) y se acabó", más fácil, me ahorro de estar controlando las otras teclas.
Ese fue el motivo. Pero si con las teclas de flechas hubiese ido bien, ese sistema es el que habría usado de primera hora. Que no digo que vaya mal, sino que no acababa por ir bien del todo, seguramente estaba haciendo algo mal, no lo sé.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#32
|
||||
|
||||
|
Pues vale, ¿cómo te lo mando?.
__________________
Be water my friend. |
|
#33
|
||||
|
||||
|
Pincha en mi nombre junto al avatar y te saldrá un menú con la opción de "Enviar correo a casimiro".
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#34
|
||||
|
||||
|
Cita:
, pero no veo opción para adjuntar ficheros.
__________________
Be water my friend. |
|
#35
|
||||
|
||||
|
También podrías hacerlo "open source" y publicarlo aquí en este hilo o en el FTP
![]() // Saludos |
|
#36
|
||||
|
||||
|
Cita:
![]()
__________________
Be water my friend. |
|
#37
|
||||
|
||||
|
Cita:
![]() Bastante completo y, como dices tú, muy adaptado para las necesidades de tus programas. Si tiene cerca de 5.000 líneas de código, así que no lo he leído entero ![]() Me servirá para consultar algunas cosillas, eso sí. Gracias.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#38
|
||||
|
||||
|
__________________
Be water my friend. |
|
#39
|
||||
|
||||
|
Tranquilo, en cuanto acabe el libro que estoy leyendo, empezaré con el tuyo
![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
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 |
|