* Popup menu added, added SendToBack/BringToFront (bug ID )

git-svn-id: trunk@57682 -
This commit is contained in:
michael 2018-04-21 16:54:39 +00:00
parent 2f01f9b2d5
commit 445127a35d
7 changed files with 257 additions and 13 deletions

View File

@ -969,6 +969,8 @@ Var
RH : TResizeHandlePosition;
begin
if (Button<>mbLeft) then
exit;
SetFocus;
FLastMouseDown:=Point(X,Y);
Case DesignerState of
@ -996,6 +998,8 @@ procedure TFPReportDesignerControl.MUp(Sender: TObject; Button: TMouseButton; Sh
X, Y: Integer);
begin
if (Button<>mbLeft) then
Exit;
FLastMouseUp:=Point(X,Y);
{$IFDEF DEBUGRD} Writeln('Mouse up, desigerstate : ',DesignerState);{$ENDIF}
Case DesignerState of

View File

@ -108,6 +108,8 @@ Type
Procedure EndSelectionUpdate;
Procedure ClearSelection;
Procedure ClearPreviousSelection;
Procedure BringToFront;
Procedure SendToBack;
procedure OrderBands(aBandTextheight, ADPI: Integer); virtual;
procedure OrderBands(ACanvas: TCanvas; ADPI: Integer);
Procedure DrawSelectionHandles;virtual;
@ -428,6 +430,45 @@ begin
GetObject(i).FPreviousSelected:=False;
end;
procedure TReportObjectList.BringToFront;
Var
Sel : TReportObjectArray;
O : TReportObject;
B : TFPReportCustomBand;
begin
Sel:=GetSelection;
For O in Sel do
If O.IsPlainElement then
begin
B:=O.Element.Band;
if Assigned(B) then
B.BringToFront(O.Element);
O.Index:=Count-1;
end;
SelectionChanged;
end;
procedure TReportObjectList.SendToBack;
Var
Sel : TReportObjectArray;
O : TReportObject;
B : TFPReportCustomBand;
begin
Sel:=GetSelection;
For O in Sel do
If O.IsPlainElement then
begin
B:=O.Element.Band;
if Assigned(B) then
B.SendToBack(O.Element);
O.Index:=0;
end;
SelectionChanged;
end;
function TReportObjectList.FindNextBand(ABand: TFPReportCustomBand
): TFPReportCustomBand;

View File

@ -409,6 +409,12 @@ object FPReportDesignerForm: TFPReportDesignerForm
object MIPaste: TMenuItem
Action = APaste
end
object MenuItem5: TMenuItem
Caption = '-'
end
object MIEditElement: TMenuItem
Action = AEditElement
end
end
object MReport: TMenuItem
Caption = 'Report'
@ -469,6 +475,15 @@ object FPReportDesignerForm: TFPReportDesignerForm
end
object MAdd: TMenuItem
Caption = 'Elements'
object MIBringToFront: TMenuItem
Action = ABringToFront
end
object MISendToBack: TMenuItem
Action = ASendToBack
end
object MenuItem4: TMenuItem
Caption = '-'
end
object miAddMemo: TMenuItem
Action = AAddMemo
end
@ -965,6 +980,28 @@ object FPReportDesignerForm: TFPReportDesignerForm
Caption = 'Open in new window'
OnExecute = AFileOpenNewWindowExecute
end
object AEditElement: TAction
Category = 'Edit'
Caption = 'Edit element'
OnExecute = AEditElementExecute
OnUpdate = AEditElementUpdate
end
object ASendToBack: TAction
Category = 'Edit'
Caption = 'Send to back'
Hint = 'Send selection to back of Z-Order'
ImageIndex = 40
OnExecute = ASendToBackExecute
OnUpdate = ASendToBackFrontUpdate
end
object ABringToFront: TAction
Category = 'Edit'
Caption = 'Bring to front'
Hint = 'Bring selection to front of Z-Order'
ImageIndex = 41
OnExecute = ABringToFrontExecute
OnUpdate = ASendToBackFrontUpdate
end
end
object SDReport: TSaveDialog
DefaultExt = '.json'
@ -977,7 +1014,7 @@ object FPReportDesignerForm: TFPReportDesignerForm
left = 264
top = 192
Bitmap = {
4C69280000001000000010000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
4C692A0000001000000010000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF006D9CD4896A9AD2FB6697CFEEFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00709ED6DB6D9C
@ -2257,7 +2294,71 @@ object FPReportDesignerForm: TFPReportDesignerForm
98FF246395FF587388FFF7F7F7FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0
F0FFF0F0F0FFF3F3F3FA46464684FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005E5E5E025B5B5B775858588A5555558A5252528A4F4F4F8A4C4C4C8A4A4A
4A8A4848488A4646468A44444466
4A8A4848488A4646468A44444466DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDF
DF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDF
DF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDF
DF00DFDFDF00DFDFDF00E7B48DFEE6B38CFFE6B38CFFE5AF88FFE2A880FFDE9F
76FFDA956CFFD78E64D2DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDF
DF00DFDFDF00DFDFDF00E7B48DFEECC8ACFFEBC3A4FFEABEA0FFE7B798FFE4AF
90FFE2AA8BFFD99169D2DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDF
DF00DFDFDF00DFDFDF00E7B48DFEECC7AAFFEBC0A1FFE7BA9BFFE5B192FFE2AA
8BFFE0A687FFD88E66D2DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDF
DF00DFDFDEFFDADADAFFD2D1D1FFC9C9C8FFBFBFBFFFB6B6B6FFAEAEAEFFA4A5
A5FFDFA384FFD88E66D2DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDF
DF00DFDFDFFFDCDCDCFFD9D9D9FFD8D8D8FFD4D4D4FFD0D0D0FFCECECEFFA5A5
A5FFE0A687FFD88E66D2DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDEFFDADA
DAFFD2D1D1FFC9C9C8FFBFBFBFFFB6B6B6FFAEAEAEFFA4A5A5FFCCCCCCFFA5A5
A5FFDFA384FFD88E66D2DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDFFFDCDC
DCFFD9D9D9FFD8D8D8FFD4D4D4FFD0D0D0FFCECECEFFA5A5A5FFCACACAFFA5A6
A5FFD28358FFD48358D2DFDFDF00DFDFDF00DFDFDEFFDADADAFFD2D1D1FFC9C9
C8FFBFBFBFFFB6B6B6FFAEAEAEFFA4A5A5FFCCCCCCFFA5A5A5FFCCCCCCFFA5A5
A5FFDFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDFFFDCDCDCFFD9D9D9FFD8D8
D8FFD4D4D4FFD0D0D0FFCECECEFFA5A5A5FFCACACAFFA5A6A5FFCACACAFFA5A5
A5FFDFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDFFFDCDCDCFFD8D8D8FFD5D5
D5FFD1D1D1FFCECECEFFCCCCCCFFA5A5A5FFCCCCCCFFA5A5A5FFAFAEAEFFA6A5
A6FFDFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDFFFDADADAFFD6D6D6FFD2D2
D2FFCECECEFFCBCBCBFFCACACAFFA5A6A5FFCACACAFFA5A5A5FFDFDFDF00DFDF
DF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDFFFDCDCDCFFD8D8D8FFD5D5
D5FFD1D1D1FFCECECEFFCCCCCCFFA5A5A5FFAFAEAEFFA6A5A6FFDFDFDF00DFDF
DF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDFFFDADADAFFD6D6D6FFD2D2
D2FFCECECEFFCBCBCBFFCACACAFFA5A5A5FFDFDFDF00DFDFDF00DFDFDF00DFDF
DF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDFFFDADBDBFFD2D2D2FFC9C9
C8FFC0C0C0FFB7B8B7FFAFAEAEFFA6A5A6FFDFDFDF00DFDFDF00DFDFDF00DFDF
DF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDF
DF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDF
DF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDF
DF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDF
DF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDF
DF00DFDFDF00DFDFDF00DFDFDEFFDADADAFFD2D1D1FFC9C9C8FFBFBFBFFFB6B6
B6FFAEAEAEFFA4A5A5FFDFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDF
DF00DFDFDF00DFDFDF00DFDFDFFFDCDCDCFFD9D9D9FFD8D8D8FFD4D4D4FFD0D0
D0FFCECECEFFA5A5A5FFDFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDF
DF00DFDFDEFFDADADAFFD2D1D1FFC9C9C8FFBFBFBFFFB6B6B6FFAEAEAEFFA4A5
A5FFCCCCCCFFA5A5A5FFDFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDF
DF00DFDFDFFFDCDCDCFFD9D9D9FFD8D8D8FFD4D4D4FFD0D0D0FFCECECEFFA5A5
A5FFCACACAFFA5A6A5FFDFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDEFFDADA
DAFFD2D1D1FFC9C9C8FFBFBFBFFFB6B6B6FFAEAEAEFFA4A5A5FFCCCCCCFFA5A5
A5FFCCCCCCFFA5A5A5FFDFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDFFFDCDC
DCFFD9D9D9FFD8D8D8FFD4D4D4FFD0D0D0FFCECECEFFA5A5A5FFCACACAFFA5A6
A5FFCACACAFFA5A5A5FFDFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDFFFDCDC
DCFFD8D8D8FFD5D5D5FFD1D1D1FFCECECEFFCCCCCCFFA5A5A5FFCCCCCCFFA5A5
A5FFAFAEAEFFA6A5A6FFDFDFDF00DFDFDF00E7B48DFEE6B38CFFE6B38CFFE5AF
88FFE2A880FFDE9F76FFDA956CFFD49876FFCACACAFFA5A6A5FFCACACAFFA5A5
A5FFDFDFDF00DFDFDF00DFDFDF00DFDFDF00E7B48DFEECC8ACFFEBC3A4FFEABE
A0FFE7B798FFE4AF90FFE2AA8BFFD79B7AFFCCCCCCFFA5A5A5FFAFAEAEFFA6A5
A6FFDFDFDF00DFDFDF00DFDFDF00DFDFDF00E7B48DFEECC7AAFFEBC0A1FFE7BA
9BFFE5B192FFE2AA8BFFE0A687FFD59877FFCACACAFFA5A5A5FFDFDFDF00DFDF
DF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00E7B48DFEEBC5A7FFE9BB9DFFE5B4
95FFE2AC8DFFE0A584FFDFA384FFD29574FFAFAEAEFFA6A5A6FFDFDFDF00DFDF
DF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00E7B48DFEECC7AAFFEBC0A1FFE7BA
9BFFE5B192FFE2AA8BFFE0A687FFD88E66D2DFDFDF00DFDFDF00DFDFDF00DFDF
DF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00E7B48DFEEBC5A7FFE9BB9DFFE5B4
95FFE2AC8DFFE0A584FFDFA384FFD88E66D2DFDFDF00DFDFDF00DFDFDF00DFDF
DF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00E6B089FEE2A880FFDD9F76FFD996
6CFFD78C63FFD3855AFFD28358FFD48358D2DFDFDF00DFDFDF00DFDFDF00DFDF
DF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDF
DF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDF
DF00DFDFDF00DFDFDF00DFDFDF00
}
end
object PMAdd: TPopupMenu

