Hallo!
kann man mit dem DBGrid auch eine Zeile mit z.B. den Summen oder Mittelwerten der angezeigten Daten darstellen? Oder kennt jemand eine Komponente, die das kann?
Wie löst ihr das Problem?
Zwei DBGrids untereinander, die immer synchron gehalten werden, scheint mir kompliziert, besonders, wenn man horizontal scrollen muss.
Danke schon mal im Voraus!
[gelöst] DBGrid mit Summenzeile?
- willi4willi
- Lazarusforum e. V.
- Beiträge: 167
- Registriert: Sa 1. Nov 2008, 18:06
- OS, Lazarus, FPC: Windows, Linux (debian) / Lazarus 3.2 / FPC 3.2.2
- CPU-Target: i386, win64, arm
[gelöst] DBGrid mit Summenzeile?
Zuletzt geändert von willi4willi am Do 11. Jan 2018, 13:43, insgesamt 1-mal geändert.
Viele Grüße
Willi4Willi
------------
Re: DBGrid mit Summenzeile?
rxdbgrid hat meines Wissens einen Footer, in dem man verschiedene Größen, darunter auch die Summe, einstellen kann. Ob die vom Online-Package-Manager angebotene Version dies unterstützt, weiß ich nicht; ansonsten findest du die Entwicklerversion auf https://sourceforge.net/p/lazarus-ccr/s ... /rx/trunk/.
- willi4willi
- Lazarusforum e. V.
- Beiträge: 167
- Registriert: Sa 1. Nov 2008, 18:06
- OS, Lazarus, FPC: Windows, Linux (debian) / Lazarus 3.2 / FPC 3.2.2
- CPU-Target: i386, win64, arm
Re: [gelöst] DBGrid mit Summenzeile?
Danke!
Mit dieser Komponente habe ich alles, was ich brauche. Man kann sogar gruppieren.
Ich bin begeistert!
Mit dieser Komponente habe ich alles, was ich brauche. Man kann sogar gruppieren.
Ich bin begeistert!
Viele Grüße
Willi4Willi
------------
-
- Beiträge: 16
- Registriert: Mo 19. Aug 2013, 22:28
Re: [gelöst] DBGrid mit Summenzeile?
Betrifft das Thema nur indirekt, aber die Datumseingabe im Grid ist nicht die Beste. Habe dazu die procedure TRxDBGridDateEditor.EditChange; mit meinem Code ersetzt:
{ ********************** NEW *************************************** }
procedure TRxDBGridDateEditor.EditChange;
var
D:TDateTime;
s: string;
i:integer;
b: boolean;
da,mo,ye: string;
ida, imo, iye: integer;
begin
inherited EditChange;
if Assigned(FGrid) and FGrid.DatalinkActive and not FGrid.EditorIsReadOnly then begin
if not (FGrid.DataSource.DataSet.State in dsEditModes) then FGrid.DataSource.Edit;
{ Text from Editor }
s:= Text;
{ Day, Month , Year extrahieren }
da:= Copy(s,1,2);
mo:= Copy(s,4,2);
ye:= Copy(s,7,4);
{ No Error in Date b:= true }
b:= true;
{ Day, Month and Year to Int }
try
ida:=0;
ida:= StrToInt(da);
except
b:= false;
end;
try
imo:= 0;
imo:= StrToInt(mo);
except
b:= false;
end;
try
iye:= 0;
iye:= StrToInt(ye);
except
b:= false;
end;
{ The Ins from Date are right?}
if not ((ida>0) and(ida<32)) then b:= false;
if not ((imo>0) and(imo<13)) then b:= false;
if not ((iye>1899) and(iye<2200)) then b:= false;
// TryStrToDate(s, D);
if b then begin
{ Checking, if Date can be used, Example April 31 }
b:= TryStrToDate(s, D);
if (b=false) then begin
beep;
end else begin
FGrid.SelectedField.AsDateTime := Self.Date;
if FGrid <> nil then FGrid.SetEditText(FCol, FRow, s);
end;
end;
end;
end;
{ ********************** NEW *************************************** }
Die Eingrenzung des Jahres könnte man noch als Properties programmieren-
{ ********************** NEW *************************************** }
procedure TRxDBGridDateEditor.EditChange;
var
D:TDateTime;
s: string;
i:integer;
b: boolean;
da,mo,ye: string;
ida, imo, iye: integer;
begin
inherited EditChange;
if Assigned(FGrid) and FGrid.DatalinkActive and not FGrid.EditorIsReadOnly then begin
if not (FGrid.DataSource.DataSet.State in dsEditModes) then FGrid.DataSource.Edit;
{ Text from Editor }
s:= Text;
{ Day, Month , Year extrahieren }
da:= Copy(s,1,2);
mo:= Copy(s,4,2);
ye:= Copy(s,7,4);
{ No Error in Date b:= true }
b:= true;
{ Day, Month and Year to Int }
try
ida:=0;
ida:= StrToInt(da);
except
b:= false;
end;
try
imo:= 0;
imo:= StrToInt(mo);
except
b:= false;
end;
try
iye:= 0;
iye:= StrToInt(ye);
except
b:= false;
end;
{ The Ins from Date are right?}
if not ((ida>0) and(ida<32)) then b:= false;
if not ((imo>0) and(imo<13)) then b:= false;
if not ((iye>1899) and(iye<2200)) then b:= false;
// TryStrToDate(s, D);
if b then begin
{ Checking, if Date can be used, Example April 31 }
b:= TryStrToDate(s, D);
if (b=false) then begin
beep;
end else begin
FGrid.SelectedField.AsDateTime := Self.Date;
if FGrid <> nil then FGrid.SetEditText(FCol, FRow, s);
end;
end;
end;
end;
{ ********************** NEW *************************************** }
Die Eingrenzung des Jahres könnte man noch als Properties programmieren-
-
- Beiträge: 16
- Registriert: Mo 19. Aug 2013, 22:28
Re: [gelöst] DBGrid mit Summenzeile?
Vergessen: Ist in rxdbgrid etwa ab Zeile 2705