Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-04-2004
ramiretor ramiretor is offline
Miembro
 
Registrado: may 2003
Ubicación: México
Posts: 196
Poder: 22
ramiretor Va por buen camino
Posicionarse con dbGrid

Hola foro:
Bueno tengo un ligero problema que he intentado arreglar pero no he podido .
El asunto es que tengo en un form, los componentes:
TQuery
TDataSource
TDBGrid

en el clic de un botón abro la consulta y todo funciona muy bien. El problema está en que cuando la consulta trae muchos registros, en muchas ocasiones se tienen que usar la barra de scroll vertical para desplazarse hacia abajo o hacia arriba. Al desplazarse también se desplaza el registro seleccionado y lo que quiero es que unicamente al hacer clic quede seleccionado el registro y una vez seleccionado ya no se desplace la selección sino unicamente la consulta.

Si alguien puede orientarme se lo agradeceré.

Saludos a todos y espero haberme explicado bien

__________________
Ernesto R.
Responder Con Cita
  #2  
Antiguo 14-04-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Esto no es posible con un dbGrid.... aunque no logro imaginarme porque queres el otro comportamiento... si contas algo de lo que queres conseguir, quizas haya otra forma de afrontarlo...
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 15-04-2004
ramiretor ramiretor is offline
Miembro
 
Registrado: may 2003
Ubicación: México
Posts: 196
Poder: 22
ramiretor Va por buen camino
Gracias por contestar.
Bueno lo que pasa es lo siguiente, en la lista que presenta el Grid puede haber más de un registro para un cliente, pero lo que quiero es que se quede seleccionado el registro donde se hizo clic la última vez, es decir que pinte unicamente el registro del clic y se puedan desplazar por el resto de los registros pero que no se pinte otro registro si no solamente en el que se hizo clic porque este registro pasará los parámetros para una pantalla, y porque a lo mejor se está buscando otro registro para el mismo cliente pero que no se pierda el primero que se seleccionó.

No sé si queda claro, espero alguien me pueda echar una mano o idea

Saludos foristas
__________________
Ernesto R.
Responder Con Cita
  #4  
Antiguo 16-04-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Podrías mirar de hacerlo con multiselección, lo que pasa es que entonces, cada vez que hagan "clic" en el lateral del Grid, te cogerá ese registro.

No lo he probado, pero seguramente por código podrías mirar de controlar que la selección no sea mayor a un registro. Mira de investigar por este lado
Responder Con Cita
  #5  
Antiguo 16-04-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por ramiretor
puede haber más de un registro para un cliente
Además de lo que ya te han idicado mis compañeros en cuanto a que de hecho no es posible hacerlo con un DBGrid, esto que dices suena a un mal planteamiento de tus tablas: si hay más de un registro por cliente entonces debes normalizar tus tablas separándolas en dos: la de clientes y la de los detalles- que serán los distintos registros por cada cliente que ves actualmente en el grid. De esta forma, además de tener un mejor planteamiento de las tablas, colocarías dos grids, uno por cada tabla enlazando éstas por una relación maestro detalle de manera que al seleccionar un cliente en el primer grid el segundo te mostrará todos los registros correspondientes a dicho cliente.

Esto no soluciona directamente tu problema, pero sí tendrás una mejor estructura.

Por otro lado, no queda claro exactamente lo que deseas. Entiendo que al seleccionar uno de los registros se pretende usar sus valores para alguna otra cosa; entonces, ¿para qué seguir desplazándose por la lista?

Ahora bien, independientemente de todo lo anterior, si no deseas normalizar tus tablas y en espera de una explicación más clara, algo que puedes hacer, a grandes rasgos, es lo siguiente:

En el evento OnCellClick del grid (lo más cercano a cuando 'haces click' ya que el grid no tiene evento OnClick) apuntas un bookmark al registro actual:


Código:
// Bookmark será una variable string

Bookmark := DBGrid.DataSource.DataSet.Bookmark;
Con esto, aún cuando se desplacen por los demás registros, ya tienes una referencia al registro deseado. En el momento en que desees utilizarlo simplemente pondrás


Código:
DBGrid.DataSource.DataSet.Bookmark := Bookmark;
con lo que se regresará inmediatamente al registro antes seleccionado.

De cualquier manera te sugiero repensar el problema en sí- lo que estás trando de hacer. Cuando surgen este tipo de preguntas en las que se desea hacer algo 'fuera de lo común', muchas veces es un reflejo de que algo en el diseño no está del todo correcto.

// Saludos

Última edición por roman fecha: 16-04-2004 a las 03:14:21.
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


La franja horaria es GMT +2. Ahora son las 14:18:50.


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