Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-09-2012
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Posicionarse en DBGrid según tecla pulsada

Hola amigos:

En un DBGrid conectado a una base de datos Access, que posee un primer campo Nombre, necesito posicionarme en el primer registro en que el nombre comienze con la letra de la tecla que se pulsa.

Ejemplo: Si pulso la tecla p que se posicione en Pablo y si pulso la tecla m lo haga en Matías.

Mis escasos conocimientos no me han permitido dar con el código y en las búsquedas no he encontrado nada que relacione los eventos del teclado con esta condición.
Agradezco desde ya cualquier aporte.

Saludos y muchas gracias
Responder Con Cita
  #2  
Antiguo 23-09-2012
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 20
movorack Va camino a la famamovorack Va camino a la fama
Hola

Podrías ir haciendo un locate parcial o bien podrías colocar una caja de texto donde escribas una condición para filtrar la grid por el campo nombre
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
  #3  
Antiguo 23-09-2012
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Gracias movorack

Ya lo intenté con un query que se activa en el evento OnChange de un Edit, pero no me sirve ya que debe ser algo más dinámico, porque debo vaciar el Edit después de pulsar una tecla, para acceder a otra.
El locate parcial no lo he intentado.
Creo que sería más directo y mejor acceder a través de codificar las acciones del teclado, que es lo que busco.

Saludos
Responder Con Cita
  #4  
Antiguo 23-09-2012
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Logré solucionar el problema utilizando el siguiente código, que dejo por si alguien lo necesita.
Utilizé el locate parcial como sugirió movorack y funcionó.

Código Delphi [-]
procedure Form1.DBGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if key = ord('A') then begin
Tabla1.Locate('nombre', 'a', [loCaseInsensitive, loPartialKey])
end
else
begin
if key = ord('B') then begin
Tabla1.Locate('nombre', 'b', [loCaseInsensitive, loPartialKey])
end
else
begin
.......

y así sucesivamente hasta llegar a la Z

Muchas gracias por tu ayuda movorack
Responder Con Cita
  #5  
Antiguo 23-09-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Creo que lo puedes acortar un poco. (escribo de memoria):

Código Delphi [-]
procedure TForm1.dbgrid1KeyPress(Sender: TObject; var Key: Char);
begin
  if key in ['a'..'z'] then
    tabla1.locate('nombre', key, [locaseinsensitive,lopartialkey]);
end;
Responder Con Cita
  #6  
Antiguo 23-09-2012
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Muchas gracias Casimiro Notevi

Cuando me llegó el email indicando tu participación en el hilo, pensé que me ibas a sancionar por el título o me ibas a mandar a leer la guía de estilo.
Hablando en serio: Probé tu código y si bien no da ningún error, no realiza la acción requerida.
Ideal sería poder acortar el código que yo puse, que ocupa 172 líneas.
¿Cúal es la diferencia en usar onKeyPress en vez de onKeyDown?

Salu2
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Simular tecla @ pulsada angelmt API de Windows 7 27-04-2010 02:39:45
Saber cuando una tecla sigue pulsada angelmsf Varios 3 22-04-2010 01:36:27
Posicionarse en un DBgrid Ubed Varios 1 02-10-2007 17:17:11
Saber si una tecla esta pulsada? fefe13 Varios 9 02-02-2006 18:06:56
LO de la tecla pulsada fefe13 Varios 1 01-02-2006 18:29:19


La franja horaria es GMT +2. Ahora son las 05:27:48.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi