ProjectPropertiesFrm.pas 17 KB

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