ProjectPropertiesFrm.pas 23 KB

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