ReportManagerFrm.pas 8.2 KB

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