ProjectPropertiesFrm.pas 18 KB

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