ProjectPropertiesFrm.pas 25 KB

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