123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290 |
- unit ReportManagerFrm;
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, ComCtrls, DB, DBClient, ZJGrid, StdCtrls, ExtCtrls, ZjGridDBA,
- cxLookAndFeelPainters, cxButtons, pngimage;
- type
- TReportManagerForm = class(TForm)
- pcReport: TPageControl;
- tsLocal: TTabSheet;
- tsOnline: TTabSheet;
- tsCustom: TTabSheet;
- Panel1: TPanel;
- pnlInputCode: TPanel;
- edtCode: TEdit;
- Label2: TLabel;
- zaLocal: TZjGridDBA;
- Label1: TLabel;
- zgOnline: TZJGrid;
- zaOnline: TZjGridDBA;
- btnGet: TcxButton;
- pnlCustom: TPanel;
- pnlNoReport: TPanel;
- zgCustom: TZJGrid;
- zaCustom: TZjGridDBA;
- cbCategory: TComboBox;
- pnlGrid: TPanel;
- pnlFilter: TPanel;
- Label3: TLabel;
- imgfilter: TImage;
- chkFilter: TCheckBox;
- zgLoacl: TZJGrid;
- procedure FormCreate(Sender: TObject);
- procedure FormDestroy(Sender: TObject);
- procedure zgLoaclCellGetFont(Sender: TObject; ACoord: TPoint;
- AFont: TFont);
- procedure zgOnlineCellGetFont(Sender: TObject; ACoord: TPoint;
- AFont: TFont);
- procedure zgLoaclMouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- procedure zgOnlineMouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- procedure cbCategoryChange(Sender: TObject);
- procedure btnGetClick(Sender: TObject);
- procedure zgCustomCellGetFont(Sender: TObject; ACoord: TPoint;
- AFont: TFont);
- procedure zgCustomMouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- procedure pcReportChange(Sender: TObject);
- procedure zgOnlineShowHint(var HintStr: String; var CanShow: Boolean;
- var HintInfo: THintInfo; const ACoord: TPoint);
- procedure zgLoaclShowHint(var HintStr: String; var CanShow: Boolean;
- var HintInfo: THintInfo; const ACoord: TPoint);
- procedure zgCustomShowHint(var HintStr: String; var CanShow: Boolean;
- var HintInfo: THintInfo; const ACoord: TPoint);
- procedure chkFilterClick(Sender: TObject);
- private
- { Private declarations }
- FReports: TObject;
- FReportsForm: TObject;
- function CurValue(AGridDBA: TZjGridDBA; FieldName: string): Variant;
- function Col(AGridDBA: TZjGridDBA; FieldName: string): Integer;
- procedure GridGetFont(Sender: TObject; ACoord: TPoint; AFont: TFont; AGrid: TZjGrid; AGridDBA: TZjGridDBA);
- procedure GridMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer; AGrid: TZjGrid; AGridDBA: TZjGridDBA);
- procedure GridShowHint(var HintStr: String; var CanShow: Boolean; var HintInfo: THintInfo; const ACoord: TPoint; AGrid: TZjGrid; AGridDBA: TZjGridDBA);
- procedure SetReportsForm(const Value: TObject);
- public
- { Public declarations }
- property ReportsForm: TObject read FReportsForm write SetReportsForm;
- end;
- implementation
- uses ReportManagerDM, ReportHistoryFrm, ReportsFrm;
- {$R *.dfm}
- function TReportManagerForm.Col(AGridDBA: TZjGridDBA; FieldName: string): Integer;
- begin
- Result := AGridDBA.ColumnIndex(FieldName) + 1;
- end;
- function TReportManagerForm.CurValue(AGridDBA: TZjGridDBA; FieldName: string): Variant;
- begin
- Result := AGridDBA.DataSet.FieldByName(FieldName).AsVariant;
- end;
- procedure TReportManagerForm.FormCreate(Sender: TObject);
- begin
- FReportsForm := nil;
- FReports := TReports.Create(nil);
- zaLocal.DataSet := TReports(FReports).cdsLocal;
- zaLocal.Grid := zgLoacl;
- zaOnline.DataSet := TReports(FReports).cdsOnline;
- zaOnline.Grid := zgOnline;
- zaCustom.DataSet := TReports(FReports).cdsCustom;
- zaCustom.Grid := zgCustom;
- pnlNoReport.Visible := zaLocal.DataSet.RecordCount = 0;
- TReports(FReports).CategoryList(cbCategory.Items);
- cbCategory.ItemIndex := 0;
- pcReport.ActivePage := tsLocal;
- end;
- procedure TReportManagerForm.FormDestroy(Sender: TObject);
- begin
- FReports.Free;
- if (FReportsForm <> nil) then
- TReportsForm(FReportsForm).RefreshReportTemplets;
- end;
- procedure TReportManagerForm.GridGetFont(Sender: TObject; ACoord: TPoint;
- AFont: TFont; AGrid: TZjGrid; AGridDBA: TZjGridDBA);
- var
- OldActiveRecd: Integer;
- begin
- if ACoord.X = Col(AGridDBA, 'State') then
- begin
- if AGridDBA.ChangeActiveRecord(ACoord.Y - AGrid.FixedRowCount, OldActiveRecd)then
- begin
- try
- if (CurValue(AGridDBA, 'State') = '¸üÐÂ') or (CurValue(AGridDBA, 'State') = 'ÏÂÔØ') then
- AFont.Color := clBlue;
- finally
- AGridDBA.ChangeActiveRecord(OldActiveRecd, OldActiveRecd);
- end;
- end;
- end
- else if ACoord.X = Col(AGridDBA, 'History') then
- AFont.Color := clBlue;
- end;
- procedure TReportManagerForm.GridMouseDown(Sender: TObject;
- Button: TMouseButton; Shift: TShiftState; X, Y: Integer; AGrid: TZjGrid;
- AGridDBA: TZjGridDBA);
- var
- vForm: TReportHistoryForm;
- vReport: TReport;
- iID: Integer;
- begin
- if CurValue(AGridDBA, 'ID') = null then Exit;
- Screen.Cursor := crHourGlass;
- try
- iID := CurValue(AGridDBA, 'ID');
- vReport := TReports(FReports).FindReprot(iID);
- if AGrid.CurCol = Col(AGridDBA, 'State') then
- begin
- if not SameText(vReport.LocalVer, vReport.NewestVer) then
- vReport.Update(vReport.NewestVer);
- end
- else if AGrid.CurCol = Col(AGridDBA, 'History') then
- begin
- vReport.GetHistoryVer;
- vForm := TReportHistoryForm.Create(vReport);
- try
- vForm.ShowModal;
- finally
- vForm.Free;
- end;
- end;
- finally
- Screen.Cursor := crDefault;
- end;
- end;
- procedure TReportManagerForm.zgLoaclCellGetFont(Sender: TObject;
- ACoord: TPoint; AFont: TFont);
- begin
- GridGetFont(Sender, ACoord, AFont, zgLoacl, zaLocal);
- end;
- procedure TReportManagerForm.zgOnlineCellGetFont(Sender: TObject;
- ACoord: TPoint; AFont: TFont);
- begin
- GridGetFont(Sender, ACoord, AFont, zgOnline, zaOnline);
- end;
- procedure TReportManagerForm.zgLoaclMouseDown(Sender: TObject;
- Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
- begin
- GridMouseDown(Sender, Button, Shift, X, Y, zgLoacl, zaLocal);
- end;
- procedure TReportManagerForm.zgOnlineMouseDown(Sender: TObject;
- Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
- begin
- GridMouseDown(Sender, Button, Shift, X, Y, zgOnline, zaOnline);
- end;
- procedure TReportManagerForm.cbCategoryChange(Sender: TObject);
- begin
- if cbCategory.ItemIndex = 0 then
- TReports(FReports).CancelFilterCategory
- else
- TReports(FReports).FilterCategory(cbCategory.Text);
- end;
- procedure TReportManagerForm.btnGetClick(Sender: TObject);
- begin
- if Trim(edtCode.Text) = '' then Exit;
- if TReports(FReports).LoadCustom(Trim(edtCode.Text)) then
- begin
- pnlInputCode.Visible := False;
- end;
- end;
- procedure TReportManagerForm.zgCustomCellGetFont(Sender: TObject;
- ACoord: TPoint; AFont: TFont);
- begin
- GridGetFont(Sender, ACoord, AFont, zgCustom, zaCustom);
- end;
- procedure TReportManagerForm.zgCustomMouseDown(Sender: TObject;
- Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
- begin
- GridMouseDown(Sender, Button, Shift, X, Y, zgCustom, zaCustom);
- end;
- procedure TReportManagerForm.pcReportChange(Sender: TObject);
- begin
- if pcReport.ActivePage = tsLocal then
- begin
- pnlNoReport.Visible := not TReports(FReports).HasReport;
- pnlFilter.Visible := TReports(FReports).HasNeedUpdateReport or chkFilter.Checked;
- end;
- end;
- procedure TReportManagerForm.GridShowHint(var HintStr: String; var CanShow: Boolean;
- var HintInfo: THintInfo; const ACoord: TPoint; AGrid: TZjGrid; AGridDBA: TZjGridDBA);
- var vReport: TReport;
- OldActiveRecd, iID: Integer;
- begin
- if ACoord.X = 4 then
- begin
- if AGridDBA.ChangeActiveRecord(ACoord.Y - AGrid.FixedRowCount, OldActiveRecd) then
- begin
- try
- if CurValue(AGridDBA, 'ID') = null then Exit;
- iID := CurValue(AGridDBA, 'ID');
- vReport := TReports(FReports).FindReprot(iID);
- if vReport.NewestMemo = '' then
- HintInfo.HintStr := '[ÔÝÎÞ¸üÐÂ˵Ã÷]'
- else
- HintInfo.HintStr := vReport.NewestMemo;
- CanShow := True;
- HintInfo.HintMaxWidth := 250;
- HintInfo.HideTimeout := 30000;
- finally
- AGridDBA.ChangeActiveRecord(OldActiveRecd, OldActiveRecd);
- end;
- end;
- end;
- end;
- procedure TReportManagerForm.zgOnlineShowHint(var HintStr: String;
- var CanShow: Boolean; var HintInfo: THintInfo; const ACoord: TPoint);
- begin
- GridShowHint(HintStr, CanShow, HintInfo, ACoord, zgOnline, zaOnline);
- end;
- procedure TReportManagerForm.zgLoaclShowHint(var HintStr: String;
- var CanShow: Boolean; var HintInfo: THintInfo; const ACoord: TPoint);
- begin
- GridShowHint(HintStr, CanShow, HintInfo, ACoord, zgLoacl, zaLocal);
- end;
- procedure TReportManagerForm.zgCustomShowHint(var HintStr: String;
- var CanShow: Boolean; var HintInfo: THintInfo; const ACoord: TPoint);
- begin
- GridShowHint(HintStr, CanShow, HintInfo, ACoord, zgCustom, zaCustom);
- end;
- procedure TReportManagerForm.SetReportsForm(const Value: TObject);
- begin
- FReportsForm := Value;
- end;
- procedure TReportManagerForm.chkFilterClick(Sender: TObject);
- begin
- TReports(FReports).FilterNeedUpdates(chkFilter.Checked);
- end;
- end.
|