[Lazarus-es] Dos preguntas con el dbgrid

Jesus Reyes jesusrmx en yahoo.com.mx
Vie Jun 10 22:20:05 CEST 2011



--- El vie 10-jun-11, christian Ortiz <xortix en gmail.com> escribió:

De: christian Ortiz <xortix en gmail.com>
Asunto: [Lazarus-es] Dos preguntas con el dbgrid
A: "Spanish version of Lazarus List" <lazarus-es en lists.lazarus.freepascal.org>
Fecha: viernes, 10 de junio de 2011, 7:42

Hola a todos

Aqui van mis dudas

1. Como puedo desabilitar el scroll en un dbgrid para que no se mueva el dataset. Me explico mejor,  cuando muevo el scrooll del mouse se mueve la barra lateral para bajar o subir, eso esta muy bien, lo q sucede es que tambien se mueve la posicion del dataset y eso es lo que deseo evitar.

Eso no se puede lograr con el dbgrid tal como esta, ya que para poder efectuarse el grid debria tener el conocimiento de la totalidad de los registros y de esa manera podria calcular los rangos de los scrollbars, ademas esto significaria que cada registro tiene un numero asociado a el y que el grid sabe en todo momento que numero de registro es el actual. Pero eso esta fuera de las posibilidades de un dbgrid.
2. Quiero mostrar hints por cada celda de un dbgrid, mostrando el contenido del dataset donde apunta el mouse. Mostrar el hint en cada celda no es problema, el problema es que no logro capturar el conteido de la celda donde se encuentra el mouse. La problematica se da que la celda no esta activa por lo que no puedo usar dataset.FielByname('campo').asstring. Lo que si tengo son la posicion de la celda.
Lo mismo, y lo que pasa es que el grid solo tiene conocimiento pleno del registro que se encuentra actualmente seleccionado, los demás solo pueden solo se pueden acceder mediante Bookmarks. Para implementar esto tendríamos que guardar en un bookmark el registro actual, obtener el bookmark del registro de interés, seleccionarlo, obtener los datos del hint y finalmente seleccionar el registro actual original. Lo que no es fácil, como lo has expresado, es obtener bookmark del registro de interés, o sea el que se encuentra bajo el cursor.
En general, un dbgrid aunque parece similar a un StringGrid son realmente diferentes, un dbgrid funciona reflejando el estado actual de un Dataset (el cual podría tener en memoria solo una cantidad limitada de registros, digamos 10 registros de un total de un millón), mas no asigna a los registros números únicos y consecutivos. Algo que seria indispensable para implementar la función que deseas.
Sin embargo veo la posibilidad de que de algún modo el grid provea al usuario de algún método para saber que registros están actualmente en pantalla y también poder determinar cual de ellos esta en una coordenada determinada. De esta forma el usuario podría guardar el bookmark del registro actual, hacer el registro de interés el registro actual y poder efectuar las operaciones que se desee para después restaurar el registro actual "anterior". No se si Delphi tenga esta funcionalidad o algo similar, ¿alguien sabe?.
Espero alguien me de una ayuda

Gracias

pd. No existe Datalink :(
pd. No se a que te refieres.


-- 
Christian



Jesús Reyes A.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20110610/70c818d2/attachment-0002.html>


More information about the Lazarus-es mailing list