ProjectPropertiesFrm.pas 25 KB

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