123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- unit rpgZoneProjGatherSelectFrm;
- interface
- uses
- ProjGatherSelectFme,
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, ExtCtrls, StdCtrls;
- type
- TrpgZoneProjGatherSelectForm = class(TForm)
- pnlTop: TPanel;
- pnlPhase: TPanel;
- btnOk: TButton;
- btnCancel: TButton;
- leBeginPhaseIndex: TLabeledEdit;
- leEndPhaseIndex: TLabeledEdit;
- lblPhase: TLabel;
- lblPhaseHint: TLabel;
- procedure leBeginPhaseIndexKeyPress(Sender: TObject; var Key: Char);
- procedure leBeginPhaseIndexChange(Sender: TObject);
- procedure btnOkClick(Sender: TObject);
- private
- FSelectFrame: TProjGatherSelectFrame;
- FError: Integer;
- procedure CheckPhaseIndex;
- procedure RefreshDiffWindows;
- function GetBeginPhaseIndex: Integer;
- function GetEndPhaseIndex: Integer;
- procedure SetBeginPhaseIndex(const Value: Integer);
- procedure SetEndPhaseIndex(const Value: Integer);
- public
- constructor Create(AProjectID: Integer; AProjs: TList);
- destructor Destroy; override;
- property BeginPhaseIndex: Integer read GetBeginPhaseIndex write SetBeginPhaseIndex;
- property EndPhaseIndex: Integer read GetEndPhaseIndex write SetEndPhaseIndex;
- end;
- function SelectGatherProject(AProjectID: Integer; AProjs: TList; var ABeginPhaseIndex, AEndPhaseIndex: Integer): Boolean;
- implementation
- uses
- UtilMethods, Math;
- {$R *.dfm}
- function SelectGatherProject(AProjectID: Integer; AProjs: TList; var ABeginPhaseIndex, AEndPhaseIndex: Integer): Boolean;
- var
- vForm: TrpgZoneProjGatherSelectForm;
- begin
- vForm := TrpgZoneProjGatherSelectForm.Create(AProjectID, AProjs);
- vForm.BeginPhaseIndex := ABeginPhaseIndex;
- vForm.EndPhaseIndex := AEndPhaseIndex;
- try
- Result := vForm.ShowModal = mrOk;
- if Result then
- begin
- ABeginPhaseIndex := vForm.BeginPhaseIndex;
- AEndPhaseIndex := vForm.EndPhaseIndex;
- vForm.FSelectFrame.AssignResult(AProjs);
- end;
- finally
- vForm.Free;
- end;
- end;
- constructor TrpgZoneProjGatherSelectForm.Create(AProjectID: Integer; AProjs: TList);
- begin
- inherited Create(nil);
- FSelectFrame := TProjGatherSelectFrame.Create(AProjectID, nil);
- AlignControl(FSelectFrame, pnlTop, alClient);
- FSelectFrame.LoadHistorySelects(AProjs);
- FSelectFrame.AfterSelectProject := CheckPhaseIndex;
- RefreshDiffWindows;
- end;
- destructor TrpgZoneProjGatherSelectForm.Destroy;
- begin
- FSelectFrame.Free;
- inherited;
- end;
- function TrpgZoneProjGatherSelectForm.GetBeginPhaseIndex: Integer;
- begin
- Result := StrToIntDef(leBeginPhaseIndex.Text, -1);
- end;
- function TrpgZoneProjGatherSelectForm.GetEndPhaseIndex: Integer;
- begin
- Result := StrToIntDef(leEndPhaseIndex.Text, -1);
- end;
- procedure TrpgZoneProjGatherSelectForm.leBeginPhaseIndexKeyPress(Sender: TObject; var Key: Char);
- begin
- if not (Key in ['0'..'9', #8, #13]) then
- Key := #0;
- end;
- procedure TrpgZoneProjGatherSelectForm.SetBeginPhaseIndex(const Value: Integer);
- begin
- if (Value >= 0) and (Value <= 50) then
- leBeginPhaseIndex.Text := IntToStr(Value)
- else
- leBeginPhaseIndex.Text := '';
- end;
- procedure TrpgZoneProjGatherSelectForm.SetEndPhaseIndex(const Value: Integer);
- begin
- if (Value >= 0) and (Value <= 50) then
- leEndPhaseIndex.Text := IntToStr(Value)
- else
- leEndPhaseIndex.Text := '';
- end;
- procedure TrpgZoneProjGatherSelectForm.leBeginPhaseIndexChange(
- Sender: TObject);
- begin
- CheckPhaseIndex;
- end;
- procedure TrpgZoneProjGatherSelectForm.CheckPhaseIndex;
- begin
- FError := 0;
- if EndPhaseIndex < BeginPhaseIndex then
- FError := 1
- else if (EndPhaseIndex > 0) and (not FSelectFrame.CheckProjPhaseValid(EndPhaseIndex)) then
- FError := 2
- else
- FSelectFrame.ClearMarkedProj;
- lblPhaseHint.Visible := FError <> 0;
- case FError of
- 1: lblPhaseHint.Caption := '截止期应大于起始期。';
- 2: lblPhaseHint.Caption := '标记为红色的标段,未达第'+ leEndPhaseIndex.Text +'期';
- end;
- end;
- procedure TrpgZoneProjGatherSelectForm.RefreshDiffWindows;
- begin
- ClientHeight := 529;
- ClientWidth := 827;
- end;
- procedure TrpgZoneProjGatherSelectForm.btnOkClick(Sender: TObject);
- begin
- case FError of
- 0: ModalResult := mrOk;
- 1: WarningMessage('截止期应大于起始期。');
- 2: if QuestMessageYesNo('部分选中标段未达第'+leEndPhaseIndex.Text+'期,是否继续汇总?', Handle) then
- ModalResult := mrOk;
- end;
- end;
- end.
|