ProjectPropertiesFrm.pas 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585
  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. procedure btnOkClick(Sender: TObject);
  108. procedure leContractPriceClick(Sender: TObject);
  109. procedure msbBaseMouseWheel(Sender: TObject; Shift: TShiftState;
  110. WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
  111. procedure msbBaseMouseWheelDown(Sender: TObject;
  112. Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
  113. procedure msbBaseMouseWheelUp(Sender: TObject; Shift: TShiftState;
  114. MousePos: TPoint; var Handled: Boolean);
  115. procedure msbBaseVScroll(Sender: TObject);
  116. procedure tobtnDealInfoClick(Sender: TObject);
  117. procedure tobtnBaseClick(Sender: TObject);
  118. procedure jcbPhaseChanged(Sender: TObject);
  119. procedure zgStaffCellGetColor(Sender: TObject; ACoord: TPoint;
  120. var AColor: TColor);
  121. procedure zgStaffCellGetFont(Sender: TObject; ACoord: TPoint;
  122. AFont: TFont);
  123. procedure zgStaffCellCanEdit(Sender: TObject; const ACoord: TPoint;
  124. var Allow: Boolean);
  125. procedure leUnlockPasswordKeyPress(Sender: TObject; var Key: Char);
  126. procedure leNewUnlockPasswordAgainExit(Sender: TObject);
  127. procedure leNewUnLockPasswordExit(Sender: TObject);
  128. procedure leUnlockPasswordExit(Sender: TObject);
  129. procedure cbShowReportShadingClick(Sender: TObject);
  130. private
  131. FProjectData: TProjectData;
  132. FStaffData: TStaffData;
  133. FProjProperties: TProjProperties;
  134. FProjectFrame: TProjectFrame;
  135. procedure InitAllPage;
  136. procedure InitDealInfo;
  137. procedure InitDealPay;
  138. procedure InitTechParameters;
  139. procedure InitProjectView;
  140. procedure InitStaffRela;
  141. procedure InitSafe;
  142. procedure InitCalcParameters;
  143. procedure SaveDealInfo;
  144. procedure SaveDealPay;
  145. procedure SaveTechParameters;
  146. procedure SaveSafe;
  147. procedure SaveCalcParameters;
  148. procedure SaveProjectView;
  149. procedure ResetContentsCheck; overload;
  150. procedure ResetContentsCheck(ATag: Integer); overload;
  151. procedure ResetVertScrollBarPosition(ATag: Integer);
  152. procedure CheckValidKey(var AKey: Char);
  153. procedure CheckOrgPassword;
  154. procedure CheckNewPassword;
  155. procedure CheckNewPasswordAgain;
  156. procedure SetProjectData(const Value: TProjectData);
  157. public
  158. procedure Save;
  159. property ProjectData: TProjectData read FProjectData write SetProjectData;
  160. property ProjProperties: TProjProperties read FProjProperties;
  161. property ProjectFrame: TProjectFrame read FProjectFrame write FprojectFrame;
  162. end;
  163. procedure ModifyProjectProperties(ProjectFrame: TProjectFrame);
  164. implementation
  165. uses
  166. PhaseProperty, DB, UtilMethods, ZhAPI;
  167. {$R *.dfm}
  168. procedure ModifyProjectProperties(ProjectFrame: TProjectFrame);
  169. var
  170. PropertiesForm: TProjectPropertiesForm;
  171. begin
  172. PropertiesForm := TProjectPropertiesForm.Create(nil);
  173. try
  174. PropertiesForm.ProjectFrame := ProjectFrame;
  175. PropertiesForm.ProjectData := ProjectFrame.ProjectData;
  176. PropertiesForm.zgStaff.OnCellCanEdit := PropertiesForm.zgStaffCellCanEdit;
  177. if PropertiesForm.ShowModal = mrOk then
  178. PropertiesForm.Save;
  179. finally
  180. PropertiesForm.Free;
  181. end;
  182. end;
  183. { TProjectPropertiesForm }
  184. procedure TProjectPropertiesForm.InitAllPage;
  185. begin
  186. InitDealInfo;
  187. InitTechParameters;
  188. InitDealPay;
  189. InitSafe;
  190. InitCalcParameters;
  191. InitStaffRela;
  192. InitProjectView;
  193. end;
  194. procedure TProjectPropertiesForm.InitProjectView;
  195. begin
  196. cbShowPriceChange.Checked := FProjProperties.ShowPriceChange;
  197. cbShowBGLCode.Checked := FProjProperties.ShowBGLCode;
  198. cbShowDesignQuantity.Checked := FProjProperties.ShowDesignQuantity;
  199. cbShowAlias.Checked := FProjProperties.ShowAlias;
  200. cbShowReportShading.Checked := FProjProperties.ShowReportShading;
  201. edtReportShading.Enabled := cbShowReportShading.Checked;
  202. edtReportShading.Text := FProjProperties.ReportShading;
  203. end;
  204. procedure TProjectPropertiesForm.btnOkClick(Sender: TObject);
  205. begin
  206. ModalResult := mrOk;
  207. end;
  208. procedure TProjectPropertiesForm.Save;
  209. begin
  210. SaveDealPay;
  211. SaveDealInfo;
  212. SaveTechParameters;
  213. SaveSafe;
  214. SaveCalcParameters;
  215. SaveProjectView;
  216. end;
  217. procedure TProjectPropertiesForm.InitDealPay;
  218. begin
  219. leContractPrice.Text := FloatToStr(FProjProperties.ContractPrice);
  220. leContractPrice.ReadOnly := FProjProperties.PhaseCount > 0;
  221. SetWindowLong(leContractPrice.Handle, GWL_STYLE, GetWindowLong(leContractPrice.Handle, GWL_STYLE) or ES_RIGHT);
  222. leStartedSubsist.Text := FloatToStr(FProjProperties.StartedSubsisit);
  223. leStartedSubsist.ReadOnly := FProjProperties.PhaseCount > 0;
  224. SetWindowLong(leStartedSubsist.Handle, GWL_STYLE, GetWindowLong(leStartedSubsist.Handle, GWL_STYLE) or ES_RIGHT);
  225. leMaterialSubsist.Text := FloatToStr(FProjProperties.MaterialSubsist);
  226. leMaterialSubsist.ReadOnly := FProjProperties.PhaseCount > 0;
  227. SetWindowLong(leMaterialSubsist.Handle, GWL_STYLE, GetWindowLong(leMaterialSubsist.Handle, GWL_STYLE) or ES_RIGHT);
  228. end;
  229. procedure TProjectPropertiesForm.SaveDealPay;
  230. begin
  231. if FProjProperties.PhaseCount > 0 then Exit;
  232. FProjProperties.ContractPrice := StrToFloatDef(leContractPrice.Text, 0);
  233. FProjProperties.StartedSubsisit := StrToFloatDef(leStartedSubsist.Text, 0);
  234. FProjProperties.MaterialSubsist := StrToFloatDef(leMaterialSubsist.Text, 0);
  235. FProjectData.DealPaymentData.CalcStarted_RangePrice;
  236. end;
  237. procedure TProjectPropertiesForm.leContractPriceClick(Sender: TObject);
  238. begin
  239. if not TLabeledEdit(Sender).ReadOnly then
  240. TLabeledEdit(Sender).SelectAll;
  241. end;
  242. procedure TProjectPropertiesForm.msbBaseMouseWheel(Sender: TObject;
  243. Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint;
  244. var Handled: Boolean);
  245. begin
  246. ResetContentsCheck;
  247. end;
  248. procedure TProjectPropertiesForm.msbBaseMouseWheelDown(Sender: TObject;
  249. Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
  250. begin
  251. SendMessage(msbBase.Handle,WM_VSCROLL,SB_LINEDOWN, 0);
  252. end;
  253. procedure TProjectPropertiesForm.msbBaseMouseWheelUp(Sender: TObject;
  254. Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
  255. begin
  256. SendMessage(msbBase.Handle,WM_VSCROLL,SB_LINEUP, 0);
  257. end;
  258. procedure TProjectPropertiesForm.ResetContentsCheck(ATag: Integer);
  259. begin
  260. tobtnDealInfo.Down := tobtnDealInfo.Tag = ATag;
  261. tobtnTechParameters.Down := tobtnTechParameters.Tag = ATag;
  262. tobtnDealPayment.Down := tobtnDealPayment.Tag = ATag;
  263. tobtnSafe.Down := tobtnSafe.Tag = ATag;
  264. tobtnCalcParameters.Down := tobtnCalcParameters.Tag = ATag;
  265. end;
  266. procedure TProjectPropertiesForm.msbBaseVScroll(Sender: TObject);
  267. begin
  268. ResetContentsCheck;
  269. end;
  270. procedure TProjectPropertiesForm.ResetContentsCheck;
  271. begin
  272. if msbBase.VertScrollBar.Position < 355 then
  273. ResetContentsCheck(tobtnDealInfo.Tag)
  274. else if msbBase.VertScrollBar.Position < 515 then
  275. ResetContentsCheck(tobtnTechParameters.Tag)
  276. else if msbBase.VertScrollBar.Position < 628 then
  277. ResetContentsCheck(tobtnDealPayment.Tag)
  278. else if msbBase.VertScrollBar.Position < 758 then
  279. ResetContentsCheck(tobtnSafe.Tag)
  280. else
  281. ResetContentsCheck(tobtnCalcParameters.Tag);
  282. end;
  283. procedure TProjectPropertiesForm.tobtnDealInfoClick(Sender: TObject);
  284. begin
  285. ResetContentsCheck(TToolButton(Sender).Tag);
  286. ResetVertScrollBarPosition(TToolButton(Sender).Tag);
  287. end;
  288. procedure TProjectPropertiesForm.ResetVertScrollBarPosition(ATag: Integer);
  289. begin
  290. if ATag = tobtnDealInfo.Tag then
  291. msbBase.VertScrollBar.Position := 0
  292. else if ATag = tobtnTechParameters.Tag then
  293. msbBase.VertScrollBar.Position := 355
  294. else if ATag = tobtnDealPayment.Tag then
  295. msbBase.VertScrollBar.Position := 515
  296. else if ATag = tobtnSafe.Tag then
  297. msbBase.VertScrollBar.Position := 628
  298. else if ATag = tobtnCalcParameters.Tag then
  299. msbBase.VertScrollBar.Position := 758;
  300. end;
  301. procedure TProjectPropertiesForm.InitDealInfo;
  302. begin
  303. leProjectName.Text := FProjProperties.ProjectName;
  304. leDealName.Text := FProjProperties.DealName;
  305. leDealIndex.Text := FProjProperties.DealIndex;
  306. leDealType.Text := FProjProperties.DealType;
  307. leBName.Text := FProjProperties.BName;
  308. leBLegal.Text := FProjProperties.BLegal;
  309. leBDate.Text := FProjProperties.BDate;
  310. leCName.Text := FProjProperties.CName;
  311. leCLegal.Text := FProjProperties.CLegal;
  312. leCDate.Text := FProjProperties.CDate;
  313. leSName.Text := FProjProperties.SName;
  314. leSLegal.Text := FProjProperties.SLegal;
  315. leSDate.Text := FProjProperties.SDate;
  316. end;
  317. procedure TProjectPropertiesForm.InitTechParameters;
  318. begin
  319. cbLoadLevel.ItemIndex := FProjProperties.LoadLevel;
  320. leStartPeg.Text := FProjProperties.StartPeg;
  321. leEndPeg.Text := FProjProperties.EndPeg;
  322. leLength.Text := FloatToStr(FProjProperties.LoadLength);
  323. leLaneCount.Text := IntToStr(FProjProperties.LaneCount);
  324. end;
  325. procedure TProjectPropertiesForm.SaveDealInfo;
  326. begin
  327. FProjProperties.ProjectName := leProjectName.Text;
  328. FProjProperties.DealName := leDealName.Text;
  329. FProjProperties.DealIndex := leDealIndex.Text;
  330. FProjProperties.DealType := leDealType.Text;
  331. FProjProperties.BName := leBName.Text;
  332. FProjProperties.BLegal := leBLegal.Text;
  333. FProjProperties.BDate := leBDate.Text;
  334. FProjProperties.CName := leCName.Text;
  335. FProjProperties.CLegal := leCLegal.Text;
  336. FProjProperties.CDate := leCDate.Text;
  337. FProjProperties.SName := leSName.Text;
  338. FProjProperties.SLegal := leSLegal.Text;
  339. FProjProperties.SDate := leSDate.Text;
  340. end;
  341. procedure TProjectPropertiesForm.SaveTechParameters;
  342. begin
  343. FProjProperties.LoadLevel := cbLoadLevel.ItemIndex;
  344. FProjProperties.StartPeg := leStartPeg.Text;
  345. FProjProperties.EndPeg := leEndPeg.Text;
  346. FProjProperties.LoadLength := StrToFloatDef(leLength.Text, 0);
  347. FProjProperties.LaneCount := StrToIntDef(leLaneCount.Text, 0);
  348. end;
  349. procedure TProjectPropertiesForm.tobtnBaseClick(Sender: TObject);
  350. procedure ResetTopButtonDown(ATag: Integer);
  351. begin
  352. tobtnBase.Down := tobtnBase.Tag = ATag;
  353. tobtnStaff.Down := tobtnStaff.Tag = ATag;
  354. tobtnView.Down := tobtnView.Tag = ATag;
  355. end;
  356. begin
  357. ResetTopButtonDown(TToolButton(Sender).Tag);
  358. jpsProperties.ActivePageIndex := TToolButton(Sender).Tag;
  359. jcbPhase.Visible := TToolButton(Sender).Tag = tobtnStaff.Tag;
  360. end;
  361. procedure TProjectPropertiesForm.InitStaffRela;
  362. var
  363. I: Integer;
  364. begin
  365. tobtnStaff.Enabled := FProjectData.PhaseIndex > 0;
  366. zaStaff.DataSet := FProjectData.StaffData.cdsStaffView;
  367. jcbPhase.Items.Clear;
  368. for I := 1 to FProjectData.ProjProperties.PhaseCount do
  369. jcbPhase.Items.Add(Format('第 %d 期', [I]));
  370. jcbPhase.ItemIndex := FProjectData.ProjProperties.PhaseCount - 1;
  371. end;
  372. procedure TProjectPropertiesForm.SetProjectData(const Value: TProjectData);
  373. begin
  374. FProjectData := Value;
  375. FStaffData := FProjectData.StaffData;
  376. FProjProperties := FProjectData.ProjProperties;
  377. InitAllPage;
  378. end;
  379. procedure TProjectPropertiesForm.jcbPhaseChanged(Sender: TObject);
  380. begin
  381. FStaffData.ResetViewFilter(jcbPhase.ItemIndex + 1);
  382. end;
  383. procedure TProjectPropertiesForm.zgStaffCellGetColor(Sender: TObject;
  384. ACoord: TPoint; var AColor: TColor);
  385. begin
  386. if FStaffData.cdsStaff.FindKey([jcbPhase.ItemIndex + 1, ACoord.Y - zgStaff.FixedRowCount]) then
  387. if FStaffData.cdsStaffEnable.AsBoolean then
  388. AColor := clWindow
  389. else
  390. AColor := $DCDCDC;
  391. end;
  392. procedure TProjectPropertiesForm.zgStaffCellGetFont(Sender: TObject;
  393. ACoord: TPoint; AFont: TFont);
  394. begin
  395. if FStaffData.cdsStaff.FindKey([jcbPhase.ItemIndex + 1, ACoord.Y - zgStaff.FixedRowCount]) then
  396. if not FStaffData.cdsStaffLocked.AsBoolean and FStaffData.cdsStaffEnable.AsBoolean then
  397. AFont.Color := clWindowText
  398. else
  399. AFont.Color := $A9A9A9;
  400. end;
  401. procedure TProjectPropertiesForm.zgStaffCellCanEdit(Sender: TObject;
  402. const ACoord: TPoint; var Allow: Boolean);
  403. begin
  404. if ACoord.X < 2 then Allow := False;
  405. if FStaffData.cdsStaff.FindKey([jcbPhase.ItemIndex + 1, ACoord.Y - zgStaff.FixedRowCount]) then
  406. Allow := Allow and not FStaffData.cdsStaffLocked.AsBoolean and FStaffData.cdsStaffEnable.AsBoolean;
  407. end;
  408. procedure TProjectPropertiesForm.InitSafe;
  409. var
  410. bHasPassword: Boolean;
  411. begin
  412. bHasPassword := FProjProperties.UnlockInfoPassword <> '';
  413. pnlOrgPW.Visible := bHasPassword;
  414. leNewUnLockPassword.ReadOnly := bHasPassword;
  415. end;
  416. procedure TProjectPropertiesForm.SaveSafe;
  417. begin
  418. if leUnlockPassword.Text = FProjProperties.UnlockInfoPassword then
  419. if leNewUnLockPassword.Text = leNewUnlockPasswordAgain.Text then
  420. FProjProperties.UnlockInfoPassword := leNewUnLockPassword.Text
  421. else ErrorMessage('两次密码输入不一致,密码修改不成功!')
  422. else if leUnlockPassword.Text <> '' then
  423. ErrorMessage('原密码输入错误,密码修改不成功!');
  424. end;
  425. procedure TProjectPropertiesForm.leUnlockPasswordKeyPress(Sender: TObject;
  426. var Key: Char);
  427. begin
  428. CheckValidKey(Key);
  429. end;
  430. procedure TProjectPropertiesForm.CheckValidKey(var AKey: Char);
  431. begin
  432. if not (AKey in ['A'..'Z', 'a'..'z', '0'..'9', #8]) then
  433. AKey := #0;
  434. end;
  435. procedure TProjectPropertiesForm.leNewUnlockPasswordAgainExit(
  436. Sender: TObject);
  437. begin
  438. CheckNewPasswordAgain;
  439. end;
  440. procedure TProjectPropertiesForm.leNewUnLockPasswordExit(Sender: TObject);
  441. begin
  442. CheckNewPassword;
  443. if leNewUnlockPasswordAgain.Text <> '' then
  444. CheckNewPasswordAgain;
  445. end;
  446. procedure TProjectPropertiesForm.CheckNewPassword;
  447. var
  448. bValid: Boolean;
  449. begin
  450. bValid := CheckValidPassword(leNewUnLockPassword.Text);
  451. imgNew.Visible := not bValid;
  452. if not bValid then
  453. lblPasswordHint.Caption := leNewUnLockPassword.Hint;
  454. lblPasswordHint.Visible := not bValid;
  455. leNewUnlockPasswordAgain.ReadOnly := not bValid;
  456. end;
  457. procedure TProjectPropertiesForm.CheckNewPasswordAgain;
  458. var
  459. bValid: Boolean;
  460. begin
  461. bValid := not(CheckValidPassword(leNewUnLockPassword.Text)
  462. and (leNewUnlockPasswordAgain.Text <> leNewUnLockPassword.Text));
  463. imgNewAgain.Visible := not bValid;
  464. if not bValid then
  465. lblPasswordHint.Caption := leNewUnlockPasswordAgain.Hint;
  466. lblPasswordHint.Visible := not bValid;
  467. end;
  468. procedure TProjectPropertiesForm.leUnlockPasswordExit(Sender: TObject);
  469. begin
  470. CheckOrgPassword;
  471. end;
  472. procedure TProjectPropertiesForm.CheckOrgPassword;
  473. var
  474. bValid: Boolean;
  475. begin
  476. bValid := CheckValidPassword(leUnlockPassword.Text);
  477. imgOrg.Visible := not bValid;
  478. if not bValid then
  479. lblPasswordHint.Caption := leUnlockPassword.Hint;
  480. lblPasswordHint.Visible := not bValid;
  481. leNewUnLockPassword.ReadOnly := not bValid;
  482. end;
  483. procedure TProjectPropertiesForm.SaveCalcParameters;
  484. begin
  485. if FProjProperties.PhaseCount = 0 then
  486. begin
  487. FProjProperties.QuantityDigit := udQuantity.Position;
  488. FProjProperties.TotalPriceDigit := udTotalPrice.Position;
  489. FProjectData.ResetFloatDigitView;
  490. end;
  491. if (FProjProperties.PhaseCount = 1) and not FProjectData.PriceMarginReadOnly then
  492. FProjProperties.DecimalManager.PriceMargin.Price.Digit := udPM_PriceDigit.Position;
  493. end;
  494. procedure TProjectPropertiesForm.InitCalcParameters;
  495. begin
  496. udQuantity.Position := FProjProperties.QuantityDigit;
  497. leQuantityDigit.ReadOnly := FProjProperties.PhaseCount > 0;
  498. udQuantity.Enabled := FProjProperties.PhaseCount = 0;
  499. udTotalPrice.Position := FProjProperties.TotalPriceDigit;
  500. leTotalPriceDigit.ReadOnly := FProjProperties.PhaseCount > 0;
  501. udTotalPrice.Enabled := FProjProperties.PhaseCount = 0;
  502. udPM_PriceDigit.Position := FProjProperties.DecimalManager.PriceMargin.Price.Digit;
  503. lePM_PriceDigit.ReadOnly := FProjectData.PriceMarginReadOnly and (FProjProperties.PhaseCount > 1);
  504. udPM_PriceDigit.Enabled := not lePM_PriceDigit.ReadOnly;
  505. end;
  506. procedure TProjectPropertiesForm.SaveProjectView;
  507. begin
  508. FProjProperties.ShowReportShading := cbShowReportShading.Checked;
  509. FProjProperties.ReportShading := edtReportShading.Text;
  510. FProjProperties.ShowPriceChange := cbShowPriceChange.Checked;
  511. FProjProperties.ShowBGLCode := cbShowBGLCode.Checked;
  512. FProjProperties.ShowDesignQuantity := cbShowDesignQuantity.Checked;
  513. FProjProperties.ShowAlias := cbShowAlias.Checked;
  514. // 刷新界面显示
  515. FProjectFrame.RefreshColumnDisplay;
  516. end;
  517. procedure TProjectPropertiesForm.cbShowReportShadingClick(Sender: TObject);
  518. begin
  519. edtReportShading.Enabled := cbShowReportShading.Checked;
  520. end;
  521. end.