📄 frxdesgn.pas
字号:
{******************************************}
{ }
{ FastReport v4.0 }
{ Designer }
{ }
{ Copyright (c) 1998-2008 }
{ by Alexander Tzyganenko, }
{ Fast Reports Inc. }
{ }
{******************************************}
unit frxDesgn;
interface
{$I frx.inc}
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, ImgList, Menus, Buttons, StdCtrls, ToolWin, ExtCtrls, ActnList,
CommCtrl, frxClass, frxDock, frxCtrls, frxDesgnCtrls, frxDesgnWorkspace,
frxInsp, frxDialogForm, frxDataTree, frxReportTree, frxSynMemo,
fs_iinterpreter, Printers, frxWatchForm, frxPictureCache
{$IFDEF Delphi6}
, Variants
{$ENDIF}
{$IFDEF Delphi9}
, GraphUtil, Tabs
{$ENDIF}
;
type
TfrxDesignerUnits = (duCM, duInches, duPixels, duChars);
TfrxLoadReportEvent = function(Report: TfrxReport): Boolean of object;
TfrxLoadRecentReportEvent = function(Report: TfrxReport; FileName: String): Boolean of object;
TfrxSaveReportEvent = function(Report: TfrxReport; SaveAs: Boolean): Boolean of object;
TfrxGetTemplateListEvent = procedure(List: TStrings) of object;
TfrxDesignerRestriction =
(drDontInsertObject, drDontDeletePage, drDontCreatePage, drDontChangePageOptions,
drDontCreateReport, drDontLoadReport, drDontSaveReport,
drDontPreviewReport, drDontEditVariables, drDontChangeReportOptions,
drDontEditReportData, drDontShowRecentFiles);
TfrxDesignerRestrictions = set of TfrxDesignerRestriction;
TSampleFormat = class;
TfrxDesigner = class(TComponent)
private
FCloseQuery: Boolean;
FDefaultScriptLanguage: String;
FDefaultFont: TFont;
FDefaultLeftMargin: Extended;
FDefaultBottomMargin: Extended;
FDefaultRightMargin: Extended;
FDefaultTopMargin: Extended;
FDefaultPaperSize: Integer;
FDefaultOrientation: TPrinterOrientation;
{$IFDEF Delphi10}
FGradient: Boolean;
FGradientEnd: TColor;
FGradientStart: TColor;
{$ENDIF}
FOpenDir: String;
FSaveDir: String;
FTemplatesExt: String;
FTemplateDir: String;
FStandalone: Boolean;
FRestrictions: TfrxDesignerRestrictions;
FRTLLanguage: Boolean;
FOnLoadReport: TfrxLoadReportEvent;
FOnLoadRecentReport: TfrxLoadRecentReportEvent;
FOnSaveReport: TfrxSaveReportEvent;
FOnShow: TNotifyEvent;
FOnInsertObject: TNotifyEvent;
FOnGetTemplateList: TfrxGetTemplateListEvent;
FOnShowStartupScreen: TNotifyEvent;
procedure SetDefaultFont(const Value: TFont);
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
property CloseQuery: Boolean read FCloseQuery write FCloseQuery default True;
property DefaultScriptLanguage: String read FDefaultScriptLanguage write FDefaultScriptLanguage;
property DefaultFont: TFont read FDefaultFont write SetDefaultFont;
property DefaultLeftMargin: Extended read FDefaultLeftMargin write FDefaultLeftMargin;
property DefaultRightMargin: Extended read FDefaultRightMargin write FDefaultRightMargin;
property DefaultTopMargin: Extended read FDefaultTopMargin write FDefaultTopMargin;
property DefaultBottomMargin: Extended read FDefaultBottomMargin write FDefaultBottomMargin;
property DefaultPaperSize: Integer read FDefaultPaperSize write FDefaultPaperSize;
property DefaultOrientation: TPrinterOrientation read FDefaultOrientation write FDefaultOrientation;
{$IFDEF Delphi10}
property Gradient: Boolean read FGradient write FGradient default False;
property GradientEnd: TColor read FGradientEnd write FGradientEnd;
property GradientStart: TColor read FGradientStart write FGradientStart;
{$ENDIF}
property OpenDir: String read FOpenDir write FOpenDir;
property SaveDir: String read FSaveDir write FSaveDir;
property TemplatesExt: String read FTemplatesExt write FTemplatesExt;
property TemplateDir: String read FTemplateDir write FTemplateDir;
property Standalone: Boolean read FStandalone write FStandalone default False;
property Restrictions: TfrxDesignerRestrictions read FRestrictions write FRestrictions;
property RTLLanguage: Boolean read FRTLLanguage write FRTLLanguage;
property OnLoadReport: TfrxLoadReportEvent read FOnLoadReport write FOnLoadReport;
property OnLoadRecentReport: TfrxLoadRecentReportEvent read FOnLoadRecentReport write FOnLoadRecentReport;
property OnSaveReport: TfrxSaveReportEvent read FOnSaveReport write FOnSaveReport;
property OnShow: TNotifyEvent read FOnShow write FOnShow;
property OnInsertObject: TNotifyEvent read FOnInsertObject write FOnInsertObject;
property OnShowStartupScreen: TNotifyEvent read FOnShowStartupScreen write FOnShowStartupScreen;
property OnGetTemplateList: TfrxGetTemplateListEvent read FOnGetTemplateList write FOnGetTemplateList;
end;
TfrxDesignerForm = class(TfrxCustomDesigner)
Bevel1: TBevel;
StatusBar: TStatusBar;
DockBottom: TControlBar;
DockTop: TControlBar;
TextTB: TToolBar;
PanelTB1: TfrxTBPanel;
FontSizeCB: TfrxComboBox;
FontNameCB: TfrxFontComboBox;
BoldB: TToolButton;
ItalicB: TToolButton;
UnderlineB: TToolButton;
SepTB8: TToolButton;
FontColorB: TToolButton;
HighlightB: TToolButton;
SepTB9: TToolButton;
TextAlignLeftB: TToolButton;
TextAlignCenterB: TToolButton;
TextAlignRightB: TToolButton;
TextAlignBlockB: TToolButton;
SepTB10: TToolButton;
TextAlignTopB: TToolButton;
TextAlignMiddleB: TToolButton;
TextAlignBottomB: TToolButton;
FrameTB: TToolBar;
FrameTopB: TToolButton;
FrameBottomB: TToolButton;
FrameLeftB: TToolButton;
FrameRightB: TToolButton;
SepTB11: TToolButton;
FrameAllB: TToolButton;
FrameNoB: TToolButton;
SepTB12: TToolButton;
FillColorB: TToolButton;
FrameColorB: TToolButton;
FrameStyleB: TToolButton;
PanelTB2: TfrxTBPanel;
FrameWidthCB: TfrxComboBox;
StandardTB: TToolBar;
NewB: TToolButton;
OpenB: TToolButton;
SaveB: TToolButton;
PreviewB: TToolButton;
SepTB1: TToolButton;
CutB: TToolButton;
CopyB: TToolButton;
PasteB: TToolButton;
SepTB2: TToolButton;
UndoB: TToolButton;
RedoB: TToolButton;
SepTB3: TToolButton;
SepTB4: TToolButton;
NewPageB: TToolButton;
NewDialogB: TToolButton;
DeletePageB: TToolButton;
PageSettingsB: TToolButton;
ShowGridB: TToolButton;
AlignToGridB: TToolButton;
ExtraToolsTB: TToolBar;
PagePopup: TPopupMenu;
CutMI1: TMenuItem;
CopyMI1: TMenuItem;
PasteMI1: TMenuItem;
DeleteMI1: TMenuItem;
SelectAllMI1: TMenuItem;
SepMI8: TMenuItem;
EditMI1: TMenuItem;
MainMenu: TMainMenu;
FileMenu: TMenuItem;
EditMenu: TMenuItem;
ViewMenu: TMenuItem;
ToolbarsMI: TMenuItem;
StandardMI: TMenuItem;
TextMI: TMenuItem;
FrameMI: TMenuItem;
AlignmentMI: TMenuItem;
ToolsMI: TMenuItem;
InspectorMI: TMenuItem;
DataTreeMI: TMenuItem;
OptionsMI: TMenuItem;
HelpMenu: TMenuItem;
HelpContentsMI: TMenuItem;
SepMI7: TMenuItem;
AboutMI: TMenuItem;
OpenDialog: TOpenDialog;
SaveDialog: TSaveDialog;
TabPopup: TPopupMenu;
NewPageMI1: TMenuItem;
NewDialogMI1: TMenuItem;
DeletePageMI1: TMenuItem;
PageSettingsMI1: TMenuItem;
ActionList: TActionList;
ExitCmd: TAction;
CutCmd: TAction;
CopyCmd: TAction;
PasteCmd: TAction;
UndoCmd: TAction;
RedoCmd: TAction;
DeleteCmd: TAction;
SelectAllCmd: TAction;
EditCmd: TAction;
BringToFrontCmd: TAction;
SendToBackCmd: TAction;
DeletePageCmd: TAction;
NewItemCmd: TAction;
NewPageCmd: TAction;
NewDialogCmd: TAction;
NewReportCmd: TAction;
OpenCmd: TAction;
SaveCmd: TAction;
SaveAsCmd: TAction;
VariablesCmd: TAction;
PageSettingsCmd: TAction;
PreviewCmd: TAction;
NewMI: TMenuItem;
NewReportMI: TMenuItem;
NewPageMI: TMenuItem;
NewDialogMI: TMenuItem;
SepMI1: TMenuItem;
OpenMI: TMenuItem;
SaveMI: TMenuItem;
SaveAsMI: TMenuItem;
VariablesMI: TMenuItem;
SepMI3: TMenuItem;
PreviewMI: TMenuItem;
SepMI4: TMenuItem;
ExitMI: TMenuItem;
UndoMI: TMenuItem;
RedoMI: TMenuItem;
SepMI5: TMenuItem;
CutMI: TMenuItem;
CopyMI: TMenuItem;
PasteMI: TMenuItem;
DeleteMI: TMenuItem;
DeletePageMI: TMenuItem;
SelectAllMI: TMenuItem;
SepMI6: TMenuItem;
BringtoFrontMI: TMenuItem;
SendtoBackMI: TMenuItem;
EditMI: TMenuItem;
PanelTB3: TfrxTBPanel;
ScaleCB: TfrxComboBox;
ObjectsTB1: TToolBar;
BandsPopup: TPopupMenu;
ReportTitleMI: TMenuItem;
ReportSummaryMI: TMenuItem;
PageHeaderMI: TMenuItem;
PageFooterMI: TMenuItem;
HeaderMI: TMenuItem;
FooterMI: TMenuItem;
MasterDataMI: TMenuItem;
DetailDataMI: TMenuItem;
SubdetailDataMI: TMenuItem;
GroupHeaderMI: TMenuItem;
GroupFooterMI: TMenuItem;
ColumnHeaderMI: TMenuItem;
ColumnFooterMI: TMenuItem;
ChildMI: TMenuItem;
LeftDockSite1: TfrxDockSite;
VariablesB: TToolButton;
SepTB13: TToolButton;
PageSettingsMI: TMenuItem;
Timer: TTimer;
ReportSettingsMI: TMenuItem;
Data4levelMI: TMenuItem;
Data5levelMI: TMenuItem;
Data6levelMI: TMenuItem;
SepMI10: TMenuItem;
SepMI9: TMenuItem;
ShowGuidesMI: TMenuItem;
ShowRulersMI: TMenuItem;
DeleteGuidesMI: TMenuItem;
SepMI11: TMenuItem;
N1: TMenuItem;
BringtoFrontMI1: TMenuItem;
SendtoBackMI1: TMenuItem;
SepMI12: TMenuItem;
RotateB: TToolButton;
RotationPopup: TPopupMenu;
R0MI: TMenuItem;
R45MI: TMenuItem;
R90MI: TMenuItem;
R180MI: TMenuItem;
R270MI: TMenuItem;
SetToGridB: TToolButton;
ShadowB: TToolButton;
ReportMenu: TMenuItem;
ReportDataMI: TMenuItem;
OpenScriptDialog: TOpenDialog;
SaveScriptDialog: TSaveDialog;
ReportTreeMI: TMenuItem;
ObjectsPopup: TPopupMenu;
AlignTB: TToolBar;
AlignLeftsB: TToolButton;
AlignHorzCentersB: TToolButton;
AlignRightsB: TToolButton;
AlignTopsB: TToolButton;
AlignVertCentersB: TToolButton;
AlignBottomsB: TToolButton;
SpaceHorzB: TToolButton;
SpaceVertB: TToolButton;
CenterHorzB: TToolButton;
CenterVertB: TToolButton;
SameWidthB: TToolButton;
SameHeightB: TToolButton;
SepTB15: TToolButton;
SepTB16: TToolButton;
SepTB18: TToolButton;
SepTB17: TToolButton;
OverlayMI: TMenuItem;
StyleCB: TfrxComboBox;
ReportStylesMI: TMenuItem;
TabOrderMI: TMenuItem;
N2: TMenuItem;
FindMI: TMenuItem;
FindNextMI: TMenuItem;
ReplaceMI: TMenuItem;
DMPPopup: TPopupMenu;
BoldMI: TMenuItem;
ItalicMI: TMenuItem;
UnderlineMI: TMenuItem;
SuperScriptMI: TMenuItem;
SubScriptMI: TMenuItem;
CondensedMI: TMenuItem;
WideMI: TMenuItem;
N12cpiMI: TMenuItem;
N15cpiMI: TMenuItem;
FontB: TToolButton;
VerticalbandsMI: TMenuItem;
HeaderMI1: TMenuItem;
FooterMI1: TMenuItem;
MasterDataMI1: TMenuItem;
DetailDataMI1: TMenuItem;
SubdetailDataMI1: TMenuItem;
GroupHeaderMI1: TMenuItem;
GroupFooterMI1: TMenuItem;
ChildMI1: TMenuItem;
N3: TMenuItem;
GroupB: TToolButton;
UngroupB: TToolButton;
SepTB20: TToolButton;
GroupCmd: TAction;
UngroupCmd: TAction;
GroupMI: TMenuItem;
UngroupMI: TMenuItem;
ConnectionsMI: TMenuItem;
BackPanel: TPanel;
ScrollBoxPanel: TPanel;
ScrollBox: TfrxScrollBox;
LeftRuler: TfrxRuler;
TopRuler: TfrxRuler;
CodePanel: TPanel;
CodeTB: TToolBar;
frTBPanel1: TfrxTBPanel;
LangL: TLabel;
LangCB: TfrxComboBox;
OpenScriptB: TToolButton;
SaveScriptB: TToolButton;
SepTB19: TToolButton;
RunScriptB: TToolButton;
RunToCursorB: TToolButton;
StepScriptB: TToolButton;
StopScriptB: TToolButton;
EvaluateB: TToolButton;
BreakPointB: TToolButton;
CodeDockSite: TfrxDockSite;
LeftDockSite2: TfrxDockSite;
RightDockSite: TfrxDockSite;
TabPanel: TPanel;
Panel1: TPanel;
AddChildMI: TMenuItem;
FindCmd: TAction;
ReplaceCmd: TAction;
FindNextCmd: TAction;
ReportDataCmd: TAction;
ReportStylesCmd: TAction;
ReportOptionsCmd: TAction;
ShowRulersCmd: TAction;
ShowGuidesCmd: TAction;
DeleteGuidesCmd: TAction;
OptionsCmd: TAction;
HelpContentsCmd: TAction;
AboutCmd: TAction;
StandardTBCmd: TAction;
TextTBCmd: TAction;
FrameTBCmd: TAction;
AlignTBCmd: TAction;
ExtraTBCmd: TAction;
InspectorTBCmd: TAction;
DataTreeTBCmd: TAction;
ReportTreeTBCmd: TAction;
ToolbarsCmd: TAction;
procedure ExitCmdExecute(Sender: TObject);
procedure ObjectsButtonClick(Sender: TObject);
procedure StatusBarDrawPanel(StatusBar: TStatusBar;
Panel: TStatusPanel; const ARect: TRect);
procedure ScrollBoxMouseWheelUp(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
procedure ScrollBoxMouseWheelDown(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
procedure ScrollBoxResize(Sender: TObject);
procedure ScaleCBClick(Sender: TObject);
procedure ShowGridBClick(Sender: TObject);
procedure AlignToGridBClick(Sender: TObject);
procedure StatusBarDblClick(Sender: TObject);
procedure StatusBarMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure InsertBandClick(Sender: TObject);
procedure BandsPopupPopup(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure NewReportCmdExecute(Sender: TObject);
procedure ToolButtonClick(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -