Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Gesetzte Filter im cxdbgrid in andere Views übertragen (https://www.delphipraxis.net/82000-gesetzte-filter-im-cxdbgrid-andere-views-uebertragen.html)

Darkchild 6. Dez 2006 13:28


Gesetzte Filter im cxdbgrid in andere Views übertragen
 
Liste der Anhänge anzeigen (Anzahl: 1)
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

Union 7. Dez 2006 09:11

Re: Gesetzte Filter im cxdbgrid in andere Views übertragen
 
Statt alles auf den Sender anfzuwenden, bräuchstest Du eine Schleife die dies für alle Levels und Views durchführt. Und wenn Du auf cxGrid6 upgradest hast Du das ganze spezielle Datehandling (letzte Woche, Letzter Monat etc.) schon eingebaut - musst Du nur noch über cxSetResourceString ins Deutsche übertragen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz