ReportManagerFrm.pas 9.0 KB

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