View File

@ -84,6 +84,9 @@ type
AAlignBottom: TAction;
AAlign: TAction;
ACopy: TAction;
ABringToFront: TAction;
ASendToBack: TAction;
AEditElement: TAction;
AFileOpenNewWindow: TAction;
ANewNewWindow: TAction;
ACut: TAction;
@ -116,6 +119,11 @@ type
MenuItem1: TMenuItem;
MenuItem2: TMenuItem;
MenuItem3: TMenuItem;
MenuItem4: TMenuItem;
MIBringToFront: TMenuItem;
MISendToBack: TMenuItem;
MIEditElement: TMenuItem;
MenuItem5: TMenuItem;
MINewNewWindow: TMenuItem;
MIFileOpenNewWindow: TMenuItem;
MICopy: TMenuItem;
@ -253,12 +261,15 @@ type
procedure AAddShapeExecute(Sender: TObject);
procedure AAlignExecute(Sender: TObject);
procedure AAlignUpdate(Sender: TObject);
procedure ABringToFrontExecute(Sender: TObject);
procedure ACopyExecute(Sender: TObject);
procedure ACopyUpdate(Sender: TObject);
procedure ACutExecute(Sender: TObject);
procedure ACutUpdate(Sender: TObject);
procedure ADeleteExecute(Sender: TObject);
procedure ADeleteUpdate(Sender: TObject);
procedure AEditElementExecute(Sender: TObject);
procedure AEditElementUpdate(Sender: TObject);
procedure AFileOpenNewWindowExecute(Sender: TObject);
procedure AFileSaveAsExecute(Sender: TObject);
procedure AFileSaveAsUpdate(Sender: TObject);
@ -280,6 +291,8 @@ type
procedure AResizeBandToFitExecute(Sender: TObject);
procedure AResizeBandToFitUpdate(Sender: TObject);
procedure AResizeExecute(Sender: TObject);
procedure ASendToBackExecute(Sender: TObject);
procedure ASendToBackFrontUpdate(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
procedure FormDestroy(Sender: TObject);
procedure FormDropFiles(Sender: TObject; const FileNames: array of String);
@ -327,6 +340,7 @@ type
procedure InitialiseData;
{$ENDIF}
procedure CheckLoadInitialFile;
function CreateDesignPopupMenu(aOWner: TComponent): TPopupMenu;
function CreateNewPage: TFPReportCustomPage;
procedure DoPaste(Sender: TObject);
procedure DoReportChangedByDesigner(Sender: TObject);
@ -802,9 +816,47 @@ begin
D.Objects.OnStructureChange:=@DoStructureChange;
D.OnPaste:=@DoPaste;
D.Objects[0].Selected:=True;
D.PopupMenu:=CreateDesignPopupMenu(D);
Result:=TS;
end;
Function TFPReportDesignerForm.CreateDesignPopupMenu(aOWner : TComponent) : TPopupMenu;
Var
PM : TPopupMenu;
Function AddAction(A : TAction) : TMenuItem;
begin
Result:=TMenuItem.Create(PM);
Result.Action:=A;
PM.Items.Add(Result);
end;
Function AddSep : TMenuItem;
begin
Result:=TMenuItem.Create(PM);
Result.Caption:='-';
PM.Items.Add(Result);
end;
begin
PM:=TPopupMenu.Create(aOwner);
AddAction(AEditElement);
AddSep;
AddAction(ACopy);
AddAction(ACut);
AddAction(APaste);
AddSep;
AddAction(ABringToFront);
AddAction(ASendToBack);
AddSep;
AddAction(AResize);
AddAction(AAlign);
Result:=PM;
end;
procedure TFPReportDesignerForm.SetFileCaption(const AFileName: String);
Var
@ -1287,6 +1339,11 @@ begin
and CurrentDesigner.Objects.HaveSelection
end;
procedure TFPReportDesignerForm.ABringToFrontExecute(Sender: TObject);
begin
CurrentDesigner.Objects.BringToFront;
end;
procedure TFPReportDesignerForm.ACopyExecute(Sender: TObject);
begin
if Assigned(CurrentDesigner) then
@ -1329,6 +1386,18 @@ begin
(Sender as TAction).Enabled:=Assigned(CurrentDesigner) and CurrentDesigner.Objects.HaveSelection;
end;
procedure TFPReportDesignerForm.AEditElementExecute(Sender: TObject);
begin
CurrentDesigner.ShowEditorForElement(CurrentDesigner.Objects.GetSelection[0].Element);
end;
procedure TFPReportDesignerForm.AEditElementUpdate(Sender: TObject);
begin
(Sender as Taction).Enabled:=Assigned(CurrentDesigner)
and (CurrentDesigner.Objects.SelectionCount=1)
and (CurrentDesigner.Objects.GetSelection[0].IsPlainElement);
end;
procedure TFPReportDesignerForm.AFileOpenNewWindowExecute(Sender: TObject);
Var
@ -1721,6 +1790,18 @@ begin
end;
end;
procedure TFPReportDesignerForm.ASendToBackExecute(Sender: TObject);
begin
CurrentDesigner.Objects.SendToBack;
end;
procedure TFPReportDesignerForm.ASendToBackFrontUpdate(Sender: TObject);
begin
(Sender as TAction).Enabled:=Assigned(CurrentDesigner)
and (CurrentDesigner.Objects.SelectionCount=1)
and (CurrentDesigner.Objects.GetSelection[0].IsPlainElement);
end;
procedure TFPReportDesignerForm.PCReportChange(Sender: TObject);
begin

View File

@ -257,7 +257,7 @@ object ReportVariablesForm: TReportVariablesForm
Left = 305
Height = 27
Top = 200
Width = 120
Width = 191
Anchors = [akTop, akRight]
ItemHeight = 0
Items.Strings = (

View File

@ -23,16 +23,9 @@
<Version Value="2"/>
</PublishOptions>
<RunParams>
<local>
<CommandLineParams Value="/home/michael/testcopypaste.json"/>
</local>
<FormatVersion Value="2"/>
<Modes Count="1">
<Mode0 Name="default">
<local>
<CommandLineParams Value="/home/michael/testcopypaste.json"/>
</local>
</Mode0>
<Mode0 Name="default"/>
</Modes>
</RunParams>
<RequiredPackages Count="6">

View File

@ -73,10 +73,11 @@ uses
{$IFDEF HASSQLITE3CONNECTION}
sqlite3conn,
{$ENDIF}
fpreport,
fpreportdb,
Interfaces, // this includes the LCL widgetset
Forms,
runtimetypeinfocontrols,
fpreportdb,
// These configure various designer factories
regfpdesigner,
frmfpreportdesignermain,
@ -99,18 +100,41 @@ uses
cfgfpreportpdfexport,
cfgfpreportimageexport,
cfgfpreporthtmlexport,
//
sqldb,
fpreporthtmlexport,
fpreportpreview,
fpreportformexport;
{$R *.res}
TYpe
{ Tlogger }
Tlogger = Class(TObject)
Constructor Create;
private
procedure DoLog(Sender: TSQLConnection; EventType: TDBEventType; const Msg: String);
end;
var
FPReportDesignerForm: TFPReportDesignerForm;
{ Tlogger }
constructor Tlogger.Create;
begin
GlobalDBLogHook:=@DoLog;
end;
procedure Tlogger.DoLog(Sender: TSQLConnection; EventType: TDBEventType; const Msg: String);
begin
Writeln(Eventtype:10,': ',Msg);
end;
begin
// Tlogger.Create;
RequireDerivedFormResource:=True;
RegisterFPReportPropEditors;
Application.Initialize;