![]() |
Salto de Celdas y Filas con ENTER
Hola,
quiero saber como salto de fila (row) en un dbgrid con ENTER al final de la fila. Salto de celdas con ENTER y tambien quiero hacerlo con las filas. |
Prueba este Trucomania:
Código:
begin |
Prueba con este otro código a ver que te parece:
Código:
procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word; |
...tampoco tengo mucho tiempo en Delphi, pero me llama la atención la cantidad de líneas para algo que parece tan sencillo. En otro lenguaje que uso (cada vez menos....) existe una propiedad de sesión que permite asignarle al ENTER la propiedad del TAB, o algo así. Por el tiempo que uno desee, el ENTER funciona tal como lo haría el TAB. ¿ Alguien conoce algo parecido ? ¿ que el ENTER 'simule' un TAB cuando necesite ?
Roy |
Una cosa es que la tecla <Enter> actúe como Tab y otra lo que tu has preguntado que se refiere a una rejilla.
Si la tecla <Enter> simulara un <Tab> cuando pulses enter sobre un botón saltará al siguiente control y quedarían todos los botones inoperativos. Fíjate en el código de Jhonny. Bueno un saludo. Diole cebada al mulo el buen cibulo........ "Sanmaniego" |
Hola.
Yo queria hacer algo parecido ha esto pero en un Edit, me esplico. En el evento OnKeyPress del Edit tengo algo asi: if Key = #13 then begin Key:=#0; Perform(CM_Dialog,VK_TAB,0); -->(creo q es esto jeje ;) ) end; Pero el caso que yo lo que quiero saber es: para detectar la tecla intro se usa #13 para escape #27 pero para las flechas de dirección???? cual es el codigo. Ademas veo que usais los nombres de las virtual keys como VK_TAB, VK_RETURN etc...pero yo he intentado esto if Key = VK_DOWN y me dice que tarari q te vi .... alguien me hecha una mano. Marcoszorrilla usa Key = vk_return y parece q le funciona pero a mi me da un error el compilador cuando he puesto el vk_down. Ademas me he fijado q la Key de OnKeypress es tipo char y sin embargo en OnKeyDown es tipo Word.... puede ser esto??? Gracias...Salu2. |
The OnKeyDown handler can respond to all keyboard keys
Código:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; |
Debes tener en cuenta que contas con tres mètodos relacionados con la pulsación de teclas:
OnKeyDown OnKeyPress OnKeyUp OnKeyDown se ejecuta cuando el usuario pulsa una tecla (practicamente cualquiera de teclado, con excepción de las teclas alt, shift ctrl y la de windows creo yo). OnKeyUp se lanza cuando el usuario suelta la tecla. Estos eventos son muy útiles para programar juegos, por ejemplo, y además traen un conjunto llamado ShiftState donde podes ver si el usuario tiene presionado shift, alt o ctrl (o cualquier combinación de ellas). No recuerdo exactamente si OnKeyPress se ejecuta en medio de estos otros dos o luego de OnKeyUp, pero lo hará solamente con las teclas que tienen un código ascii asociado. Hasta luego. ;) |
Gracias... lo solucione con el OnKeyDown
poniendo if key =vk_down then Table1.next; if key= vk_up then table1.prior; y me funciona a las mil maravillas era el evento... en onKeypress no se puede hacer esto no reconoce las constantes vk_ por la diferencia de tipos. De nuevo Gracias a todos. Por cierto esto lo uso en un Edit para recuperar el codigo de una tabla y debajo del edit tengo un grid q va listando el registro que se esta buscando en el edit si coincide o el mas parecido pero me gustaria hacerlo al estilo de las listas de Access en las qu vas tecleando y te sugiere (seleccionando solo el resto del texto) el campo que empieza por las letras q tu vas pulsando: no se si me entendeis-> si yo tengo en una tabla los codigos-> PATO PANTALON PATATA y escribo en mi edit P en el edit automaticamente me aparece tras mi "P" ANTALON seleccionado y si pulso "R" me desaparece porque no hay ningun codigo que empieze con PR.... Esto como porras se hace??? ;) Si alguien lo sabe que lo diga y no se lo guarde para el...jeje Salu2. |
En el evento OnChange del Tedit:
Código:
MiTabla.FindNearest([Edit1.Text]); Supongo que es esto lo que quieres. Un Saludo. |
Eso ya lo hago marcos a ver me explico .... tengo unos cuantos edit q uso para insertar lineas a una tabla
En el primer edit en el evento Onchange hago una busqueda en la tabla de articulos tal que asi Table.FindKey[(Edit1.Text)] si esta busqueda encuentra lo que escribe el usuario en el edit lo muestra en los demas edit automaticamente y a la vez tengo debajo un grid q se va posicionando en el registro del edit...si la busqueda exacta falla el evento Onchange realiza una aproximada Table.FindNearest[(Edit1.Text)] lo cual posiciona el cursor en el registro mas parecido al que teclea el usuario en el edit. Si el usuario pulsa intro (en el evento OnKeyPress ) simulo un Tab y ademas compruebo si la busqueda ha sido exacta y cargo los datos de la tabla a los edit esperando que introduzca que cantidad se quiere del articulo y si no es exacta cargo los datos de la busqueda aproximada. Ademas en el evento OnKeyDown controlo que si el usuario pulsa las flechas de arriba o abajo es porq ha visto en el grid el articulo y lo selecciona del grib mientras cargo en los edit los datos de los articulos por los q se desplaza si pulsa intro pues ... le paso el control al edit de la cantidad. Hasta aqui lo que hace mi aplicacion...y ahora lo que quiero que haga: ->>quiero que el edit se autocomplete con el codigo del articulo si existe mientras lo va tecleando (tipo access o el cuadro de busqueda del internet explorer o muchos otros...pero en un edit no en un lookupcombobox ni nada de eso) si el pulsa PA y el primer articulo de la base que coincide con PA es PATATA quiero que despues de PA le salga TATA seleccionado en el edit...y si sigue escribiendo y pulsa PAR y no hay ningun articulo que empieze por esas letras no muestre nada y cuando pulse intro solicite crearlo...no como hago ahora que cargo el mas parecido ..pero esq el mas parecido puede ser POTITOS....jeje.) Creo que ahora esta mas claro...pufff...lo q pido. Bueno lo he visto en aplicaciones comerciales asiq no puede ser imposible (p.ej: el TPV de IslaSoft hace lo que yo pido... como lo hace??? aaaaaaa....no se lo voy a preguntar a ellos no ;) ) Salud2. |
Prueba con este código, no lo termino porque hoy es fiesta y estoy un poco vago pero creo que básicamente te puede servir:
Código:
private |
La franja horaria es GMT +2. Ahora son las 13:11:28. |
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