StdLibsManagerFrm.pas 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294
  1. unit StdLibsManagerFrm;
  2. interface
  3. uses
  4. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5. Dialogs, ImgList, ComCtrls, ToolWin, ZJGrid, ScStdBillsCtrl, ActnList,
  6. Menus, ConstMethodUnit, ConstVarUnit;
  7. type
  8. TStdLibsManagerForm = class(TForm)
  9. zgLibs: TZJGrid;
  10. ToolBar1: TToolBar;
  11. ToolButton1: TToolButton;
  12. ToolButton2: TToolButton;
  13. ToolButton3: TToolButton;
  14. ToolButton4: TToolButton;
  15. ilstProject: TImageList;
  16. ActionList: TActionList;
  17. PopupMenu: TPopupMenu;
  18. actnDelete: TAction;
  19. actnRename: TAction;
  20. actnImport: TAction;
  21. actnExport: TAction;
  22. actnDelete1: TMenuItem;
  23. actnRename1: TMenuItem;
  24. actnImport1: TMenuItem;
  25. actnExport1: TMenuItem;
  26. actnCloseLib: TAction;
  27. procedure FormCreate(Sender: TObject);
  28. procedure actnDeleteExecute(Sender: TObject);
  29. procedure actnRenameExecute(Sender: TObject);
  30. procedure zgLibsCellTextChanging(Sender: TObject; const ACoord: TPoint;
  31. var NewValue: String; var Accept: Boolean);
  32. procedure actnDeleteUpdate(Sender: TObject);
  33. procedure actnCloseLibExecute(Sender: TObject);
  34. procedure actnImportExecute(Sender: TObject);
  35. procedure actnExportExecute(Sender: TObject);
  36. private
  37. { Private declarations }
  38. FStdBillsCtrl: TStdBillsCtrl;
  39. FLoading: Boolean;
  40. procedure InitLibs;
  41. procedure AddNewLibToGrid(const aLibName: string; aFileFlag: Integer);
  42. procedure ReNameLib(const aOldName, aNewName: string; aFileFlag: Integer);
  43. procedure SetStdBillsCtrl(const Value: TStdBillsCtrl);
  44. public
  45. { Public declarations }
  46. property StdBillsCtrl: TStdBillsCtrl read FStdBillsCtrl write SetStdBillsCtrl;
  47. end;
  48. implementation
  49. uses
  50. FXQDManagerUnit,
  51. NewProjectFrm;
  52. {$R *.dfm}
  53. procedure TStdLibsManagerForm.FormCreate(Sender: TObject);
  54. begin
  55. FLoading := True;
  56. zgLibs.ColWidths[1] := 220;
  57. zgLibs.ColWidths[2] := 120;
  58. zgLibs.TextAligns.Cols[1] := gaCenterLeft;
  59. zgLibs.TextAligns.Cols[2] := gaCenterCenter;
  60. zgLibs.Cells[1, 0].Text := '츰냔';
  61. zgLibs.Cells[2, 0].Text := '잚謹';
  62. zgLibs.Cells[1, 0].TextAlign := gaCenterCenter;
  63. FLoading := False;
  64. end;
  65. procedure TStdLibsManagerForm.InitLibs;
  66. var
  67. I: Integer;
  68. sLib: string;
  69. sFlag: string;
  70. begin
  71. FLoading := True;
  72. with FStdBillsCtrl.FXQDManager.ConfigFileManager do
  73. for I := 0 to Libs.Count - 1 do
  74. begin
  75. sLib := Libs[I];
  76. sFlag := Copy(sLib, 1, Pos('.', sLib) - 1);
  77. sLib := Copy(sLib, Pos('.', sLib) + 1, Length(sLib));
  78. zgLibs.Cells[1, I + 1].Text := sLib;
  79. if sFlag = '1' then
  80. zgLibs.Cells[2, I + 1].Text := '롸淃헌데';
  81. end;
  82. FLoading := False;
  83. end;
  84. procedure TStdLibsManagerForm.SetStdBillsCtrl(const Value: TStdBillsCtrl);
  85. begin
  86. FStdBillsCtrl := Value;
  87. if FStdBillsCtrl <> nil then
  88. InitLibs;
  89. end;
  90. procedure TStdLibsManagerForm.actnDeleteExecute(Sender: TObject);
  91. var
  92. iFileFlag: Integer;
  93. sLibName: string;
  94. begin
  95. if not MessageQuest(sDeleteLib) then Exit;
  96. sLibName := zgLibs.Cells[1, zgLibs.CurRow].Text;
  97. if sLibName = '' then Exit;
  98. if SameText(FStdBillsCtrl.StdBillsLibFrm.OpenLibName, sLibName) then
  99. begin
  100. MessageError(Screen.ActiveForm.Handle, '匡숭綠굳댔역,헝邱밑균匡숭疼�뇜!');
  101. Exit;
  102. end;
  103. if SameText(zgLibs.Cells[2, zgLibs.CurRow].Text, '롸淃헌데') then
  104. iFileFlag := 1;
  105. FStdBillsCtrl.FXQDManager.DeleteFile(sLibName);
  106. FStdBillsCtrl.StdBillsLibFrm.DeleteLib(sLibName, iFileFlag);
  107. zgLibs.DeleteRow(zgLibs.CurRow);
  108. end;
  109. procedure TStdLibsManagerForm.actnRenameExecute(Sender: TObject);
  110. var
  111. iFileFlag: Integer;
  112. sOldLibName: string;
  113. sNewLibName: string;
  114. begin
  115. sOldLibName := zgLibs.Cells[1, zgLibs.CurRow].Text;
  116. if sOldLibName = '' then Exit;
  117. if SameText(FStdBillsCtrl.StdBillsLibFrm.OpenLibName, sOldLibName) then
  118. begin
  119. MessageError(Screen.ActiveForm.Handle, '匡숭綠굳댔역,헝邱밑균匡숭疼路츱츰!');
  120. Exit;
  121. end;
  122. if SameText(zgLibs.Cells[2, zgLibs.CurRow].Text, '롸淃헌데') then
  123. iFileFlag := 1;
  124. sNewLibName := sOldLibName;
  125. while ScInputQuery('깃硫헌데', '헌데츰냔', sNewLibName) do
  126. begin
  127. if not CheckSpecialChar(sNewLibName) then
  128. begin
  129. if not FStdBillsCtrl.FXQDManager.CheckLibExists(sNewLibName) then
  130. begin
  131. zgLibs.Cells[1, zgLibs.CurRow].Text := sNewLibName;
  132. ReNameLib(sOldLibName, sNewLibName, iFileFlag);
  133. Break;
  134. end
  135. else
  136. begin
  137. sNewLibName := sOldLibName;
  138. MessageWarning(Screen.ActiveForm.Handle, sSameFileName);
  139. end;
  140. end
  141. else
  142. begin
  143. sNewLibName := sOldLibName;
  144. MessageWarning(Screen.ActiveForm.Handle, sSpecialChar);
  145. end;
  146. end;
  147. end;
  148. procedure TStdLibsManagerForm.zgLibsCellTextChanging(Sender: TObject;
  149. const ACoord: TPoint; var NewValue: String; var Accept: Boolean);
  150. var
  151. sOldLibName: string;
  152. iFileFlag: Integer;
  153. begin
  154. if FLoading then Exit;
  155. Accept := False;
  156. if ACoord.X <> 1 then Exit;
  157. sOldLibName := zgLibs.Cells[1, zgLibs.CurRow].Text;
  158. if sOldLibName = '' then Exit;
  159. if SameText(zgLibs.Cells[2, zgLibs.CurRow].Text, '롸淃헌데') then
  160. iFileFlag := 1;
  161. if not CheckSpecialChar(NewValue) then
  162. begin
  163. if not FStdBillsCtrl.FXQDManager.CheckLibExists(NewValue) then
  164. begin
  165. Accept := True;
  166. ReNameLib(sOldLibName, NewValue, iFileFlag);
  167. end
  168. else
  169. MessageWarning(Screen.ActiveForm.Handle, sSameFileName);
  170. end
  171. else
  172. MessageWarning(Screen.ActiveForm.Handle, sSpecialChar);
  173. end;
  174. procedure TStdLibsManagerForm.ReNameLib(const aOldName, aNewName: string;
  175. aFileFlag: Integer);
  176. begin
  177. FStdBillsCtrl.FXQDManager.RenameFile(aOldName, aNewName);
  178. FStdBillsCtrl.StdBillsLibFrm.ReNameLib(aOldName, aNewName, aFileFlag);
  179. end;
  180. procedure TStdLibsManagerForm.actnDeleteUpdate(Sender: TObject);
  181. begin
  182. TAction(Sender).Enabled := zgLibs.Cells[1, zgLibs.CurRow].Text <> '';
  183. end;
  184. procedure TStdLibsManagerForm.actnCloseLibExecute(Sender: TObject);
  185. var
  186. iFileFlag: Integer;
  187. begin
  188. if SameText(zgLibs.Cells[2, zgLibs.CurRow].Text, '롸淃헌데') then
  189. iFileFlag := 1;
  190. Screen.Cursor := crHourGlass;
  191. try
  192. FStdBillsCtrl.StdBillsLibFrm.CloseLib(iFileFlag);
  193. finally
  194. Screen.Cursor := crDefault;
  195. end;
  196. end;
  197. procedure TStdLibsManagerForm.actnImportExecute(Sender: TObject);
  198. var
  199. iFileFlag: Integer;
  200. sFileName: string;
  201. sLibName: string;
  202. sNewLibName: string;
  203. begin
  204. if OpenFileDialog('돔흙', '.dat', '', 'files (*.dat)|*.dat', sFileName) then
  205. begin
  206. sLibName := ExtractFileNameWithoutExt(sFileName);
  207. sNewLibName := sLibName;
  208. while InputStdLibName(sNewLibName, iFileFlag) do
  209. begin
  210. if sNewLibName <> '' then
  211. begin
  212. if not FStdBillsCtrl.FXQDManager.CheckLibExists(sNewLibName) then
  213. begin
  214. FStdBillsCtrl.FXQDManager.ImportLib(sFileName, sNewLibName);
  215. FStdBillsCtrl.StdBillsLibFrm.AddLib(sNewLibName, iFileFlag);
  216. AddNewLibToGrid(sNewLibName, iFileFlag);
  217. Break;
  218. end
  219. else
  220. begin
  221. sNewLibName := sLibName;
  222. MessageError(Screen.ActiveForm.Handle, sSameFileName);
  223. end;
  224. end
  225. else
  226. begin
  227. sNewLibName := sLibName;
  228. MessageError(Screen.ActiveForm.Handle, sNameNotNull);
  229. end;
  230. end;
  231. end;
  232. end;
  233. procedure TStdLibsManagerForm.AddNewLibToGrid(const aLibName: string;
  234. aFileFlag: Integer);
  235. var
  236. iRow: Integer;
  237. begin
  238. FLoading := True;
  239. iRow := FStdBillsCtrl.FXQDManager.ConfigFileManager.Libs.Count + zgLibs.FixedRowCount - 1;
  240. zgLibs.Cells[1, iRow].Text := aLibName;
  241. if aFileFlag = 1 then
  242. zgLibs.Cells[2, iRow].Text := '롸淃헌데'
  243. else
  244. zgLibs.Cells[2, iRow].Text := '묏넋좆헌데';
  245. FLoading := False;
  246. end;
  247. procedure TStdLibsManagerForm.actnExportExecute(Sender: TObject);
  248. var
  249. sLibName: string;
  250. sFileName: string;
  251. begin
  252. sLibName := zgLibs.Cells[1, zgLibs.CurRow].Text;
  253. if SaveFileDialog(sExportTip, '.dat', sLibName, '헌데긍齡 (*.dat)|*.dat', sFileName) then
  254. begin
  255. sLibName := FStdBillsCtrl.FXQDManager.GenerateLibName(sLibName);
  256. FStdBillsCtrl.FXQDManager.ExportLib(sLibName, sFileName);
  257. end;
  258. end;
  259. end.