Hallo @all,
ich habe ein cxdbGrid welches z.B. in der Columne Datum zusätzliche Filter von mir erhalten hat, jetzt habe ich aber in diesem Grid gesamt 3 Level mit den zugehörigen Views (pro Level 1 View).
Also cxdbGridLevel1 + cxdbgridview1 oder auch cxdbgridlevel2 + cxdbgridview2 usw.
Jetzt startet das Grid mit Level 1 und View 1 dort können dann z.B. in der Columne Datum die Filter wie "Aktuelle Woche" und so gesetzt werden, unter dem Grid gibt es 2 Buttons die dann die Ansicht verändern in dem dann z.B. Level 2 + View 2 aufgrufen wird, dort ist der vorher gesetzte Filter nicht mehr aktiv, jetzt hätte ich aber gerne das wenn ich in der Start View einen Filter setzte der auch in den anderen Views aktiv ist, ich weis aber leider nicht wie ich diesen übertragen kann.
Für die bessere Verständlichkeit lege ich mal den Quellcode bei der Zeigt wie die Filter geniert und eingetragen werden, so wie das aktiv schalten in der Start View und anbei ein ScreenShot von der Form in der sich alles abspielt zwecks dartellung der Buttons für die Umschaltung der Ansicht.
Delphi-Quellcode:
var
const
filterHeuteID = 0;
filterGesternID = 1;
filterAktuellerMonatID = 2;
filterLetzterMonatID = 3;
filterAktuelleWocheID = 4;
implementation
........................
uses DataModulUnit, DateUtils, ShellApi;
...........................................
procedure Tfrmzeiterfassunguebersicht.cxgridzeiterfassungansichtDBTableView1DATUMGetFilterValues(
Sender: TcxCustomGridTableItem; AValueList: TcxDataFilterValueList);
begin
AValueList.Add(fviUser, filterAktuellerMonatID, '(Aktueller Monat)', True);
AValueList.Add(fviUser, filterHeuteID, '(Heute)', True);
AValueList.Add(fviUser, filterAktuelleWocheID, '(Aktuelle Woche)', True);
AValueList.Add(fviUser, filterGesternID, '(Gestern)', True);
AValueList.Add(fviUser, filterLetzterMonatID, '(Letzter Monat)', True);
end;
procedure Tfrmzeiterfassunguebersicht.cxgridzeiterfassungansichtDBTableView1DATUMUserFiltering(
Sender: TcxCustomGridTableItem; const AValue: Variant;
const ADisplayText: string);
var
ADate: TDateTime;
ADateStr: string;
Jahr,Monat,Tag : word;
OperatorKind : TcxFilterOperatorKind ;
begin
case AValue of
filterHeuteID:
begin
ADate := Today;
ADateStr := 'Heute';
OperatorKind := foEqual;
end;
filterGesternID:
begin
ADate := Yesterday;
ADateStr := 'Gestern';
OperatorKind := foEqual;
end;
filterAktuellerMonatID:
begin
DecodeDate(Today,Jahr,Monat,Tag);
ADate := strtodate('01.'+inttostr(Monat)+'.'+inttostr(Jahr));
ADateStr := 'Aktueller Monat';
OperatorKind := foGreaterEqual;
end;
filterLetzterMonatID:
begin
DecodeDate(Today,Jahr,Monat,Tag);
if monat = 1 then
ADate := strtodate('01.'+inttostr(Monat - 1) + '.' + inttostr(Jahr - 1))
else
ADate := strtodate('01.'+inttostr(Monat - 1) + '.' + inttostr(Jahr));
ADateStr := 'Letzter Monat';
OperatorKind := foGreaterEqual;
end;
filterAktuelleWocheID:
begin
ADate := StartOfTheWeek(today);
ADateStr := 'Aktuelle Woche';
OperatorKind := foGreaterEqual;
end;
end;
//Ich denke hier in der ecke muss dann auch die Zuweisung für die anderen Views hin. Nur wie ?
Sender.DataBinding.AddToFilter(nil, OperatorKind, ADate, ADateStr, True);
end;
Hoffe das verdeutlicht meine Frage und das was ich möchte ?
Bestimmte Elemente musste ich aus dem Screenshot leider entfernen betreff Datenschutz und die Buttons die ich meine sind die beiden unten links "Detailansicht" und "Buchhaltung Ansicht" betreff der verschiedenen Ansichten die ich meine.
Gruss
Darkchild
Ich bin der Geist der stets verneint und das mit recht, denn alles was entsteht ist wert das es zugrunde geht, drum besser wär das nichts entstünde, so ist denn alles was ihr Sünde, Zerstörung, kurz das Böse nennt, mein eigendliches Element.