ProjectManagerDM.pas 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661
  1. unit ProjectManagerDM;
  2. interface
  3. uses
  4. SysUtils,
  5. Classes,
  6. ADODB,
  7. DB,
  8. ConstVarUnit,
  9. DBClient,
  10. Windows,
  11. Provider;
  12. type
  13. TProjectMgrDM = class(TDataModule)
  14. ADOConnection: TADOConnection;
  15. aqBidLotProject: TADOQuery;
  16. atGatherProject: TADOTable;
  17. atGatherProjectID: TIntegerField;
  18. atGatherProjectProjectName: TWideStringField;
  19. atGatherProjectUnKnowName: TWideStringField;
  20. atGatherProjectFullName: TWideStringField;
  21. atGatherProjectGatherID: TIntegerField;
  22. atGatherProjectFlag: TIntegerField;
  23. aqCheckData: TADOQuery;
  24. aqGatherBid: TADOQuery;
  25. procedure atGatherProjectAfterScroll(DataSet: TDataSet);
  26. procedure aqBidLotProjectAfterScroll(DataSet: TDataSet);
  27. private
  28. { Do SQL }
  29. procedure OpenSQL(aQuery: TADOQuery; const aSql: string);
  30. procedure ExecuteSQL(aQuery: TADOQuery; const aSql: string);
  31. function HasRecords(aProjKind: Integer): Boolean;
  32. procedure RefreshData;
  33. procedure DeleteProject(aProjID: Integer; aStrings: TStrings);
  34. procedure InnerDeleteProject(aProjKind: Integer);
  35. procedure RefreshGatherBid(aProjID, aBidLotID: Integer); overload;
  36. function GetMaxProjectID: Integer;
  37. procedure InsertProject(aID, aGatherID, aFlag: Integer; const aProjName, aUnKnowName, aFullName: string);
  38. public
  39. procedure RefreshBidLot(aProjID: Integer; ALocateLast: Boolean = False);
  40. procedure RefreshGatherBid(aIsImport: Boolean = False); overload;
  41. procedure RefreshBuildProject;
  42. procedure OpenDataBase(const aDataBase: string);
  43. { locate record }
  44. procedure LocateBuildProject(aID: Integer);
  45. { get Name }
  46. function GetProjectName(aProjKind: Integer): string;
  47. function GetFileName(aProjKind: Integer): string;
  48. function GetProjectID(aProjKind: Integer): Integer;
  49. { get name by id }
  50. function GetParentID(aID: Integer): Integer;
  51. procedure GetNameByID(aID: Integer; var aProjName, aFullName: string);
  52. procedure GetBidLotsByID(aID: Integer; aStrings: TStrings);
  53. { get values by aprojID }
  54. procedure GetValues(var aProjID, aGatherID, aFlag: Integer; var aProjName, aFullPath: string);
  55. procedure GetBidLots(aProjID: Integer; aProjList: TList);
  56. procedure GetBuildProjectList(aString: TStrings);
  57. function GetBuildProjRecordNo: Integer;
  58. function GetProjectFlag(aID: Integer): Integer;
  59. { Check }
  60. function CanOpen(aProjKind: Integer): Boolean;
  61. procedure CheckSameProjectName(aProjKind: Integer; var aNewProjName: string; aRaise: Boolean = True);
  62. function ChackSameProjectForOneKey(aGatherID: Integer; var aNewProjName: string; var IsExist: Boolean): Boolean;
  63. procedure CheckSameProject(aGatherID: Integer; var aNewProjName: string; aRaise: Boolean = True);
  64. function CheckUnknowNameExists(const aUnknowName: string): Boolean;
  65. { project }
  66. procedure DeleteProjects(aProjKind: Integer; aStrings: TStrings);
  67. function AddProject(const aProjName, aUnknowName, aFullName: string; aProjKind: Integer): Integer; overload;
  68. function AddProject(const aProjName, aUnknowName, aFullName: string; aGatherID, aFlag: Integer): Integer; overload;
  69. { rename }
  70. procedure RenameProject(aProjKind: Integer; const aNewProjectName: string);
  71. end;
  72. implementation
  73. uses
  74. DateUtils,
  75. ScUtils,
  76. ProjectFileManager,
  77. MainForm,
  78. Variants;
  79. {$R *.dfm}
  80. { TProjectMgrDM }
  81. procedure TProjectMgrDM.RefreshBidLot(aProjID: Integer; ALocateLast: Boolean);
  82. var
  83. sSql: string;
  84. begin
  85. sSql := Format('Select * From ProjectManager Where (GatherID = %d) and (Flag = 2)', [aProjID]);
  86. OpenSQL(aqBidLotProject, sSql);
  87. if ALocateLast then
  88. aqBidLotProject.Last;
  89. RefreshGatherBid;
  90. end;
  91. procedure TProjectMgrDM.atGatherProjectAfterScroll(DataSet: TDataSet);
  92. begin
  93. if DataSet.RecordCount > 0 then
  94. RefreshBidLot(DataSet['ID'])
  95. else
  96. RefreshBidLot(0);
  97. end;
  98. function TProjectMgrDM.GetFileName(aProjKind: Integer): string;
  99. begin
  100. if aProjKind = 1 then
  101. begin
  102. if VarIsNull(atGatherProject['FullName']) then
  103. begin
  104. Result := '';
  105. Exit;
  106. end;
  107. Result := atGatherProject['FullName']
  108. end
  109. else if aProjKind = 2 then
  110. begin
  111. if VarIsNull(aqBidLotProject['FullName']) then
  112. begin
  113. Result := '';
  114. Exit;
  115. end;
  116. Result := aqBidLotProject['FullName'];
  117. end
  118. else
  119. begin
  120. if VarIsNull(aqGatherBid['FullName']) then
  121. begin
  122. Result := '';
  123. Exit;
  124. end;
  125. Result := aqGatherBid['FullName'];
  126. end;
  127. end;
  128. procedure TProjectMgrDM.DeleteProject(aProjID: Integer; aStrings: TStrings);
  129. var
  130. sSql: string;
  131. adoQuery: TADOQuery;
  132. begin
  133. adoQuery := TADOQuery.Create(nil);
  134. try
  135. with adoQuery do
  136. begin
  137. Connection := ADOConnection;
  138. sSql := Format('Select * From ProjectManager Where GatherID = %d', [aProjID]);
  139. OpenSQL(adoQuery, sSql);
  140. First;
  141. while not Eof do
  142. begin
  143. aStrings.Add(FieldByName('FullName').AsString);
  144. DeleteProject(FieldByName('ID').AsInteger, aStrings);
  145. Delete;
  146. end;
  147. end;
  148. finally
  149. adoQuery.Free;
  150. end;
  151. end;
  152. function TProjectMgrDM.CheckUnknowNameExists(const aUnknowName: string): Boolean;
  153. var
  154. sSql: string;
  155. begin
  156. sSql := Format('Select * From ProjectManager where UnKnowName = ''%s''', [aUnknowName]);
  157. OpenSQL(aqCheckData, sSql);
  158. Result := aqCheckData.RecordCount <> 0;
  159. end;
  160. function TProjectMgrDM.AddProject(const aProjName, aUnknowName,
  161. aFullName: string; aProjKind: Integer): Integer;
  162. var
  163. BookMark: TBookmark;
  164. iGatherID: Integer;
  165. begin
  166. Result := GetMaxProjectID;
  167. if aProjKind = 1 then
  168. atGatherProject.AppendRecord([Result, aProjName, aUnknowName, aFullName, 0, 1])
  169. else if aProjKind = 2 then
  170. begin
  171. iGatherID := atGatherProjectID.AsInteger;
  172. InsertProject(Result, iGatherID, 2, aProjName, aUnknowName, aFullName);
  173. // atGatherProject.AppendRecord([iMaxID, aProjName, aUnknowName, aFullName, iGatherID, 2]);
  174. end
  175. else
  176. begin
  177. iGatherID := aqBidLotProject['ID'];
  178. InsertProject(Result, iGatherID, 3, aProjName, aUnknowName, aFullName);
  179. // atGatherProject.AppendRecord([iMaxID, aProjName, aUnknowName, aFullName, iGatherID, 3]);
  180. end;
  181. end;
  182. procedure TProjectMgrDM.OpenDataBase(const aDataBase: string);
  183. begin
  184. ADOConnection.Connected := False;
  185. ADOConnection.ConnectionString := Format(SAdoConnectStr, [aDataBase, 'Admin', '']);
  186. ADOConnection.Connected := True;
  187. RefreshData;
  188. end;
  189. procedure TProjectMgrDM.RefreshData;
  190. begin
  191. atGatherProject.Connection := ADOConnection;
  192. aqBidLotProject.Connection := ADOConnection;
  193. aqCheckData.Connection := ADOConnection;
  194. aqGatherBid.Connection := ADOConnection;
  195. atGatherProject.Open;
  196. with atGatherProject do
  197. begin
  198. Filter := 'Flag=1';
  199. Filtered := True;
  200. end;
  201. end;
  202. function TProjectMgrDM.GetProjectName(aProjKind: Integer): string;
  203. begin
  204. Result := '';
  205. if aProjKind = 1 then
  206. Result := atGatherProject['ProjectName']
  207. else if aProjKind = 2 then
  208. begin
  209. if aqBidLotProject.RecordCount > 0 then
  210. Result := aqBidLotProject['ProjectName'];
  211. end
  212. else
  213. if aqGatherBid.RecordCount > 0 then
  214. Result := aqGatherBid['ProjectName'];
  215. end;
  216. procedure TProjectMgrDM.RenameProject(aProjKind: Integer; const aNewProjectName: string);
  217. begin
  218. if aProjKind = 1 then
  219. begin
  220. atGatherProject.Edit;
  221. atGatherProjectProjectName.Value := aNewProjectName;
  222. atGatherProject.Post;
  223. end
  224. else if aProjKind = 2 then
  225. begin
  226. aqBidLotProject.Edit;
  227. aqBidLotProject['ProjectName'] := aNewProjectName;
  228. aqBidLotProject.Post;
  229. end
  230. else
  231. begin
  232. aqGatherBid.Edit;
  233. aqGatherBid['ProjectName'] := aNewProjectName;
  234. aqGatherBid.Post;
  235. end;
  236. end;
  237. function TProjectMgrDM.CanOpen(aProjKind: Integer): Boolean;
  238. begin
  239. Result := True;
  240. {if aProjKind = 1 then
  241. Result := atGatherProjectID.Value <> 1; }
  242. end;
  243. procedure TProjectMgrDM.RefreshGatherBid(aProjID, aBidLotID: Integer);
  244. var
  245. sSql: string;
  246. begin
  247. sSql := Format('Select * From ProjectManager Where ' +
  248. '((GatherID = %d) or (GatherID = %d)) and (Flag = 3)',
  249. [aProjID, aBidLotID]);
  250. OpenSQL(aqGatherBid, sSql);
  251. end;
  252. function TProjectMgrDM.GetProjectID(aProjKind: Integer): Integer;
  253. begin
  254. if aProjKind = 1 then
  255. Result := atGatherProject['ID']
  256. else if aProjKind = 2 then
  257. begin
  258. if aqBidLotProject.RecordCount > 0 then
  259. Result := aqBidLotProject['ID']
  260. else
  261. Result := -1;
  262. end
  263. else
  264. begin
  265. if aqGatherBid.RecordCount > 0 then
  266. Result := aqGatherBid['ID']
  267. else
  268. Result := -1;
  269. end;
  270. end;
  271. procedure TProjectMgrDM.GetValues(var aProjID, aGatherID, aFlag: Integer;
  272. var aProjName, aFullPath: string);
  273. var
  274. sSql: string;
  275. begin
  276. sSql := Format('Select * From ProjectManager Where ID = %d', [aProjID]);
  277. OpenSQL(aqCheckData, sSql);
  278. with aqCheckData do
  279. begin
  280. if RecordCount > 0 then
  281. begin
  282. aGatherID := FieldByName('GatherID').AsInteger;
  283. aFlag := FieldByName('Flag').AsInteger;
  284. aProjName := FieldByName('ProjectName').AsString;
  285. aFullPath := FieldByName('FullName').AsString;
  286. end
  287. else
  288. begin
  289. aProjID := -1;
  290. end;
  291. end;
  292. end;
  293. procedure TProjectMgrDM.GetBidLots(aProjID: Integer; aProjList: TList);
  294. var
  295. sSql: string;
  296. begin
  297. sSql := Format('Select * From ProjectManager Where GatherID = %d', [aProjID]);
  298. OpenSQL(aqCheckData, sSql);
  299. with aqCheckData do
  300. begin
  301. First;
  302. while not Eof do
  303. begin
  304. aProjList.Add(Pointer(FieldByName('ID').AsInteger));
  305. Next;
  306. end;
  307. end;
  308. end;
  309. function TProjectMgrDM.AddProject(const aProjName, aUnknowName,
  310. aFullName: string; aGatherID, aFlag: Integer): Integer;
  311. begin
  312. Result := GetMaxProjectID;
  313. InsertProject(Result, aGatherID, aFlag, aProjName, aUnknowName, aFullName);
  314. // atGatherProject.AppendRecord([iMaxID, aProjName, aUnknowName, aFullName, aGatherID, aFlag])
  315. end;
  316. procedure TProjectMgrDM.aqBidLotProjectAfterScroll(DataSet: TDataSet);
  317. begin
  318. if DataSet.RecordCount > 0 then
  319. RefreshGatherBid(atGatherProjectID.AsInteger, DataSet['ID']);
  320. end;
  321. procedure TProjectMgrDM.RefreshGatherBid(aIsImport: Boolean);
  322. begin
  323. if aqBidLotProject.RecordCount > 0 then
  324. RefreshGatherBid(atGatherProjectID.AsInteger, aqBidLotProject['ID'])
  325. else
  326. RefreshGatherBid(atGatherProjectID.AsInteger, -2);
  327. if aIsImport then aqGatherBid.Last;
  328. end;
  329. function TProjectMgrDM.HasRecords(aProjKind: Integer): Boolean;
  330. begin
  331. if aProjKind = 1 then
  332. Result := atGatherProject.RecordCount > 0
  333. else if aProjKind = 2 then
  334. Result := aqBidLotProject.RecordCount > 0
  335. else
  336. Result := aqGatherBid.RecordCount > 0;
  337. end;
  338. procedure TProjectMgrDM.GetBuildProjectList(aString: TStrings);
  339. begin
  340. OpenSQL(aqCheckData, 'Select * From ProjectManager where Flag = 1');
  341. with aqCheckData do
  342. begin
  343. First;
  344. while not Eof do
  345. begin
  346. aString.AddObject(FieldByName('ProjectName').AsString,
  347. Pointer(FieldByName('ID').AsInteger));
  348. Next;
  349. end;
  350. end;
  351. end;
  352. procedure TProjectMgrDM.LocateBuildProject(aID: Integer);
  353. begin
  354. if atGatherProjectID.AsInteger <> aID then
  355. atGatherProject.Locate('ID', aID, []);
  356. end;
  357. procedure TProjectMgrDM.DeleteProjects(aProjKind: Integer; aStrings: TStrings);
  358. var
  359. iID: Integer;
  360. sSql: string;
  361. begin
  362. with aqCheckData do
  363. begin
  364. iID := GetProjectID(aProjKind);
  365. aStrings.Add(GetFileName(aProjKind));
  366. InnerDeleteProject(aProjKind);
  367. sSql := Format('Select * From ProjectManager Where GatherID = %d', [iID]);
  368. OpenSQL(aqCheckData, sSql);
  369. First;
  370. while not Eof do
  371. begin
  372. aStrings.Add(FieldByName('FullName').AsString);
  373. DeleteProject(FieldByName('ID').AsInteger, aStrings);
  374. Delete;
  375. end;
  376. end;
  377. end;
  378. procedure TProjectMgrDM.InnerDeleteProject(aProjKind: Integer);
  379. begin
  380. case aProjKind of
  381. 1: atGatherProject.Delete;
  382. 2: aqBidLotProject.Delete;
  383. else aqGatherBid.Delete;
  384. end;
  385. end;
  386. function TProjectMgrDM.GetBuildProjRecordNo: Integer;
  387. begin
  388. Result := atGatherProject.RecNo;
  389. end;
  390. function TProjectMgrDM.GetProjectFlag(aID: Integer): Integer;
  391. var
  392. sSql: string;
  393. begin
  394. sSql := Format('Select * From ProjectManager Where ID = %d', [aID]);
  395. OpenSQL(aqCheckData, sSql);
  396. Result := aqCheckData.FieldByName('Flag').AsInteger;
  397. end;
  398. procedure TProjectMgrDM.CheckSameProjectName(aProjKind: Integer; var aNewProjName: string; aRaise: Boolean);
  399. var
  400. sSql: string;
  401. iGatherID1, iGatherID2: Integer;
  402. begin
  403. if aProjKind = 1 then
  404. begin
  405. iGatherID1 := 0;
  406. iGatherID2 := -1;
  407. end
  408. else
  409. begin
  410. if aProjKind = 2 then
  411. begin
  412. iGatherID1 := atGatherProjectID.AsInteger;
  413. iGatherID2 := iGatherID1;
  414. end
  415. else
  416. begin
  417. iGatherID1 := atGatherProjectID.AsInteger;
  418. if aqBidLotProject.RecordCount > 0 then
  419. iGatherID2 := aqBidLotProject['ID']
  420. else
  421. iGatherID2 := iGatherID1;
  422. end;
  423. end;
  424. sSql := Format('Select * From ProjectManager where ' +
  425. '(ProjectName = ''%s'') and ((GatherID = %d) or (GatherID = %d))',
  426. [aNewProjName, iGatherID1, iGatherID2]);
  427. OpenSQL(aqCheckData, sSql);
  428. if aqCheckData.RecordCount <> 0 then
  429. begin
  430. if aRaise then raise Exception.Create('已存在同名项目!')
  431. else
  432. begin
  433. aNewProjName := aNewProjName + '(复件)';
  434. CheckSameProjectName(aProjKind, aNewProjName, False);
  435. end;
  436. end;
  437. end;
  438. procedure TProjectMgrDM.CheckSameProject(aGatherID: Integer;
  439. var aNewProjName: string; aRaise: Boolean);
  440. var
  441. sSql: string;
  442. begin
  443. sSql := Format('Select * From ProjectManager where ' +
  444. '(ProjectName = ''%s'') and (GatherID = %d)',
  445. [aNewProjName, aGatherID]);
  446. OpenSQL(aqCheckData, sSql);
  447. if aqCheckData.RecordCount <> 0 then
  448. begin
  449. if aRaise then raise Exception.Create('已存在同名项目!')
  450. else
  451. begin
  452. aNewProjName := aNewProjName + '(复件)';
  453. CheckSameProject(aGatherID, aNewProjName, False);
  454. end;
  455. end;
  456. end;
  457. procedure TProjectMgrDM.GetBidLotsByID(aID: Integer; aStrings: TStrings);
  458. var
  459. sFullName: string;
  460. sSql: string;
  461. begin
  462. sSql := Format('Select * From ProjectManager where GatherID = %d', [aID]);
  463. OpenSQL(aqCheckData, sSql);
  464. aStrings.Clear;
  465. with aqCheckData do
  466. begin
  467. First;
  468. while not Eof do
  469. begin
  470. sFullName := FieldByName('FullName').AsString;
  471. aStrings.AddObject(FieldByName('ProjectName').AsString, Pointer(sFullName));
  472. Integer(sFullName) := 0;
  473. Next;
  474. end;
  475. end;
  476. end;
  477. procedure TProjectMgrDM.GetNameByID(aID: Integer; var aProjName,
  478. aFullName: string);
  479. var
  480. sSql: string;
  481. begin
  482. sSql := Format('Select * From ProjectManager where ID = %d', [aID]);
  483. OpenSQL(aqCheckData, sSql);
  484. with aqCheckData do
  485. begin
  486. if RecordCount > 0 then
  487. begin
  488. aProjName := FieldByName('ProjectName').AsString;
  489. aFullName := FieldByName('FullName').AsString;
  490. end
  491. else
  492. begin
  493. aProjName := '';
  494. aFullName := '';
  495. end;
  496. end;
  497. end;
  498. function TProjectMgrDM.GetMaxProjectID: Integer;
  499. begin
  500. OpenSQL(aqCheckData, 'Select Max(ID) as ID From ProjectManager');
  501. Result := aqCheckData.FieldByName('ID').AsInteger + 1;
  502. end;
  503. procedure TProjectMgrDM.InsertProject(aID, aGatherID, aFlag: Integer;
  504. const aProjName, aUnKnowName, aFullName: string);
  505. var
  506. sSql: string;
  507. begin
  508. sSql := Format('Insert Into ProjectManager (ID, ProjectName, UnKnowName, FullName, GatherID, Flag) ' +
  509. 'Values (%d, ''%s'', ''%s'', ''%s'', %d, %d)',
  510. [aID, aProjName, aUnKnowName, aFullName, aGatherID, aFlag]);
  511. ExecuteSQL(aqCheckData, sSql);
  512. end;
  513. procedure TProjectMgrDM.ExecuteSQL(aQuery: TADOQuery;
  514. const aSql: string);
  515. begin
  516. with aQuery do
  517. begin
  518. SQL.Clear;
  519. SQL.Add(aSql);
  520. ExecSQL;
  521. end;
  522. end;
  523. procedure TProjectMgrDM.OpenSQL(aQuery: TADOQuery;
  524. const aSql: string);
  525. begin
  526. with aQuery do
  527. begin
  528. SQL.Clear;
  529. SQL.Add(aSql);
  530. Open;
  531. end;
  532. end;
  533. function TProjectMgrDM.GetParentID(aID: Integer): Integer;
  534. var
  535. sSql: string;
  536. begin
  537. sSql := Format('Select * From ProjectManager Where ID = %d', [aID]);
  538. OpenSQL(aqCheckData, sSql);
  539. Result := aqCheckData.FieldByName('GatherID').AsInteger;
  540. end;
  541. procedure TProjectMgrDM.RefreshBuildProject;
  542. begin
  543. with atGatherProject do
  544. begin
  545. Active := False;
  546. Active := True;
  547. Filter := 'Flag=1';
  548. Filtered := True;
  549. Last;
  550. end;
  551. end;
  552. function TProjectMgrDM.ChackSameProjectForOneKey(aGatherID: Integer;
  553. var aNewProjName: string; var IsExist: Boolean): Boolean;
  554. var
  555. sSql: string;
  556. iID: Integer;
  557. I, iIdx: Integer;
  558. strFilePath: string;
  559. begin
  560. try
  561. IsExist := False;
  562. Result := True;
  563. sSql := Format('Select * From ProjectManager where ' +
  564. '(ProjectName = ''%s'') and (GatherID = %d)',
  565. [aNewProjName, aGatherID]);
  566. OpenSQL(aqCheckData, sSql);
  567. if aqCheckData.RecordCount <> 0 then
  568. begin
  569. if MessageQuest(0, '该名称的项目清单文件已存在,是否覆盖?', '询问', MB_YESNO) = ID_YES then
  570. begin
  571. IsExist := True;
  572. // 将数据删除 这里还要修改,参照Delete方法
  573. strFilePath := aqCheckData.FieldByName('FullName').AsString;
  574. strFilePath := MainFrm.ProjectFileManager.FileOpr.ExtractFilePath(ParamStr(0)) + strFilePath;
  575. iIdx := MainFrm.ProjectFileManager.ProjectManager.CheckProjectExists(strFilePath);
  576. if iIdx <> -1 then
  577. MainFrm.ProjectFileManager.CloseProjectProc(MainFrm.ProjectFileManager.ProjectManager.Projects[iIdx]);
  578. MainFrm.ProjectFileManager.FileOpr.DeleteFile(strFilePath);
  579. aqCheckData.delete;
  580. end
  581. else
  582. Result := False;
  583. end;
  584. finally
  585. end;
  586. end;
  587. end.