ProjectPropertiesFrm.pas 24 KB

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