Ver Mensaje Individual
  #4  
Antiguo 15-07-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Un par de comentarios.

Los componentes DBGrid no están hechos para "recorrerse". Lo que se recorre es el DataSet asociado.

Al comenzar el recorrido puedes obtner los datos de la fla actual con DataSet.FieldByName y recorrer el DataSet con DataSet.Next.

El que los DBGrid no estén hechos para recorrerse no es sólo un capricho mío. Los DBGrid son grids "virtuales", relamente no contienen todos los registros; de lo contrario tendrían que almacenar en memoria todo el contenido de una tabla, lo cual pueden ser miles, cientos de miles o millones de registros. El DBGrid controla el desplazamiento y va leyendo los registros conforme se necesite.

Acabo de hacer una pequeña prueba colcando un DBGrid con 15 filas visibles y no importa en que parte del recorrido me encuentre la propiedad RowCount es siempre 16 (una más de las filas visibles).

El otro comentario es que no debe hacerse un casting del estilo TStringGrid(DBGrid) ya que TStringGrid no es un ancestro de DBGrid (esto ya se discutió anteriormente). Lo correcto sería declarar un descendiente de TDBGrid, digamos TUPDBGrid y hacer el "casting" con él para acceder a las propiedades protegidas.

Pero aún así, está el problema que menciono antes. Hay una buena razón para que Borland haya decidido no publicar en TDBGrid propiedades como RowCount: Las filas son "virtuales", no existen sino que se van actualizando conforme nos vamos desplazando por el DataSet.

// Saludos
Responder Con Cita