mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-20 12:19:31 +02:00
* Correct handling of non-modal window
git-svn-id: trunk@58719 -
This commit is contained in:
parent
0ef49c088c
commit
0f4021f622
@ -51,8 +51,11 @@ type
|
||||
FOnShowDesigner: TNotifyEvent;
|
||||
FOptions: TFPReportDesignOptions;
|
||||
FReport: TFPCustomReport;
|
||||
procedure DoDesignerClose(Sender: TObject; var CloseAction: TCloseAction);
|
||||
procedure DoSaveDesignJSON(Sender: TObject);
|
||||
procedure EndDesigning;
|
||||
procedure SetReport(AValue: TFPCustomReport);
|
||||
procedure StartDesigning;
|
||||
protected
|
||||
procedure ConfigDesigner(F: TFPReportDesignerForm); virtual;
|
||||
procedure AssignReportData; virtual;
|
||||
@ -108,6 +111,13 @@ begin
|
||||
(Sender as TFPReportDesignerForm).ResetModified;
|
||||
end;
|
||||
|
||||
procedure TFPReportDesigner.DoDesignerClose(Sender: TObject; var CloseAction: TCloseAction);
|
||||
begin
|
||||
EndDesigning;
|
||||
If Assigned(OnCloseDesigner) then
|
||||
OnCloseDesigner(Self);
|
||||
end;
|
||||
|
||||
procedure TFPReportDesigner.ConfigDesigner(F : TFPReportDesignerForm);
|
||||
|
||||
Var
|
||||
@ -148,15 +158,36 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TFPReportDesigner.StartDesigning;
|
||||
|
||||
Var
|
||||
I : integer;
|
||||
|
||||
begin
|
||||
For I:=0 to Report.ReportData.Count-1 do
|
||||
Report.ReportData[i].Data.StartDesigning;
|
||||
end;
|
||||
|
||||
procedure TFPReportDesigner.EndDesigning;
|
||||
|
||||
Var
|
||||
I : integer;
|
||||
|
||||
begin
|
||||
For I:=0 to Report.ReportData.Count-1 do
|
||||
Report.ReportData[i].Data.EndDesigning;
|
||||
end;
|
||||
|
||||
procedure TFPReportDesigner.DoExecute;
|
||||
|
||||
Var
|
||||
F : TFPReportDesignerForm;
|
||||
isModal : Boolean;
|
||||
|
||||
begin
|
||||
If not Assigned(FReport) then
|
||||
Raise EReportError.Create(SErrNoReport);
|
||||
StartDesigning;
|
||||
F:=TFPReportDesignerForm.Create(Application);
|
||||
try
|
||||
if AutoAssignReportData then
|
||||
@ -164,16 +195,14 @@ begin
|
||||
ConfigDesigner(F);
|
||||
if Assigned(OnShowDesigner) then
|
||||
OnShowDesigner(F);
|
||||
if not ModalWindow then
|
||||
F.AddHandlerClose(@DoDesignerClose,False);
|
||||
isModal:=ModalWindow;
|
||||
if not isModal then
|
||||
F.Show
|
||||
else
|
||||
begin
|
||||
F.ShowModal;
|
||||
if Assigned(OnCloseDesigner) then
|
||||
OnCloseDesigner(F);
|
||||
end;
|
||||
finally
|
||||
if ModalWindow then
|
||||
if isModal then
|
||||
F.Free;
|
||||
end;
|
||||
end;
|
||||
|
Loading…
Reference in New Issue
Block a user