ProjectPropertiesFrm.pas 26 KB

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