ProjectPropertiesFrm.pas 24 KB

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