Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Recorrer un cxGrid (https://www.clubdelphi.com/foros/showthread.php?t=51732)

elorza 27-12-2007 09:09:23

Recorrer un cxGrid
 
Hola, estoy utilizando un cxGrid pero ahora necesito sacar varias cosas:

1.- Necesito conocer el nombre de las columnas de esa cxGrid. ¿Qué código utilizo?
for i:=1 to cxGrid.numero_de_columnas do
valor:=cxGrid.col(i).nombre;
......
end;

2.- Necesito RECORRER esa cxGrid y conseguir los valores. ¿Pero, qué código utilizo para acceder a cada registro?
(a si me explico)

for i:=1 to cxGrid.numero_de_registros do
for j:=1 to cxGrid.numero_de_columnas do
valor:=cxGrid.cell[i,j];
...
end;

¿Alguien me puede decir qué código utilizar?

Tal 27-12-2007 10:21:37

Yo no he trabajado nunca con cxgrid pero me imagino que heredará de la glase Tcustomgrid y este tiene la propiedad colcount y rowcount.
La primera es el número de columnas y la otra el número de filas(registros).

Eso te sirve?
Un saludo.

jcarteagaf 29-12-2007 11:08:49

Recorrer un cxGrid
 
Hola, yo tambien uso los cxGrid y son mis favoritos por todas las facilidades que dan haciendo a tu aplicacion muy poderosa.

Para recorrer los valores de un cxGrid, en realidad debes recorrer los valores del cxGridDbTableView, aqui esta un pequeño codigo que hace lo que pides:

var i,j : Integer;
begin
for j:= 0 to cxGrid1DBTableView1.dataController.rowcount - 1 do
for i:= 0 to cxGrid1DBTableView1.ColumnCount - 1 do
begin
Variable := cxGrid1DBTableView1.DataController.Values[j,i];
end;

espero que te sea de ayuda, si necesitas algo mas solo pide.

Saludos

jcarteagaf

elorza 07-01-2008 08:18:09

Gracias, gracias! ¡Haber si lo consigo!

elorza

elorza 08-01-2008 11:25:49

Hola de nuevo,
¿es indispensable recorrer los valores del cxGridDbTableView? es que yo solo necesito los datos del Grid, es decir, el Grid da opcion de realizar un filtrado una vez visualizado los datos, y yo solamente necesito esos datos. ¿Sabes si es posible?

Neftali [Germán.Estévez] 08-01-2008 12:25:44

El problema es que los Grids de las Quantum, se parecen poco en su estructura a los Grids normales o estandard de Delphi.
En realidad el cxGrid como tal no es nada. Los Grids de las Quantum se basan en "Vistas" de forma que un mismo Grid puede tener diferentes "Vistas" que no se parecen nada entre sí, por lo que realmente lo que más se parece al Grid de Delphi es una de esas Vistas, en lugar de el cxGrid en si.

En las Vistas se definen las columnas, se enlazan los conectores,...

Desde las vistas (DBTableView) puedes acceder a ColumnCount, Columns, VisibleColumnCount y VisibleColumns. Tambén tienes el método GetColumnByFieldName para accedr a una columna a partir del campo.

Para temas como el recorrido de datos filtrados dondemás información puedes encontrar es el la web de DevExpress. POseen mucha información de ejemplo y "Preguntas y respuestas".
Por ejemplo, estos dos: 1 y 2.

elorza 09-01-2008 08:37:21

Muchas gracias Neftali, ¡lo intentaré!

elorza 18-01-2008 11:10:36

Hola, he conseguido poder trabajar solamente con los datos filtrados de un cxGrid. Simplemente añadiendo estas 2 líneas rojas y la última roja, funciona perfectamente. Por si le sirve a alguien!

FGEST_C_Consultas.qrConsulta.filtered:=
( FGEST_C_Consultas.tvMaestro.DataController.Filter.FilterText <> '');
FGEST_C_Consultas.qrConsulta.filter:=

FGEST_C_Consultas.tvMaestro.DataController.Filter.FilterText;

//Recorremos el DataSet
FGEST_C_Consultas.tvMaestro.DataController.DataSet;
FGEST_C_Consultas.tvMaestro.DataController.DataSet.First;
while not FGEST_C_Consultas.tvMaestro.DataController.DataSet.Eof do
being

...
FGEST_C_Consultas.tvMaestro.DataController.DataSet.Next;
end;


FGEST_C_Consultas.qrConsulta.filtered:=false; //Para que se llene otra vez el dataset!


elorza 05-03-2008 10:57:24

¿cómo puedo saber qué registro del Grid tengo seleccionado?
 
Hola,
¿alguien sabe cómo puedo saber qué registro del Grid tengo seleccionado?
Es decir, el Grid me visualiza 10 registros y uno de ellos está seleccionado.

¿Cómo lo puedo saber?

Gracias

Neftali [Germán.Estévez] 05-03-2008 12:02:44

Si estás trabajando con el Grid sde las Quantum puedes usar algo así:

Código Delphi [-]
  for i := 0 to (DBTableView.Controller.SelectedRecordCount - 1) do begin
    RecID := DBTableView.Controller.SelectedRecords[i].RecordIndex;
    // Item del Código
    TableItem := DBTableView.DataController.GetItemByFieldName('Codigo');
    CodID := TableItem.Index;   // Id del campo código
    // Accedemos al valor
    CodStr := DBTableView.Controller.SelectedRecords[i].Values[CodID];

    ....

Se puede "compactar" un poco, pero creo que así lo verás más claro.


La franja horaria es GMT +2. Ahora son las 09:04:14.

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