Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- interface
- type
- TQuerySetXML = class(TQuerySetSQL) // Non visual sql result set
- Checked: TQuerySet.TFieldCheckBox;
- [UniqueField]
- [DefaultSortField(True)]
- [InitField('Id', 64)]
- Id: TQuerySet.TFieldInteger;
- [InitField('TimeStamp', 'Dato og tid', 120)]
- TimeStamp: TQuerySet.TFieldDateTime;
- [InitField('ProcessId', 'PID', 64)]
- PID: TQuerySet.TFieldInteger;
- [InitField('ThreadId', 'TID', 64)]
- TID: TQuerySet.TFieldInteger;
- [InitField('XLevel', 'Nivå', 70)]
- Level: TQuerySet.TFieldEnum<TLogEventLevel>;
- [InitField('XCategory', 'Kategori', 70)]
- Category: TQuerySet.TFieldEnum<TLogEventCategory>;
- [InitField('AppShortName', 'App', 30)]
- App: TQuerySet.TFieldString;
- [InitField('ClientName', 'Client', 140, hcRightJustify)]
- Client: TQuerySet.TFieldString;
- [InitField('Title', 'Beskrivelse', 800)]
- Title: TQuerySet.TFieldString;
- constructor Create; override;
- function LevelColorizer(const aValue: TLogEventLevel; var FG, BG: TColor): Boolean;
- function AppToIconIndex(const aRow: Integer): Integer;
- End;
- TQueryGridXML = class(TQueryGridSQL<TQuerySetXML>); // attaches the non-visual query set to a visual grid
- // Implementation
- { TQuerySetXML }
- constructor TQuerySetXML.Create;
- begin
- inherited;
- Level.Formatter :=
- function (const Lvl: TLogEventLevel):String
- begin
- Result := LogEventLevelToString(Lvl);
- end;
- Level.SecondaryKeys := [Category, TimeStamp];
- Level.ValueColorizer := LevelColorizer;
- Category.Formatter :=
- function (const Cat: TLogEventCategory):String
- begin
- Result := LogEventCategoryToString(Cat);
- end;
- Category.SecondaryKeys := [TimeStamp];
- App.SecondaryKeys := [Client, TimeStamp];
- App.AddImage(AppToIconIndex, heRight);
- Client.SecondaryKeys := [TimeStamp];
- PID.SecondaryKeys := [TimeStamp];
- Title.SecondaryKeys := [TimeStamp];
- end;
- function TQuerySetXML.AppToIconIndex(const aRow:Integer):Integer;
- var
- TLA: String;
- begin
- TLA := App[aRow];
- if TLA = AppId_Server then Result := 0
- else if TLA = AppID_DatabaseProc then Result := 1
- else if TLA = AppId_TINEAdmin then Result := 2
- else if TLA = AppId_PSDTruckTerm then Result := 3
- else if TLA = AppId_TMSProdInterface then Result := 4
- else if TLA = AppId_ScannerTool then Result := 5
- else if TLA = AppId_RouteViewer then Result := 6
- else if TLA = AppId_SiteManager then Result := 7
- else if TLA = AppId_PickByVoice then Result := 8
- else if TLA = AppId_PSDController then Result := 9
- else if TLA = AppId_UnitTest then Result := 10
- else if TLA = AppId_Utils then Result := 11
- else Result := -1;
- end;
- function TQuerySetXML.LevelColorizer(const aValue:TLogEventLevel; var FG, BG: TColor):Boolean;
- begin
- Result := True;
- case aValue of
- lelDebug: FG := clDkGray;
- // lelInfo: ;
- lelWarning: FG := clBlue;
- lelError: FG := clRed;
- lelSystem: FG := clGreen;
- lelCritical: begin
- FG := clYellow;
- BG := clMaroon;
- end
- else Result := False;
- end;
- end;
- // Setting up the grid
- procedure TPSDXmlLogViewer3.InitializeViews;
- begin
- if Assigned(XMLGrid)
- then EXIT;
- XMLQuery := TXMLLogNonPaged.Create(''); //<-- a SQL query builder
- XMLQuery.Reset;
- XMLQuery.Subset := 'Id, TimeStamp, ProcessId, ThreadId, XLevel, XCategory, Title, ClientId';
- XMLQuery.PageSize := 100;
- RefreshInterval := 0;
- DaysBack := 2;
- dtpDate.Date := Trunc(Now);
- XMLGrid := TQueryGridXML.Create;
- XMLGrid.MultiSelect := True;
- XMLGrid.Grid := sgLog; //<-- Attaching to the TAdvStringGrid from TMS
- ...
- // updating the contents
- db := PSD.DatabasePool.Acquire;
- try
- XMLQuery.UpdateCount(db, XMLQuery.Selection); // a first query to determine number of hits, page count, etc.
- XMLGrid.Update(db, XMLQuery.PaginatedSelection); // refresh the grid data from the SQL query
- finally
- PSD.DatabasePool.Release(db);
- end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement