ProjectPropertiesFrm.pas 22 KB

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