ReportManagerFrm.pas 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290
  1. unit ReportManagerFrm;
  2. interface
  3. uses
  4. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5. Dialogs, ComCtrls, DB, DBClient, ZJGrid, StdCtrls, ExtCtrls, ZjGridDBA,
  6. cxLookAndFeelPainters, cxButtons, pngimage;
  7. type
  8. TReportManagerForm = class(TForm)
  9. pcReport: TPageControl;
  10. tsLocal: TTabSheet;
  11. tsOnline: TTabSheet;
  12. tsCustom: TTabSheet;
  13. Panel1: TPanel;
  14. pnlInputCode: TPanel;
  15. edtCode: TEdit;
  16. Label2: TLabel;
  17. zaLocal: TZjGridDBA;
  18. Label1: TLabel;
  19. zgOnline: TZJGrid;
  20. zaOnline: TZjGridDBA;
  21. btnGet: TcxButton;
  22. pnlCustom: TPanel;
  23. pnlNoReport: TPanel;
  24. zgCustom: TZJGrid;
  25. zaCustom: TZjGridDBA;
  26. cbCategory: TComboBox;
  27. pnlGrid: TPanel;
  28. pnlFilter: TPanel;
  29. Label3: TLabel;
  30. imgfilter: TImage;
  31. chkFilter: TCheckBox;
  32. zgLoacl: TZJGrid;
  33. procedure FormCreate(Sender: TObject);
  34. procedure FormDestroy(Sender: TObject);
  35. procedure zgLoaclCellGetFont(Sender: TObject; ACoord: TPoint;
  36. AFont: TFont);
  37. procedure zgOnlineCellGetFont(Sender: TObject; ACoord: TPoint;
  38. AFont: TFont);
  39. procedure zgLoaclMouseDown(Sender: TObject; Button: TMouseButton;
  40. Shift: TShiftState; X, Y: Integer);
  41. procedure zgOnlineMouseDown(Sender: TObject; Button: TMouseButton;
  42. Shift: TShiftState; X, Y: Integer);
  43. procedure cbCategoryChange(Sender: TObject);
  44. procedure btnGetClick(Sender: TObject);
  45. procedure zgCustomCellGetFont(Sender: TObject; ACoord: TPoint;
  46. AFont: TFont);
  47. procedure zgCustomMouseDown(Sender: TObject; Button: TMouseButton;
  48. Shift: TShiftState; X, Y: Integer);
  49. procedure pcReportChange(Sender: TObject);
  50. procedure zgOnlineShowHint(var HintStr: String; var CanShow: Boolean;
  51. var HintInfo: THintInfo; const ACoord: TPoint);
  52. procedure zgLoaclShowHint(var HintStr: String; var CanShow: Boolean;
  53. var HintInfo: THintInfo; const ACoord: TPoint);
  54. procedure zgCustomShowHint(var HintStr: String; var CanShow: Boolean;
  55. var HintInfo: THintInfo; const ACoord: TPoint);
  56. procedure chkFilterClick(Sender: TObject);
  57. private
  58. { Private declarations }
  59. FReports: TObject;
  60. FReportsForm: TObject;
  61. function CurValue(AGridDBA: TZjGridDBA; FieldName: string): Variant;
  62. function Col(AGridDBA: TZjGridDBA; FieldName: string): Integer;
  63. procedure GridGetFont(Sender: TObject; ACoord: TPoint; AFont: TFont; AGrid: TZjGrid; AGridDBA: TZjGridDBA);
  64. procedure GridMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer; AGrid: TZjGrid; AGridDBA: TZjGridDBA);
  65. procedure GridShowHint(var HintStr: String; var CanShow: Boolean; var HintInfo: THintInfo; const ACoord: TPoint; AGrid: TZjGrid; AGridDBA: TZjGridDBA);
  66. procedure SetReportsForm(const Value: TObject);
  67. public
  68. { Public declarations }
  69. property ReportsForm: TObject read FReportsForm write SetReportsForm;
  70. end;
  71. implementation
  72. uses ReportManagerDM, ReportHistoryFrm, ReportsFrm;
  73. {$R *.dfm}
  74. function TReportManagerForm.Col(AGridDBA: TZjGridDBA; FieldName: string): Integer;
  75. begin
  76. Result := AGridDBA.ColumnIndex(FieldName) + 1;
  77. end;
  78. function TReportManagerForm.CurValue(AGridDBA: TZjGridDBA; FieldName: string): Variant;
  79. begin
  80. Result := AGridDBA.DataSet.FieldByName(FieldName).AsVariant;
  81. end;
  82. procedure TReportManagerForm.FormCreate(Sender: TObject);
  83. begin
  84. FReportsForm := nil;
  85. FReports := TReports.Create(nil);
  86. zaLocal.DataSet := TReports(FReports).cdsLocal;
  87. zaLocal.Grid := zgLoacl;
  88. zaOnline.DataSet := TReports(FReports).cdsOnline;
  89. zaOnline.Grid := zgOnline;
  90. zaCustom.DataSet := TReports(FReports).cdsCustom;
  91. zaCustom.Grid := zgCustom;
  92. pnlNoReport.Visible := zaLocal.DataSet.RecordCount = 0;
  93. TReports(FReports).CategoryList(cbCategory.Items);
  94. cbCategory.ItemIndex := 0;
  95. pcReport.ActivePage := tsLocal;
  96. end;
  97. procedure TReportManagerForm.FormDestroy(Sender: TObject);
  98. begin
  99. FReports.Free;
  100. if (FReportsForm <> nil) then
  101. TReportsForm(FReportsForm).RefreshReportTemplets;
  102. end;
  103. procedure TReportManagerForm.GridGetFont(Sender: TObject; ACoord: TPoint;
  104. AFont: TFont; AGrid: TZjGrid; AGridDBA: TZjGridDBA);
  105. var
  106. OldActiveRecd: Integer;
  107. begin
  108. if ACoord.X = Col(AGridDBA, 'State') then
  109. begin
  110. if AGridDBA.ChangeActiveRecord(ACoord.Y - AGrid.FixedRowCount, OldActiveRecd)then
  111. begin
  112. try
  113. if (CurValue(AGridDBA, 'State') = '¸üÐÂ') or (CurValue(AGridDBA, 'State') = 'ÏÂÔØ') then
  114. AFont.Color := clBlue;
  115. finally
  116. AGridDBA.ChangeActiveRecord(OldActiveRecd, OldActiveRecd);
  117. end;
  118. end;
  119. end
  120. else if ACoord.X = Col(AGridDBA, 'History') then
  121. AFont.Color := clBlue;
  122. end;
  123. procedure TReportManagerForm.GridMouseDown(Sender: TObject;
  124. Button: TMouseButton; Shift: TShiftState; X, Y: Integer; AGrid: TZjGrid;
  125. AGridDBA: TZjGridDBA);
  126. var
  127. vForm: TReportHistoryForm;
  128. vReport: TReport;
  129. iID: Integer;
  130. begin
  131. if CurValue(AGridDBA, 'ID') = null then Exit;
  132. Screen.Cursor := crHourGlass;
  133. try
  134. iID := CurValue(AGridDBA, 'ID');
  135. vReport := TReports(FReports).FindReprot(iID);
  136. if AGrid.CurCol = Col(AGridDBA, 'State') then
  137. begin
  138. if not SameText(vReport.LocalVer, vReport.NewestVer) then
  139. vReport.Update(vReport.NewestVer);
  140. end
  141. else if AGrid.CurCol = Col(AGridDBA, 'History') then
  142. begin
  143. vReport.GetHistoryVer;
  144. vForm := TReportHistoryForm.Create(vReport);
  145. try
  146. vForm.ShowModal;
  147. finally
  148. vForm.Free;
  149. end;
  150. end;
  151. finally
  152. Screen.Cursor := crDefault;
  153. end;
  154. end;
  155. procedure TReportManagerForm.zgLoaclCellGetFont(Sender: TObject;
  156. ACoord: TPoint; AFont: TFont);
  157. begin
  158. GridGetFont(Sender, ACoord, AFont, zgLoacl, zaLocal);
  159. end;
  160. procedure TReportManagerForm.zgOnlineCellGetFont(Sender: TObject;
  161. ACoord: TPoint; AFont: TFont);
  162. begin
  163. GridGetFont(Sender, ACoord, AFont, zgOnline, zaOnline);
  164. end;
  165. procedure TReportManagerForm.zgLoaclMouseDown(Sender: TObject;
  166. Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  167. begin
  168. GridMouseDown(Sender, Button, Shift, X, Y, zgLoacl, zaLocal);
  169. end;
  170. procedure TReportManagerForm.zgOnlineMouseDown(Sender: TObject;
  171. Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  172. begin
  173. GridMouseDown(Sender, Button, Shift, X, Y, zgOnline, zaOnline);
  174. end;
  175. procedure TReportManagerForm.cbCategoryChange(Sender: TObject);
  176. begin
  177. if cbCategory.ItemIndex = 0 then
  178. TReports(FReports).CancelFilterCategory
  179. else
  180. TReports(FReports).FilterCategory(cbCategory.Text);
  181. end;
  182. procedure TReportManagerForm.btnGetClick(Sender: TObject);
  183. begin
  184. if Trim(edtCode.Text) = '' then Exit;
  185. if TReports(FReports).LoadCustom(Trim(edtCode.Text)) then
  186. begin
  187. pnlInputCode.Visible := False;
  188. end;
  189. end;
  190. procedure TReportManagerForm.zgCustomCellGetFont(Sender: TObject;
  191. ACoord: TPoint; AFont: TFont);
  192. begin
  193. GridGetFont(Sender, ACoord, AFont, zgCustom, zaCustom);
  194. end;
  195. procedure TReportManagerForm.zgCustomMouseDown(Sender: TObject;
  196. Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  197. begin
  198. GridMouseDown(Sender, Button, Shift, X, Y, zgCustom, zaCustom);
  199. end;
  200. procedure TReportManagerForm.pcReportChange(Sender: TObject);
  201. begin
  202. if pcReport.ActivePage = tsLocal then
  203. begin
  204. pnlNoReport.Visible := not TReports(FReports).HasReport;
  205. pnlFilter.Visible := TReports(FReports).HasNeedUpdateReport or chkFilter.Checked;
  206. end;
  207. end;
  208. procedure TReportManagerForm.GridShowHint(var HintStr: String; var CanShow: Boolean;
  209. var HintInfo: THintInfo; const ACoord: TPoint; AGrid: TZjGrid; AGridDBA: TZjGridDBA);
  210. var vReport: TReport;
  211. OldActiveRecd, iID: Integer;
  212. begin
  213. if ACoord.X = 4 then
  214. begin
  215. if AGridDBA.ChangeActiveRecord(ACoord.Y - AGrid.FixedRowCount, OldActiveRecd) then
  216. begin
  217. try
  218. if CurValue(AGridDBA, 'ID') = null then Exit;
  219. iID := CurValue(AGridDBA, 'ID');
  220. vReport := TReports(FReports).FindReprot(iID);
  221. if vReport.NewestMemo = '' then
  222. HintInfo.HintStr := '[ÔÝÎÞ¸üÐÂ˵Ã÷]'
  223. else
  224. HintInfo.HintStr := vReport.NewestMemo;
  225. CanShow := True;
  226. HintInfo.HintMaxWidth := 250;
  227. HintInfo.HideTimeout := 30000;
  228. finally
  229. AGridDBA.ChangeActiveRecord(OldActiveRecd, OldActiveRecd);
  230. end;
  231. end;
  232. end;
  233. end;
  234. procedure TReportManagerForm.zgOnlineShowHint(var HintStr: String;
  235. var CanShow: Boolean; var HintInfo: THintInfo; const ACoord: TPoint);
  236. begin
  237. GridShowHint(HintStr, CanShow, HintInfo, ACoord, zgOnline, zaOnline);
  238. end;
  239. procedure TReportManagerForm.zgLoaclShowHint(var HintStr: String;
  240. var CanShow: Boolean; var HintInfo: THintInfo; const ACoord: TPoint);
  241. begin
  242. GridShowHint(HintStr, CanShow, HintInfo, ACoord, zgLoacl, zaLocal);
  243. end;
  244. procedure TReportManagerForm.zgCustomShowHint(var HintStr: String;
  245. var CanShow: Boolean; var HintInfo: THintInfo; const ACoord: TPoint);
  246. begin
  247. GridShowHint(HintStr, CanShow, HintInfo, ACoord, zgCustom, zaCustom);
  248. end;
  249. procedure TReportManagerForm.SetReportsForm(const Value: TObject);
  250. begin
  251. FReportsForm := Value;
  252. end;
  253. procedure TReportManagerForm.chkFilterClick(Sender: TObject);
  254. begin
  255. TReports(FReports).FilterNeedUpdates(chkFilter.Checked);
  256. end;
  257. end.