FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
como me ubico en la posicion de un registro buscado en un tsdbgrid
Hola, me gustaria que alguien me pudiera ayudar respecto a como mostrar la informacion en un renglon de un tsdbgrid.
tengo un query (QDetalle) y un datasource (DSDetalle) donde tengo la informacion que muestra mi componente tsdbgrid, en mi primer columna, tengo mi codigo de producto que seria mi llave primaria, entonces cuando tecleo un codigo de producto que ya existe hago la siguiente instruccion: If QDetalle.locate('Pro_Codigo', vlpcodigo, [locaseinsensitive]) then .... con esta instruccion el apuntador del grid se va a hacia donde esta el registro que introduje y ahi se posiciona, pero el problema es cuando son muchos registros que no se ven en una sola pantalla, este apuntador se va hasta el inicio (por ejemplo) y en mi pantalla yo sigo viendo mi ultimo registro en donde estaba tecleando el codigo y no puedo ver hasta donde se fue el apuntador, hasta que lo busque con el boton avance de pagina. La pregunta es, como puedo hacerle para que cuando se vaya el apuntador del grid a posicionarse a la ubicacion de un codigo que este repetido, pueda tambien moverse mi pantalla y mostrarme los datos de ese renglon, sin tener que ir yo a buscar hasta donde se fue mi apuntador? De antemano, gracias por sus opiniones. Saludos desde Mexicali, B.C., Mexico. Ricardo. |
#2
|
||||
|
||||
El tsGrid no lo conozco, pero mira si tiene una proiedad o método llamado:
- MakeVisible, MakeSelectionVisible - TopRow Suerte. |
#3
|
|||
|
|||
Hola, fijate que este componente no tiene ninguna propiedad o metodo make, si trae la propiedad TopRow, pero no funciono a lo que ando buscando.
gracias. |
#4
|
|||
|
|||
Cita:
Yo creo que toprow si funciona, pero quizas no le estas pasando el valor correcto. Tienes que pasarle el valor (Longint) de la primera fila que quieres mostrar. Mira la ayuda acerca de TopRow, creo que te sera util. Y comprueba tambien la ayuda de la propiedad RecNo de los TDataset. Y debajo de esto: Cita:
Código:
tsdbgrid.toprow:= QDetalle.dataset.recno; |
#5
|
|||
|
|||
Hola!
Hola, hice lo que me indicaste, poniendo esto:
tsdbgrid.toprow:= QDetalle.dataset.recno; pero me marca error en el datset, dice que es deconocido, lo cambie a esto: tsdbgrid.toprow:= QDetalle.DataSource.DataSet.RecNo; pero me marca un desbordamiento de memoria y que ese modulo no esta en memoria. Encontre esta instruccion: dbgDetalle.MoveBy(-50); donde el numero del parentesis indica las posiciones a regresarse en el tsdbgrid, y funciona con ese numero fijo!!, ahora el problema es como saber en que posicion esta mi apuntador, con la siguiente instruccion: Qdetalle.RecNo; se supone que me regresa un entero con el numero de la posicion de mi registro, pero no me explico por que siempre me regresa un -1, alguien sabe por que? o si existe otra forma de como saber en que posicion se encuentra mi apuntador en la tabla? lo que estoy haciendo es esto: If QDetalle.locate('Pro_Codigo', vlpcodigo, [locaseinsensitive]) then dbgDetalle.MoveBy(Qdetalle.RecNo); pero como me regresa un -1 el Qdetalle.Recno, solo me avanza una posicion hacia atras y mi apuntador se encuentra en otra parte. ejecuto aparte Qdetalle.RecNo; para ver que numero muestra, y siempre me trae un -1, siendo que tengo 187 registros. Gracias por su ayuda. Saludos. |
#6
|
|||
|
|||
Hola,
Sigo sin saber que grid utilizas , ni tampoco se que es dbgdetalle ?? Cita:
Tendras un datasource que enlaza el query con el grid, verdad?? Pues utiliza: datasource.dataset.recno; en lugar de query.recno; Yo nunca uso locate, asi que no se porque no cambia el recno de tu query, quizas alguien más pueda ayudarte en eso. Saludos |
|
|
|