PDA

Ver la Versión Completa : Sumas en el Footer de un SM DBGrid


Delphitest
08-03-2015, 19:33:41
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 (http://www.scalabium.com/smcmtbl.htm)

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

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 :


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;