Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Sumas en el Footer de un SM DBGrid (https://www.clubdelphi.com/foros/showthread.php?t=87851)

Delphitest 08-03-2015 19:33:41

Sumas en el Footer de un SM DBGrid
 
Buenas Tardes,

estoy empezando a usar un componente llamado SM DBGrid, es gratuito y muy practico a la hora de trabajar con los DBGrid, hace mas cosas que el que viene con delphi.

Lo es sacado de aquí por si le interesa a alguien SM Components

El caso es que según parece tiene algo preparado para poder ver en los Footer del grid la suma de las columnas pero por mucho que me he fijado en la demo y he hecho pruebas para intentar obtener ese resultado no soy capaz de hacerlo.

¿Alguien ha usado alguna vez este componente y sabría decirme como hay que hacer para ver la suma de un campo en el footer?

Muchas gracias

lbidi 11-03-2015 20:13:56

Hola, yo lo uso regularmente.

Lo que tienes que hacer es definir el tipo de columna
Código Delphi [-]
grid.Columns[0].FooterType  := ftCustom;
grid.Columns[0].FooterText  := 'TOTALES';
grid.Columns[1].FooterType  := ftCount;
grid.Columns[2].FooterType  := ftSum;  // fijate que hay mas opciones
y luego llamar a grid.CalculateTotals() ademas de habilitar ShowFooter en las propiedades de la grilla.

Saludos

Delphitest 12-03-2015 08:15:32

Muchas gracias por tu ayuda.

Lo he probado a modo de ejemplo en un form nuevo y funciona a la perfección.

Se me estaba pasando un detalle, no sabía que tenía que llamar grid.CalculateTotals() , pensaba que era algo automático... :rolleyes:

Seguiré dándole vueltas a los grids que tengo en el programa porque, aunque me funcione en un form nuevo, no soy capaz de ver el footer en los grids que tengo ya hechos, se conoce que de tantas pruebas que he hecho he debido dejar algo cambiado. Todo el footer me aparece en blanco en vez de gris y sin contenido, ¿te suena este fallo de algo?

Un saludo

pacopenin 12-03-2015 13:12:46

Hola.

Yo también lo utilizo y es tal cual comenta lbidi.

Solo comentar que la llamada a grid.CalculateTotals() puede llevar como parámetro True o False, dependiendo si quieres que la operación de cálculo sea con todos los registros del grid o sólamente con los que están seleccionados.

Además utilizo éste código para que queden los importes formateados :
Código Delphi [-]

procedure TFBusqueda.smDBGridUIDrawFooterCell(Sender: TObject; Canvas: TCanvas;
  FooterCellRect: TRect; Field: TField; var FooterText: string;
  var DefaultDrawing: Boolean);
begin
  if (Field is TFloatField) then
    if (Field as TFloatField).currency then
      if FooterText <> '' then
         FooterText := FormatFloat(',0.00', StrToFloat(FooterText));
end;


La franja horaria es GMT +2. Ahora son las 20:31:02.

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