ProjectPropertiesFrm.pas 23 KB

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