PDA

Ver la Versión Completa : Recorrer SMDbgrid


ingel
17-06-2005, 17:19:55
hola a todos ..
Estoy comenzando a usar los smcomponents , especialmente el SMDbgrid ,
y hasta ahora no logro encontrar lo que equivaldria al Stringrid.cells[x,i].
solo rescato los valores de las columnas de la FILA donde estoy posicionado..
con SMGrid.columns.items[i].field.asstring
lo que necesito es simplemente recorrer toda la grilla y tomar el valor de cada celda ...
saludos y gracias.. sigo intentando
Ingel

jachguate
17-06-2005, 17:50:09
Entiendo que es un grid asociado a datos. Si es así, no hace falta usar el grid en absoluto, pues este es solo una representación visual de los datos contenidos en un Dataset, al que podes referirte libremente:


a := MiTabla.FieldByName('Campo').AsString
a := MiTablaCampo.AsString;
a := SMGrid.DataSource.DataSet.FieldByName('Campo').AsString;
//y una larga lista de etceteras...


Hasta luego.

;)

ingel
17-06-2005, 18:01:14
Entiendo lo que me decis ...
pero puede haber casos en que los datos del SMgrid no hagan referencia a una tabla como por ejemplo para saber si la fila esta checkeada o no..que es una propiedad del smdbgrid .. para lo cual necesito recorrer la las filas ... y es justo lo que no encuentro....
La equivalencia con el cells[col,fila] la tiene que tener ...
GRACIAS..Saludos

jachguate
17-06-2005, 18:15:13
pero puede haber casos en que los datos del SMgrid no hagan referencia a una tabla como por ejemplo para saber si la fila esta checkeada o no..
Solo podrá estar chequeada una fila que pertenezca a la tabla, ¿no es cierto?

No conozco el componente en cuestión, pero suponiendo que está programado de manera similar a lo existente en la VCL, probablemente publique una lista de bookmarks a las filas del dataset que estén seleccionadas por el usuario, de manera similar a lo que hace el TDBGrid en su propiedad SelectedRows. Si no es así, te recomiendo revisar la documentación oficial del componente o consultarle al fabricante.

La equivalencia con el cells[col,fila] la tiene que tener ...

Insisto en que tal equivalencia no existe. Supongamos que un DataSet tiene 1,000,000 de registros... el grid no creará un millón de filas con los datos (duplicados) del dataset. Si 10 filas están visibles, seguramente solo cree 10 filas en memoria con una referencia a cada registro del dataset y consulte directamente a este cuando tenga que repintarse. Probablemente no cree ninguna fila y se valga enteramente del dataset.

Hasta luego.

;)

chachomon
06-07-2007, 00:41:27
hola. mas o menos me encuentro en una situacion similar, y quiero saber si alguen me puede ayudar. lo que quiero hacer es un boton el cual al darle clic cambie los cambios realizados que seria lo mismo que dar clic derecho en el grid y elegir save changes y tambien con la opcion de Discard changes. pero no se que eventos, procedimiento es.

espero me puedan ayudar

Saludos