ProjectPropertiesFrm.pas 20 KB

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