ProjectPropertiesFrm.pas 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620
  1. unit ProjectPropertiesFrm;
  2. interface
  3. uses
  4. ProjectFme,
  5. ProjectData, ProjectProperty, StaffDm,
  6. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7. Dialogs, StdCtrls, ExtCtrls, JimPages, ComCtrls, ToolWin, MScrollBox,
  8. XPMenu, JimCombos, Mask, ImgList, ZJGrid, ZjGridDBA;
  9. type
  10. TProjectPropertiesForm = class(TForm)
  11. btnOk: TButton;
  12. btnCancel: TButton;
  13. xpm: TXPMenu;
  14. pnlTop: TPanel;
  15. tbTop: TToolBar;
  16. tobtnBase: TToolButton;
  17. Images: TImageList;
  18. pnlBlank: TPanel;
  19. tobtnStaff: TToolButton;
  20. tobtnView: TToolButton;
  21. jpsProperties: TJimPages;
  22. jpsPropertiesBase: TJimPage;
  23. jpsPropertiesStaff: TJimPage;
  24. jpsPropertiesView: TJimPage;
  25. pnlBase: TPanel;
  26. tbContents: TToolBar;
  27. tobtnDealInfo: TToolButton;
  28. tobtnTechParameters: TToolButton;
  29. tobtnDealPayment: TToolButton;
  30. msbBase: TMScrollBox;
  31. lblDealInfo: TLabel;
  32. lblBuilder: TLabel;
  33. lblConstructor: TLabel;
  34. lblSupervisor: TLabel;
  35. lblTechParameters: TLabel;
  36. lblLoadLevel: TLabel;
  37. lblDealPayTitle: TLabel;
  38. pnlDealInfoBar: TPanel;
  39. leProjectName: TLabeledEdit;
  40. leDealName: TLabeledEdit;
  41. leDealIndex: TLabeledEdit;
  42. leBName: TLabeledEdit;
  43. leBLegal: TLabeledEdit;
  44. leBDate: TLabeledEdit;
  45. leCName: TLabeledEdit;
  46. leCLegal: TLabeledEdit;
  47. leCDate: TLabeledEdit;
  48. leSName: TLabeledEdit;
  49. leSLegal: TLabeledEdit;
  50. leSDate: TLabeledEdit;
  51. pnlTechParametersBar: TPanel;
  52. leStartPeg: TLabeledEdit;
  53. leEndPeg: TLabeledEdit;
  54. leLength: TLabeledEdit;
  55. leLaneCount: TLabeledEdit;
  56. cbLoadLevel: TComboBox;
  57. pnlDealPayBar: TPanel;
  58. leContractPrice: TLabeledEdit;
  59. leStartedSubsist: TLabeledEdit;
  60. leMaterialSubsist: TLabeledEdit;
  61. pnlViewBar: TPanel;
  62. leView: TLabel;
  63. zgStaff: TZJGrid;
  64. zaStaff: TZjGridDBA;
  65. jcbPhase: TJimComboBox;
  66. tobtnSafe: TToolButton;
  67. lblSafeTitel: TLabel;
  68. pnlSafeBar: TPanel;
  69. lblUnlockPassword: TLabel;
  70. imgValid: TImageList;
  71. pnlUnlockPassword: TPanel;
  72. pnlOrgPW: TPanel;
  73. leUnlockPassword: TLabeledEdit;
  74. imgOrg: TImage;
  75. pnlNewPW: TPanel;
  76. leNewUnlockPasswordAgain: TLabeledEdit;
  77. leNewUnLockPassword: TLabeledEdit;
  78. imgNew: TImage;
  79. imgNewAgain: TImage;
  80. lblPasswordHint: TLabel;
  81. leDealType: TLabeledEdit;
  82. pnlAllView: TPanel;
  83. pnlAlias: TPanel;
  84. pnlPriceChange: TPanel;
  85. cbShowPriceChange: TCheckBox;
  86. pnlBGL: TPanel;
  87. cbShowBGLCode: TCheckBox;
  88. pnlDesignQuantity: TPanel;
  89. cbShowDesignQuantity: TCheckBox;
  90. cbShowAlias: TCheckBox;
  91. tobtnCalcParameters: TToolButton;
  92. pnlCalcParametersBar: TPanel;
  93. lblCalcParametersTitel: TLabel;
  94. leQuantityDigit: TLabeledEdit;
  95. Label1: TLabel;
  96. leTotalPriceDigit: TLabeledEdit;
  97. udQuantity: TUpDown;
  98. udTotalPrice: TUpDown;
  99. gbPM_Digit: TGroupBox;
  100. lePM_PriceDigit: TLabeledEdit;
  101. udPM_PriceDigit: TUpDown;
  102. cbDisplayPM: TCheckBox;
  103. pnlReport: TPanel;
  104. leReport: TLabel;
  105. cbShowReportShading: TCheckBox;
  106. edtReportShading: TEdit;
  107. tobtnDateTime: TToolButton;
  108. lblDateTime: TLabel;
  109. pnlDateTime: TPanel;
  110. lblBaseline: TLabel;
  111. dtpBaseline: TDateTimePicker;
  112. lblDeadline: TLabel;
  113. dtpDeadline: TDateTimePicker;
  114. procedure btnOkClick(Sender: TObject);
  115. procedure leContractPriceClick(Sender: TObject);
  116. procedure msbBaseMouseWheel(Sender: TObject; Shift: TShiftState;
  117. WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
  118. procedure msbBaseMouseWheelDown(Sender: TObject;
  119. Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
  120. procedure msbBaseMouseWheelUp(Sender: TObject; Shift: TShiftState;
  121. MousePos: TPoint; var Handled: Boolean);
  122. procedure msbBaseVScroll(Sender: TObject);
  123. procedure tobtnDealInfoClick(Sender: TObject);
  124. procedure tobtnBaseClick(Sender: TObject);
  125. procedure jcbPhaseChanged(Sender: TObject);
  126. procedure zgStaffCellGetColor(Sender: TObject; ACoord: TPoint;
  127. var AColor: TColor);
  128. procedure zgStaffCellGetFont(Sender: TObject; ACoord: TPoint;
  129. AFont: TFont);
  130. procedure zgStaffCellCanEdit(Sender: TObject; const ACoord: TPoint;
  131. var Allow: Boolean);
  132. procedure leUnlockPasswordKeyPress(Sender: TObject; var Key: Char);
  133. procedure leNewUnlockPasswordAgainExit(Sender: TObject);
  134. procedure leNewUnLockPasswordExit(Sender: TObject);
  135. procedure leUnlockPasswordExit(Sender: TObject);
  136. procedure cbShowReportShadingClick(Sender: TObject);
  137. private
  138. FProjectData: TProjectData;
  139. FStaffData: TStaffData;
  140. FProjProperties: TProjProperties;
  141. FProjectFrame: TProjectFrame;
  142. procedure InitAllPage;
  143. procedure InitDealInfo;
  144. procedure InitDealPay;
  145. procedure InitTechParameters;
  146. procedure InitProjectView;
  147. procedure InitStaffRela;
  148. procedure InitSafe;
  149. procedure InitCalcParameters;
  150. procedure InitDateTime;
  151. procedure SaveDealInfo;
  152. procedure SaveDealPay;
  153. procedure SaveTechParameters;
  154. procedure SaveSafe;
  155. procedure SaveCalcParameters;
  156. procedure SaveProjectView;
  157. procedure SaveDateTime;
  158. procedure ResetContentsCheck; overload;
  159. procedure ResetContentsCheck(ATag: Integer); overload;
  160. procedure ResetVertScrollBarPosition(ATag: Integer);
  161. procedure CheckValidKey(var AKey: Char);
  162. procedure CheckOrgPassword;
  163. procedure CheckNewPassword;
  164. procedure CheckNewPasswordAgain;
  165. procedure SetProjectData(const Value: TProjectData);
  166. public
  167. procedure Save;
  168. property ProjectData: TProjectData read FProjectData write SetProjectData;
  169. property ProjProperties: TProjProperties read FProjProperties;
  170. property ProjectFrame: TProjectFrame read FProjectFrame write FprojectFrame;
  171. end;
  172. procedure ModifyProjectProperties(ProjectFrame: TProjectFrame);
  173. implementation
  174. uses
  175. PhaseProperty, DB, UtilMethods, ZhAPI;
  176. {$R *.dfm}
  177. procedure ModifyProjectProperties(ProjectFrame: TProjectFrame);
  178. var
  179. PropertiesForm: TProjectPropertiesForm;
  180. begin
  181. PropertiesForm := TProjectPropertiesForm.Create(nil);
  182. try
  183. PropertiesForm.ProjectFrame := ProjectFrame;
  184. PropertiesForm.ProjectData := ProjectFrame.ProjectData;
  185. PropertiesForm.zgStaff.OnCellCanEdit := PropertiesForm.zgStaffCellCanEdit;
  186. if PropertiesForm.ShowModal = mrOk then
  187. PropertiesForm.Save;
  188. finally
  189. PropertiesForm.Free;
  190. end;
  191. end;
  192. { TProjectPropertiesForm }
  193. procedure TProjectPropertiesForm.InitAllPage;
  194. begin
  195. InitDealInfo;
  196. InitTechParameters;
  197. InitDealPay;
  198. InitSafe;
  199. InitCalcParameters;
  200. InitDateTime;
  201. InitStaffRela;
  202. InitProjectView;
  203. end;
  204. procedure TProjectPropertiesForm.InitProjectView;
  205. begin
  206. cbShowPriceChange.Checked := FProjProperties.ShowPriceChange;
  207. cbShowBGLCode.Checked := FProjProperties.ShowBGLCode;
  208. cbShowDesignQuantity.Checked := FProjProperties.ShowDesignQuantity;
  209. cbShowAlias.Checked := FProjProperties.ShowAlias;
  210. cbShowReportShading.Checked := FProjProperties.ShowReportShading;
  211. edtReportShading.Enabled := cbShowReportShading.Checked;
  212. edtReportShading.Text := FProjProperties.ReportShading;
  213. end;
  214. procedure TProjectPropertiesForm.btnOkClick(Sender: TObject);
  215. begin
  216. ModalResult := mrOk;
  217. end;
  218. procedure TProjectPropertiesForm.Save;
  219. begin
  220. SaveDealPay;
  221. SaveDealInfo;
  222. SaveTechParameters;
  223. SaveSafe;
  224. SaveCalcParameters;
  225. SaveDateTime;
  226. SaveProjectView;
  227. end;
  228. procedure TProjectPropertiesForm.InitDealPay;
  229. begin
  230. leContractPrice.Text := FloatToStr(FProjProperties.ContractPrice);
  231. leContractPrice.ReadOnly := FProjProperties.PhaseCount > 0;
  232. SetWindowLong(leContractPrice.Handle, GWL_STYLE, GetWindowLong(leContractPrice.Handle, GWL_STYLE) or ES_RIGHT);
  233. leStartedSubsist.Text := FloatToStr(FProjProperties.StartedSubsisit);
  234. leStartedSubsist.ReadOnly := FProjProperties.PhaseCount > 0;
  235. SetWindowLong(leStartedSubsist.Handle, GWL_STYLE, GetWindowLong(leStartedSubsist.Handle, GWL_STYLE) or ES_RIGHT);
  236. leMaterialSubsist.Text := FloatToStr(FProjProperties.MaterialSubsist);
  237. leMaterialSubsist.ReadOnly := FProjProperties.PhaseCount > 0;
  238. SetWindowLong(leMaterialSubsist.Handle, GWL_STYLE, GetWindowLong(leMaterialSubsist.Handle, GWL_STYLE) or ES_RIGHT);
  239. end;
  240. procedure TProjectPropertiesForm.SaveDealPay;
  241. begin
  242. if FProjProperties.PhaseCount > 0 then Exit;
  243. FProjProperties.ContractPrice := StrToFloatDef(leContractPrice.Text, 0);
  244. FProjProperties.StartedSubsisit := StrToFloatDef(leStartedSubsist.Text, 0);
  245. FProjProperties.MaterialSubsist := StrToFloatDef(leMaterialSubsist.Text, 0);
  246. FProjectData.DealPaymentData.CalcStarted_RangePrice;
  247. end;
  248. procedure TProjectPropertiesForm.leContractPriceClick(Sender: TObject);
  249. begin
  250. if not TLabeledEdit(Sender).ReadOnly then
  251. TLabeledEdit(Sender).SelectAll;
  252. end;
  253. procedure TProjectPropertiesForm.msbBaseMouseWheel(Sender: TObject;
  254. Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint;
  255. var Handled: Boolean);
  256. begin
  257. ResetContentsCheck;
  258. end;
  259. procedure TProjectPropertiesForm.msbBaseMouseWheelDown(Sender: TObject;
  260. Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
  261. begin
  262. SendMessage(msbBase.Handle,WM_VSCROLL,SB_LINEDOWN, 0);
  263. end;
  264. procedure TProjectPropertiesForm.msbBaseMouseWheelUp(Sender: TObject;
  265. Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
  266. begin
  267. SendMessage(msbBase.Handle,WM_VSCROLL,SB_LINEUP, 0);
  268. end;
  269. procedure TProjectPropertiesForm.ResetContentsCheck(ATag: Integer);
  270. begin
  271. tobtnDealInfo.Down := tobtnDealInfo.Tag = ATag;
  272. tobtnTechParameters.Down := tobtnTechParameters.Tag = ATag;
  273. tobtnDealPayment.Down := tobtnDealPayment.Tag = ATag;
  274. tobtnSafe.Down := tobtnSafe.Tag = ATag;
  275. tobtnCalcParameters.Down := tobtnCalcParameters.Tag = ATag;
  276. tobtnDateTime.Down := tobtnDateTime.Tag = ATag;
  277. end;
  278. procedure TProjectPropertiesForm.msbBaseVScroll(Sender: TObject);
  279. begin
  280. ResetContentsCheck;
  281. end;
  282. procedure TProjectPropertiesForm.ResetContentsCheck;
  283. begin
  284. if msbBase.VertScrollBar.Position < 355 then
  285. ResetContentsCheck(tobtnDealInfo.Tag)
  286. else if msbBase.VertScrollBar.Position < 515 then
  287. ResetContentsCheck(tobtnTechParameters.Tag)
  288. else if msbBase.VertScrollBar.Position < 628 then
  289. ResetContentsCheck(tobtnDealPayment.Tag)
  290. else if msbBase.VertScrollBar.Position < 758 then
  291. ResetContentsCheck(tobtnSafe.Tag)
  292. else if msbBase.VertScrollBar.Position < 910 then
  293. ResetContentsCheck(tobtnCalcParameters.Tag)
  294. else
  295. ResetContentsCheck(tobtnDateTime.Tag);
  296. end;
  297. procedure TProjectPropertiesForm.tobtnDealInfoClick(Sender: TObject);
  298. begin
  299. ResetContentsCheck(TToolButton(Sender).Tag);
  300. ResetVertScrollBarPosition(TToolButton(Sender).Tag);
  301. end;
  302. procedure TProjectPropertiesForm.ResetVertScrollBarPosition(ATag: Integer);
  303. begin
  304. if ATag = tobtnDealInfo.Tag then
  305. msbBase.VertScrollBar.Position := 0
  306. else if ATag = tobtnTechParameters.Tag then
  307. msbBase.VertScrollBar.Position := 355
  308. else if ATag = tobtnDealPayment.Tag then
  309. msbBase.VertScrollBar.Position := 515
  310. else if ATag = tobtnSafe.Tag then
  311. msbBase.VertScrollBar.Position := 628
  312. else if ATag = tobtnCalcParameters.Tag then
  313. msbBase.VertScrollBar.Position := 758
  314. else if ATag = tobtnDateTime.Tag then
  315. msbBase.VertScrollBar.Position := 910;
  316. end;
  317. procedure TProjectPropertiesForm.InitDealInfo;
  318. begin
  319. leProjectName.Text := FProjProperties.ProjectName;
  320. leDealName.Text := FProjProperties.DealName;
  321. leDealIndex.Text := FProjProperties.DealIndex;
  322. leDealType.Text := FProjProperties.DealType;
  323. leBName.Text := FProjProperties.BName;
  324. leBLegal.Text := FProjProperties.BLegal;
  325. leBDate.Text := FProjProperties.BDate;
  326. leCName.Text := FProjProperties.CName;
  327. leCLegal.Text := FProjProperties.CLegal;
  328. leCDate.Text := FProjProperties.CDate;
  329. leSName.Text := FProjProperties.SName;
  330. leSLegal.Text := FProjProperties.SLegal;
  331. leSDate.Text := FProjProperties.SDate;
  332. end;
  333. procedure TProjectPropertiesForm.InitTechParameters;
  334. begin
  335. cbLoadLevel.ItemIndex := FProjProperties.LoadLevel;
  336. leStartPeg.Text := FProjProperties.StartPeg;
  337. leEndPeg.Text := FProjProperties.EndPeg;
  338. leLength.Text := FloatToStr(FProjProperties.LoadLength);
  339. leLaneCount.Text := IntToStr(FProjProperties.LaneCount);
  340. end;
  341. procedure TProjectPropertiesForm.SaveDealInfo;
  342. begin
  343. FProjProperties.ProjectName := leProjectName.Text;
  344. FProjProperties.DealName := leDealName.Text;
  345. FProjProperties.DealIndex := leDealIndex.Text;
  346. FProjProperties.DealType := leDealType.Text;
  347. FProjProperties.BName := leBName.Text;
  348. FProjProperties.BLegal := leBLegal.Text;
  349. FProjProperties.BDate := leBDate.Text;
  350. FProjProperties.CName := leCName.Text;
  351. FProjProperties.CLegal := leCLegal.Text;
  352. FProjProperties.CDate := leCDate.Text;
  353. FProjProperties.SName := leSName.Text;
  354. FProjProperties.SLegal := leSLegal.Text;
  355. FProjProperties.SDate := leSDate.Text;
  356. end;
  357. procedure TProjectPropertiesForm.SaveTechParameters;
  358. begin
  359. FProjProperties.LoadLevel := cbLoadLevel.ItemIndex;
  360. FProjProperties.StartPeg := leStartPeg.Text;
  361. FProjProperties.EndPeg := leEndPeg.Text;
  362. FProjProperties.LoadLength := StrToFloatDef(leLength.Text, 0);
  363. FProjProperties.LaneCount := StrToIntDef(leLaneCount.Text, 0);
  364. end;
  365. procedure TProjectPropertiesForm.tobtnBaseClick(Sender: TObject);
  366. procedure ResetTopButtonDown(ATag: Integer);
  367. begin
  368. tobtnBase.Down := tobtnBase.Tag = ATag;
  369. tobtnStaff.Down := tobtnStaff.Tag = ATag;
  370. tobtnView.Down := tobtnView.Tag = ATag;
  371. end;
  372. begin
  373. ResetTopButtonDown(TToolButton(Sender).Tag);
  374. jpsProperties.ActivePageIndex := TToolButton(Sender).Tag;
  375. jcbPhase.Visible := TToolButton(Sender).Tag = tobtnStaff.Tag;
  376. end;
  377. procedure TProjectPropertiesForm.InitStaffRela;
  378. var
  379. I: Integer;
  380. begin
  381. tobtnStaff.Enabled := FProjectData.PhaseIndex > 0;
  382. zaStaff.DataSet := FProjectData.StaffData.cdsStaffView;
  383. jcbPhase.Items.Clear;
  384. for I := 1 to FProjectData.ProjProperties.PhaseCount do
  385. jcbPhase.Items.Add(Format('第 %d 期', [I]));
  386. jcbPhase.ItemIndex := FProjectData.ProjProperties.PhaseCount - 1;
  387. end;
  388. procedure TProjectPropertiesForm.SetProjectData(const Value: TProjectData);
  389. begin
  390. FProjectData := Value;
  391. FStaffData := FProjectData.StaffData;
  392. FProjProperties := FProjectData.ProjProperties;
  393. InitAllPage;
  394. msbBase.VertScrollBar.Position := 0;
  395. jpsProperties.ActivePage := jpsPropertiesBase;
  396. end;
  397. procedure TProjectPropertiesForm.jcbPhaseChanged(Sender: TObject);
  398. begin
  399. FStaffData.ResetViewFilter(jcbPhase.ItemIndex + 1);
  400. end;
  401. procedure TProjectPropertiesForm.zgStaffCellGetColor(Sender: TObject;
  402. ACoord: TPoint; var AColor: TColor);
  403. begin
  404. if FStaffData.cdsStaff.FindKey([jcbPhase.ItemIndex + 1, ACoord.Y - zgStaff.FixedRowCount]) then
  405. if FStaffData.cdsStaffEnable.AsBoolean then
  406. AColor := clWindow
  407. else
  408. AColor := $DCDCDC;
  409. end;
  410. procedure TProjectPropertiesForm.zgStaffCellGetFont(Sender: TObject;
  411. ACoord: TPoint; AFont: TFont);
  412. begin
  413. if FStaffData.cdsStaff.FindKey([jcbPhase.ItemIndex + 1, ACoord.Y - zgStaff.FixedRowCount]) then
  414. if not FStaffData.cdsStaffLocked.AsBoolean and FStaffData.cdsStaffEnable.AsBoolean then
  415. AFont.Color := clWindowText
  416. else
  417. AFont.Color := $A9A9A9;
  418. end;
  419. procedure TProjectPropertiesForm.zgStaffCellCanEdit(Sender: TObject;
  420. const ACoord: TPoint; var Allow: Boolean);
  421. begin
  422. if ACoord.X < 2 then Allow := False;
  423. if FStaffData.cdsStaff.FindKey([jcbPhase.ItemIndex + 1, ACoord.Y - zgStaff.FixedRowCount]) then
  424. Allow := Allow and not FStaffData.cdsStaffLocked.AsBoolean and FStaffData.cdsStaffEnable.AsBoolean;
  425. end;
  426. procedure TProjectPropertiesForm.InitSafe;
  427. var
  428. bHasPassword: Boolean;
  429. begin
  430. bHasPassword := FProjProperties.UnlockInfoPassword <> '';
  431. pnlOrgPW.Visible := bHasPassword;
  432. leNewUnLockPassword.ReadOnly := bHasPassword;
  433. end;
  434. procedure TProjectPropertiesForm.SaveSafe;
  435. begin
  436. if leUnlockPassword.Text = FProjProperties.UnlockInfoPassword then
  437. if leNewUnLockPassword.Text = leNewUnlockPasswordAgain.Text then
  438. FProjProperties.UnlockInfoPassword := leNewUnLockPassword.Text
  439. else ErrorMessage('两次密码输入不一致,密码修改不成功!')
  440. else if leUnlockPassword.Text <> '' then
  441. ErrorMessage('原密码输入错误,密码修改不成功!');
  442. end;
  443. procedure TProjectPropertiesForm.leUnlockPasswordKeyPress(Sender: TObject;
  444. var Key: Char);
  445. begin
  446. CheckValidKey(Key);
  447. end;
  448. procedure TProjectPropertiesForm.CheckValidKey(var AKey: Char);
  449. begin
  450. if not (AKey in ['A'..'Z', 'a'..'z', '0'..'9', #8]) then
  451. AKey := #0;
  452. end;
  453. procedure TProjectPropertiesForm.leNewUnlockPasswordAgainExit(
  454. Sender: TObject);
  455. begin
  456. CheckNewPasswordAgain;
  457. end;
  458. procedure TProjectPropertiesForm.leNewUnLockPasswordExit(Sender: TObject);
  459. begin
  460. CheckNewPassword;
  461. if leNewUnlockPasswordAgain.Text <> '' then
  462. CheckNewPasswordAgain;
  463. end;
  464. procedure TProjectPropertiesForm.CheckNewPassword;
  465. var
  466. bValid: Boolean;
  467. begin
  468. bValid := CheckValidPassword(leNewUnLockPassword.Text);
  469. imgNew.Visible := not bValid;
  470. if not bValid then
  471. lblPasswordHint.Caption := leNewUnLockPassword.Hint;
  472. lblPasswordHint.Visible := not bValid;
  473. leNewUnlockPasswordAgain.ReadOnly := not bValid;
  474. end;
  475. procedure TProjectPropertiesForm.CheckNewPasswordAgain;
  476. var
  477. bValid: Boolean;
  478. begin
  479. bValid := not(CheckValidPassword(leNewUnLockPassword.Text)
  480. and (leNewUnlockPasswordAgain.Text <> leNewUnLockPassword.Text));
  481. imgNewAgain.Visible := not bValid;
  482. if not bValid then
  483. lblPasswordHint.Caption := leNewUnlockPasswordAgain.Hint;
  484. lblPasswordHint.Visible := not bValid;
  485. end;
  486. procedure TProjectPropertiesForm.leUnlockPasswordExit(Sender: TObject);
  487. begin
  488. CheckOrgPassword;
  489. end;
  490. procedure TProjectPropertiesForm.CheckOrgPassword;
  491. var
  492. bValid: Boolean;
  493. begin
  494. bValid := CheckValidPassword(leUnlockPassword.Text);
  495. imgOrg.Visible := not bValid;
  496. if not bValid then
  497. lblPasswordHint.Caption := leUnlockPassword.Hint;
  498. lblPasswordHint.Visible := not bValid;
  499. leNewUnLockPassword.ReadOnly := not bValid;
  500. end;
  501. procedure TProjectPropertiesForm.SaveCalcParameters;
  502. begin
  503. if FProjProperties.PhaseCount = 0 then
  504. begin
  505. FProjProperties.QuantityDigit := udQuantity.Position;
  506. FProjProperties.TotalPriceDigit := udTotalPrice.Position;
  507. FProjectData.ResetFloatDigitView;
  508. end;
  509. if (FProjProperties.PhaseCount = 1) and not FProjectData.PriceMarginReadOnly then
  510. FProjProperties.DecimalManager.PriceMargin.Price.Digit := udPM_PriceDigit.Position;
  511. end;
  512. procedure TProjectPropertiesForm.InitCalcParameters;
  513. begin
  514. udQuantity.Position := FProjProperties.QuantityDigit;
  515. leQuantityDigit.ReadOnly := FProjProperties.PhaseCount > 0;
  516. udQuantity.Enabled := FProjProperties.PhaseCount = 0;
  517. udTotalPrice.Position := FProjProperties.TotalPriceDigit;
  518. leTotalPriceDigit.ReadOnly := FProjProperties.PhaseCount > 0;
  519. udTotalPrice.Enabled := FProjProperties.PhaseCount = 0;
  520. udPM_PriceDigit.Position := FProjProperties.DecimalManager.PriceMargin.Price.Digit;
  521. lePM_PriceDigit.ReadOnly := FProjectData.PriceMarginReadOnly and (FProjProperties.PhaseCount > 1);
  522. udPM_PriceDigit.Enabled := not lePM_PriceDigit.ReadOnly;
  523. end;
  524. procedure TProjectPropertiesForm.SaveProjectView;
  525. begin
  526. FProjProperties.ShowReportShading := cbShowReportShading.Checked;
  527. FProjProperties.ReportShading := edtReportShading.Text;
  528. FProjProperties.ShowPriceChange := cbShowPriceChange.Checked;
  529. FProjProperties.ShowBGLCode := cbShowBGLCode.Checked;
  530. FProjProperties.ShowDesignQuantity := cbShowDesignQuantity.Checked;
  531. FProjProperties.ShowAlias := cbShowAlias.Checked;
  532. // 刷新界面显示
  533. FProjectFrame.RefreshColumnDisplay;
  534. end;
  535. procedure TProjectPropertiesForm.cbShowReportShadingClick(Sender: TObject);
  536. begin
  537. edtReportShading.Enabled := cbShowReportShading.Checked;
  538. end;
  539. procedure TProjectPropertiesForm.InitDateTime;
  540. var
  541. fs: TFormatSettings;
  542. begin
  543. GetLocaleFormatSettings(GetUserDefaultLCID, fs);
  544. fs.DateSeparator := '-';
  545. fs.ShortDateFormat := dtpBaseline.Format;
  546. dtpBaseline.Date := StrToDateDef(ProjProperties.Baseline, Date, fs);
  547. dtpDeadline.Date := StrToDateDef(ProjProperties.Deadline, Date, fs);
  548. end;
  549. procedure TProjectPropertiesForm.SaveDateTime;
  550. begin
  551. ProjProperties.Baseline := FormatDateTime(dtpBaseline.Format, dtpBaseline.Date);
  552. ProjProperties.Deadline := FormatDateTime(dtpDeadline.Format, dtpDeadline.Date);
  553. end;
  554. end.