Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   columna autocalculada en cxgrid (https://www.clubdelphi.com/foros/showthread.php?t=32037)

VIRU 24-05-2006 20:25:05

columna autocalculada en cxgrid
 
Hola, le agradeceria mucho si alguien supiera como generar una columna autocalculada directamente en CXGRID, osea de la misma manera o parecida como se generaria en el componente Table.

Desde ya muchas gracias

FNADALO 25-05-2006 08:30:57

Es el Grid de DevExpress si es asi tienes un par de opciones un sumary o
en el Dataset que visualizas debes hacer el campo calculado.

VIRU 25-05-2006 08:41:34

si conosco las opciones de summary, pero no lo hace a nivel filas osea calculando varias celdas de la misma filas sino a nivel columna, osea lo que necesito es justamente un campo calculado pero no generarlo en el dataset sino directamente en el cxgrid. Con tantas opciones que tiene este control no me sorprenderia que se pudiese realizar esto.

VIRU 25-05-2006 10:01:19

Bueno encontre la solucion por el momento solo voy a decir que la mano viene en la creacion de UnboundColumns, cuando tenga mas tiempo pasare a explicar bien el tema.

FNADALO 25-05-2006 17:51:20

Me interesa la explicacion de como lo has resuelto ya que anduve el otro dia
y lo indique en el Query como es eso del tipo ese.......Gracias

VIRU 26-05-2006 10:02:23

Bueno para empezar aunque no me convence mucho la traduccion que encontre a la palabra fue unbound = Desatado, la cuestion es crear en la grilla siempre hablando del CXGRID una o tantas columnas necesitemos con datos autocalculados, lo unico que no deven tener estas columnas es una asignacion a un campo del dataset ya que de esta manera estarimos obteniendo los datos de dicho dataset.
Bueno defini una columna UNBOUND llamada columnaprueba.
En el evento datachange del dataset (para reflejar los cambios ante cualquier cambio) y en el evento oncreate del form (para rellenar los valores al iniciarlizarse la aplicacion) comense a escribir mi codigo.
Código Delphi [-]
procedure TForm1.DSVentasDataChange(Sender: TObject; Field: TField);
var
i:integer;
begin
comienzo una actualizacion a la grilla
Código Delphi [-]
cxGrid1DBTableView1.BeginUpdate;
recorro todos los registros y actualizo uno por uno
Código Delphi [-]
for I := 0 to cxGrid1DBTableView1.DataController.RecordCount - 1 do
            cxGrid1DBTableView1.DataController.SetValue(I, columnaprueba.Index,
    cxGrid1DBTableView1.DataController.Values[i,cxGrid1DBTableView1importeventa.index]
     - 30.10);
Termino la actualizacion
Código Delphi [-]
cxGrid1DBTableView1.EndUpdate;

El responsable de que esto funcione es el procedimiento setvalue de datacontroller donde se le pasan los parametros (indice de registro, indice de item, y el valor) esta es la declaracion.
Código Delphi [-]
SetValue(ARecordIndex, AItemIndex: Integer; const Value: Variant)
Bueno cualquier duda consultame.


La franja horaria es GMT +2. Ahora son las 10:16:03.

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