git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.DevExpressVCL@55 05c56307-c608-d34a-929d-697000501d7a
1793 lines
65 KiB
ObjectPascal
1793 lines
65 KiB
ObjectPascal
{*******************************************************************}
|
|
{ }
|
|
{ Developer Express Visual Component Library }
|
|
{ ExpressPrinting System COMPONENT SUITE }
|
|
{ }
|
|
{ Copyright (C) 1998-2009 Developer Express Inc. }
|
|
{ ALL RIGHTS RESERVED }
|
|
{ }
|
|
{ The entire contents of this file is protected by U.S. and }
|
|
{ International Copyright Laws. Unauthorized reproduction, }
|
|
{ reverse-engineering, and distribution of all or any portion of }
|
|
{ the code contained in this file is strictly prohibited and may }
|
|
{ result in severe civil and criminal penalties and will be }
|
|
{ prosecuted to the maximum extent possible under the law. }
|
|
{ }
|
|
{ RESTRICTIONS }
|
|
{ }
|
|
{ THIS SOURCE CODE AND ALL RESULTING INTERMEDIATE FILES }
|
|
{ (DCU, OBJ, DLL, ETC.) ARE CONFIDENTIAL AND PROPRIETARY TRADE }
|
|
{ SECRETS OF DEVELOPER EXPRESS INC. THE REGISTERED DEVELOPER IS }
|
|
{ LICENSED TO DISTRIBUTE THE EXPRESSPRINTINGSYSTEM AND }
|
|
{ ALL ACCOMPANYING VCL CONTROLS AS PART OF AN }
|
|
{ EXECUTABLE PROGRAM ONLY. }
|
|
{ }
|
|
{ THE SOURCE CODE CONTAINED WITHIN THIS FILE AND ALL RELATED }
|
|
{ FILES OR ANY PORTION OF ITS CONTENTS SHALL AT NO TIME BE }
|
|
{ COPIED, TRANSFERRED, SOLD, DISTRIBUTED, OR OTHERWISE MADE }
|
|
{ AVAILABLE TO OTHER INDIVIDUALS WITHOUT EXPRESS WRITTEN CONSENT }
|
|
{ AND PERMISSION FROM DEVELOPER EXPRESS INC. }
|
|
{ }
|
|
{ CONSULT THE END USER LICENSE AGREEMENT FOR INFORMATION ON }
|
|
{ ADDITIONAL RESTRICTIONS. }
|
|
{ }
|
|
{*******************************************************************}
|
|
|
|
unit dxPSPrVwAdv;
|
|
|
|
interface
|
|
|
|
{$I cxVer.inc}
|
|
|
|
uses
|
|
Windows, SysUtils, Classes, Messages, Graphics, Controls, ComCtrls, StdCtrls,
|
|
ExtCtrls, Forms, Menus, ImgList, dxPSCore, dxPSESys, dxPrevw, dxPSPrvw, dxBar,
|
|
dxBarPopupMenuEd, dxBarExtItems, cxClasses, cxControls, dxPSForm, cxGraphics,
|
|
cxGeometry, cxLookAndFeels, cxLookAndFeelPainters, IniFiles;
|
|
|
|
type
|
|
TdxfmPreviewWdxBar = class(TForm)
|
|
dxBarManager: TdxBarManager;
|
|
bbFile: TdxBarSubItem;
|
|
bbToolsOptions: TdxBarButton;
|
|
bbFileDesign: TdxBarButton;
|
|
bbFilePrint: TdxBarButton;
|
|
bbFilePrintDialog: TdxBarButton;
|
|
bbView: TdxBarSubItem;
|
|
bbZoomPercent100: TdxBarButton;
|
|
bbZoomPageWidth: TdxBarButton;
|
|
bbZoomWholePage: TdxBarButton;
|
|
bbZoomTwoPages: TdxBarButton;
|
|
bbGoToPage: TdxBarSubItem;
|
|
bbGoToFirstPage: TdxBarButton;
|
|
bbGoToPrevPage: TdxBarButton;
|
|
bbGoToNextPage: TdxBarButton;
|
|
bbGoToLastPage: TdxBarButton;
|
|
bbHelp: TdxBarSubItem;
|
|
bbHelpTopics: TdxBarButton;
|
|
bbZoomFourPages: TdxBarButton;
|
|
bbZoomWidenToSourceWidth: TdxBarButton;
|
|
seActivePage: TdxBarSpinEdit;
|
|
pmPreview: TdxBarPopupMenu;
|
|
bbViewToolbars: TdxBarToolbarsListItem;
|
|
bbZoomMultiplePages: TdxBarButton;
|
|
cbxPredefinedZoom: TdxBarImageCombo;
|
|
bbZoomSetup: TdxBarButton;
|
|
bbFileExit: TdxBarButton;
|
|
bbFormatShrinkToPageWidth: TdxBarButton;
|
|
bbViewMargins: TdxBarButton;
|
|
bbViewMarginBar: TdxBarButton;
|
|
bbViewStatusBar: TdxBarButton;
|
|
bsiShortcutPreview: TdxBarSubItem;
|
|
bsiInsertHFAutoText: TdxBarSubItem;
|
|
bbInsertHFPageNumber: TdxBarButton;
|
|
bbInsertHFTotalPages: TdxBarButton;
|
|
bbInsertHFPageOfPages: TdxBarButton;
|
|
bbInsertHFDate: TdxBarButton;
|
|
bbInsertHFTime: TdxBarButton;
|
|
bbInsertHFDateTime: TdxBarButton;
|
|
bbViewHFSwitchHeaderFooter: TdxBarButton;
|
|
bbInsertHFUserName: TdxBarButton;
|
|
bbInsertHFMachineName: TdxBarButton;
|
|
bbViewHFClose: TdxBarButton;
|
|
bbFormatHeaderAndFooter: TdxBarButton;
|
|
bbViewSwitchToLeftPart: TdxBarButton;
|
|
bbViewSwitchToCenterPart: TdxBarButton;
|
|
bbViewSwitchToRightPart: TdxBarButton;
|
|
bbFormatHFClear: TdxBarButton;
|
|
bbFormat: TdxBarSubItem;
|
|
bbEdit: TdxBarSubItem;
|
|
bbFilePageSetup: TdxBarButton;
|
|
bliInsertAutoTextEntries: TdxBarListItem;
|
|
bbInsertEditAutoText: TdxBarButton;
|
|
bbFormatHFBackground: TdxBarButton;
|
|
bbFormatDateTime: TdxBarButton;
|
|
bbFormatPageNumbering: TdxBarButton;
|
|
bbEditFind: TdxBarButton;
|
|
bbEditFindNext: TdxBarButton;
|
|
bbEditReplace: TdxBarButton;
|
|
bbViewPageHeaders: TdxBarButton;
|
|
bbViewPageFooters: TdxBarButton;
|
|
bbViewPages: TdxBarSubItem;
|
|
bbFormatPageBackground: TdxBarButton;
|
|
bbViewZoom: TdxBarSubItem;
|
|
bbToolsCustomize: TdxBarButton;
|
|
bbTools: TdxBarSubItem;
|
|
bbHelpAbout: TdxBarButton;
|
|
bbInsert: TdxBarSubItem;
|
|
bbFormatShowHideEmptyPages: TdxBarButton;
|
|
bsiNewMenuNewMenu: TdxBarSubItem;
|
|
pmPrintStyles: TdxBarPopupMenu;
|
|
bliPrintStyles: TdxBarListItem;
|
|
bbDefinePrintStyles: TdxBarButton;
|
|
bsiInsertAutoText: TdxBarSubItem;
|
|
TimerHint: TTimer;
|
|
bbFileLoad: TdxBarButton;
|
|
bbExplorerCreateNewFolder: TdxBarButton;
|
|
bbExplorerDelete: TdxBarButton;
|
|
bbExplorerRename: TdxBarButton;
|
|
bbExplorer: TdxBarSubItem;
|
|
bbFileSave: TdxBarButton;
|
|
bbViewExplorer: TdxBarButton;
|
|
pmExplorer: TdxBarPopupMenu;
|
|
bsiShortCutExplorer: TdxBarSubItem;
|
|
bbFileClose: TdxBarButton;
|
|
bbFormatTitle: TdxBarButton;
|
|
pmThumbnails: TdxBarPopupMenu;
|
|
bbViewThumbnails: TdxBarButton;
|
|
bbThumbnailsSmall: TdxBarButton;
|
|
bbThumbnailsLarge: TdxBarButton;
|
|
bsiShortcutThumbnails: TdxBarSubItem;
|
|
bbExplorerProperties: TdxBarButton;
|
|
bbFileRebuild: TdxBarButton;
|
|
bbExportToPDF: TdxBarButton;
|
|
Preview: TdxPSPreviewWindow;
|
|
ilToolBar: TcxImageList;
|
|
bbFormatFootnotes: TdxBarButton;
|
|
procedure PageSetupClick(Sender: TObject);
|
|
procedure ZoomClick(Sender: TObject);
|
|
procedure GoToPageClick(Sender: TObject);
|
|
procedure CloseClick(Sender: TObject);
|
|
procedure DesignClick(Sender: TObject);
|
|
procedure PageBackgroundClick(Sender: TObject);
|
|
procedure bbViewMarginsClick(Sender: TObject);
|
|
procedure HelpClick(Sender: TObject);
|
|
procedure bbViewMarginBarClick(Sender: TObject);
|
|
procedure bbViewStatusBarClick(Sender: TObject);
|
|
procedure seActivePageChange(Sender: TObject);
|
|
procedure cbxPredefinedZoomChange(Sender: TObject);
|
|
procedure seActivePageButtonClick(Sender: TdxBarSpinEdit; Button: TdxBarSpinEditButton);
|
|
procedure bbZoomMultiplePagesClick(Sender: TObject);
|
|
procedure bbZoomSetupClick(Sender: TObject);
|
|
procedure cbxPredefinedZoomClick(Sender: TObject);
|
|
procedure bbFormatShrinkToPageWidthClick(Sender: TObject);
|
|
procedure miCustomizePopupClick(Sender: TObject);
|
|
procedure dxBarManagerBarVisibleChange(Sender: TdxBarManager; ABar: TdxBar);
|
|
procedure bbViewHFCloseClick(Sender: TObject);
|
|
procedure bbFormatHeaderAndFooterClick(Sender: TObject);
|
|
procedure InsertHFClick(Sender: TObject);
|
|
procedure bbViewHFSwitchHeaderFooterClick(Sender: TObject);
|
|
procedure bbFormatDateTimeClick(Sender: TObject);
|
|
procedure SwitchPartClick(Sender: TObject);
|
|
procedure bbFormatHFClearClick(Sender: TObject);
|
|
procedure bbFormatHFBackgroundClick(Sender: TObject);
|
|
procedure PrintClick(Sender: TObject);
|
|
procedure bbFormatPageNumbersClick(Sender: TObject);
|
|
procedure bbViewPageHeadersClick(Sender: TObject);
|
|
procedure bbViewPageFootersClick(Sender: TObject);
|
|
procedure bbToolsCustomizeClick(Sender: TObject);
|
|
procedure dxBarManagerShowCustomizingForm(Sender: TObject);
|
|
procedure dxBarManagerHideCustomizingForm(Sender: TObject);
|
|
procedure bbFormatShowHideEmptyPagesClick(Sender: TObject);
|
|
procedure bbToolsOptionsClick(Sender: TObject);
|
|
procedure TimerHintTimer(Sender: TObject);
|
|
procedure FileSaveClick(Sender: TObject);
|
|
procedure ExplorerLoadDataClick(Sender: TObject);
|
|
procedure ExplorerCreateNewFolderClick(Sender: TObject);
|
|
procedure ExplorerDeleteItemClick(Sender: TObject);
|
|
procedure ExplorerRenameItemClick(Sender: TObject);
|
|
procedure bbViewExplorerClick(Sender: TObject);
|
|
procedure pmExplorerPopup(Sender: TObject);
|
|
procedure bbFileCloseClick(Sender: TObject);
|
|
procedure bbFormatTitleClick(Sender: TObject);
|
|
procedure bbThumbnailsSizeClick(Sender: TObject);
|
|
procedure bbViewThumbnailsClick(Sender: TObject);
|
|
procedure bbExplorerPropertiesClick(Sender: TObject);
|
|
procedure bbFileRebuildClick(Sender: TObject);
|
|
procedure bbExportToPDFClick(Sender: TObject);
|
|
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
|
|
procedure PreviewAddExplorerCommand(Sender: TObject; ACommand: TCustomdxPSExplorerContextCommand);
|
|
procedure PreviewAfterPrintReport(Sender: TObject; AShowDialog: Boolean);
|
|
procedure PreviewCreationComplete(Sender: TObject);
|
|
procedure PreviewInitContent(Sender: TObject);
|
|
procedure PreviewStyleListChanged(Sender: TObject);
|
|
procedure PreviewUpdateControls(Sender: TObject);
|
|
procedure PreviewUpdateExplorerCommands(Sender: TObject);
|
|
procedure PreviewZoomFactorChanged(Sender: TObject);
|
|
procedure PreviewZoomModeChanged(Sender: TObject);
|
|
procedure PreviewCanShowMarginHint(Sender: TObject; var AAllow: Boolean);
|
|
procedure PreviewHFTextEntriesChanged(Sender: TObject);
|
|
procedure PreviewPreviewDblClick(Sender: TObject);
|
|
procedure PreviewHFToolBarVisibleChanged(Sender: TObject; AShow: Boolean);
|
|
procedure bbFormatFootnotesClick(Sender: TObject);
|
|
procedure PreviewLoadProperties(Sender: TObject; AIniFile: TCustomIniFile; const ASectionName: string);
|
|
procedure PreviewSaveProperties(Sender: TObject; AIniFile: TCustomIniFile; const ASectionName: string);
|
|
private
|
|
FExplorerContextCommands: TList;
|
|
function GetExplorerContextCommand(Index: Integer): TCustomdxPSExplorerContextCommand;
|
|
function GetExplorerContextCommandCount: Integer;
|
|
function GetLocked: Boolean;
|
|
function GetReportLink: TBasedxReportLink;
|
|
|
|
function CalcWindowPos(Sender: TObject): TPoint;
|
|
procedure DoShowExplorerPopup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
|
procedure EnableItemsWhileBuilding(Value: Boolean);
|
|
procedure PostCreateFolderMessage;
|
|
procedure SetBarItemVisibility(Item: TdxBarItem; Value: Boolean);
|
|
|
|
function ShortcutBar: TdxBar;
|
|
procedure ShowShortCutBar(Value: Boolean);
|
|
|
|
function HFBar: TdxBar;
|
|
procedure EnabledHFItems(Value: Boolean);
|
|
procedure ShowHFBar(Value: Boolean);
|
|
procedure UpdateHFState(Value: Boolean);
|
|
|
|
procedure LoadBarManagerDefaults;
|
|
procedure SaveBarManagerDefaults;
|
|
procedure LoadBarManager(AIniFile: TCustomIniFile; const ASectionName: string);
|
|
procedure SaveBarManager(AIniFile: TCustomIniFile; const ASectionName: string);
|
|
protected
|
|
procedure Activate; override;
|
|
procedure ExplorerContextCommandClick(Sender: TObject); virtual;
|
|
procedure LoadStrings;
|
|
procedure WndProc(var Message: TMessage); override;
|
|
|
|
property ExplorerContextCommandCount: Integer read GetExplorerContextCommandCount;
|
|
property ExplorerContextCommands[Index: Integer]: TCustomdxPSExplorerContextCommand read GetExplorerContextCommand;
|
|
property Locked: Boolean read GetLocked;
|
|
property ReportLink: TBasedxReportLink read GetReportLink;
|
|
public
|
|
constructor Create(AOwner: TComponent); override;
|
|
destructor Destroy; override;
|
|
procedure AfterConstruction; override;
|
|
end;
|
|
|
|
implementation
|
|
|
|
{$R *.DFM}
|
|
|
|
uses
|
|
Types, dxThemeManager, Registry, CommCtrl, Math, dxPSRes, dxPrnPg, dxPSGlbl,
|
|
dxPSPopupMan, dxPSUtl, dxPSPgsMnuBld, dxPSEngn, dxPgsDlg, dxPSEvnt,
|
|
dxPSAutoHFTextMnuBld, dxPSfmAutoHFTextFmt, dxPrnDev, dxPSPDFExport, dxPSImgs;
|
|
|
|
const
|
|
WM_CREATEFOLDER = WM_DX + 50;
|
|
PageSelectorImageIndex = 35;
|
|
|
|
sdxToolBars = 'ToolBars'; // Don't Localize
|
|
|
|
type
|
|
TWinControlAccess = class(TWinControl);
|
|
TdxBarManagerAccess = class(TdxBarManager);
|
|
|
|
{ TdxBarPSPopupMenuBuilder }
|
|
|
|
TdxBarPSPopupMenuBuilder = class(TAbstractdxPSPopupMenuBuilder)
|
|
private
|
|
FBarHostForm: TCustomForm;
|
|
FBarManager: TdxBarManager;
|
|
protected
|
|
function BuildPopup(const AControl: TControl;
|
|
const APopupMenu: TPopupMenu): TComponent; override;
|
|
class function CanShowPopup(const APopupMenu: TPopupMenu): Boolean; override;
|
|
procedure FreePopup(var APopupMenu: TComponent); override;
|
|
procedure InvokePopup(X, Y: Integer; AControl: TControl; APopupMenu: TComponent); override;
|
|
class function RequireProcessDoPopup: Boolean; override;
|
|
public
|
|
constructor Create; override;
|
|
destructor Destroy; override;
|
|
end;
|
|
|
|
{ TdxBarPSPageSetupMenuBuilder }
|
|
|
|
TdxBarPSPageSetupMenuBuilder = class(TdxStandardPSPageSetupMenuBuilder)
|
|
public
|
|
procedure BuildPageSetupMenu(ARootItem: TObject; AData: Pointer;
|
|
AIncludeDefineItem: Boolean; AStyles: TStringList; ACurrentStyle: TBasedxPrintStyle;
|
|
AOnStyleClick, AOnDefineStylesClick: TNotifyEvent); override;
|
|
class function ExtractPrintStyleFromObj(Obj: TObject): TBasedxPrintStyle; override;
|
|
end;
|
|
|
|
{ TdxBarPSAutoHFTextMenuBuilder }
|
|
|
|
TdxBarPSAutoHFTextMenuBuilder = class(TAbstractdxPSAutoHFTextMenuBuilder)
|
|
public
|
|
procedure BuildAutoHFTextEntriesMenu(ARootItem: TObject; AData: Pointer;
|
|
AIncludeSetupAutoHFTextEntriesItem: Boolean; AAutoHFTextEntries: TStrings;
|
|
AOnHFTextEntriesClick, AOnSetupHFTextEntriesClick: TNotifyEvent); override;
|
|
class function ExtractAutoHFTextEntryIndexFromObj(Obj: TObject): Integer; override;
|
|
end;
|
|
|
|
{ TdxPSAdvancedPreviewDialogStyleInfo }
|
|
|
|
TdxPSAdvancedPreviewDialogStyleInfo = class(TdxPSPreviewDialogStyleInfo)
|
|
public
|
|
class function CreatePreviewWindow: TdxPSCustomPreviewWindow; override;
|
|
class function GetName: string; override;
|
|
class function GetUnitName: string; override;
|
|
end;
|
|
|
|
function VisibleToBarItemVisible(AValue: Boolean): TdxBarItemVisible;
|
|
{ivNever, ivInCustomizing, ivAlways}
|
|
begin
|
|
Result := TdxBarItemVisible(2 * Byte(AValue));
|
|
end;
|
|
|
|
function dxBar_DoesNotHaveActivePopup: Boolean;
|
|
begin
|
|
Result := dxBar.ActiveBarControl = nil;
|
|
end;
|
|
|
|
procedure SetupBarManagerStyle(ABarManager: TdxBarManager);
|
|
const
|
|
BarManagerStyleMap: array[TcxLookAndFeelKind] of dxBar.TdxBarManagerStyle =
|
|
(dxBar.bmsFlat, dxBar.bmsEnhanced, dxBar.bmsFlat, dxBar.bmsFlat);
|
|
begin
|
|
ABarManager.Style := bmsUseLookAndFeel;
|
|
ABarManager.LookAndFeel := dxPSEngine.DialogsLookAndFeel;
|
|
end;
|
|
|
|
{ TdxBarPSPopupMenuBuilder }
|
|
|
|
constructor TdxBarPSPopupMenuBuilder.Create;
|
|
begin
|
|
inherited;
|
|
FBarHostForm := TCustomForm.CreateNew(nil);
|
|
FBarManager := TdxBarManager.Create(FBarHostForm);
|
|
SetupBarManagerStyle(FBarManager);
|
|
end;
|
|
|
|
destructor TdxBarPSPopupMenuBuilder.Destroy;
|
|
begin
|
|
FBarHostForm.Free;
|
|
inherited;
|
|
end;
|
|
|
|
class function TdxBarPSPopupMenuBuilder.CanShowPopup(const APopupMenu: TPopupMenu): Boolean;
|
|
begin
|
|
Result := inherited CanShowPopup(APopupMenu) and dxBar_DoesNotHaveActivePopup;
|
|
end;
|
|
|
|
function TdxBarPSPopupMenuBuilder.BuildPopup(const AControl: TControl;
|
|
const APopupMenu: TPopupMenu): TComponent;
|
|
|
|
function IsSeparator(ABarItem: TdxBarItem): Boolean;
|
|
begin
|
|
Result := ABarItem.Caption = '-';
|
|
end;
|
|
|
|
function CreateItem(AMenuItem: TMenuItem): TdxBarItem;
|
|
const
|
|
BarItemClasses: array[Boolean] of TdxBarItemClass = (TdxBarButton, TdxBarSubItem);
|
|
var
|
|
BarItemClass: TdxBarItemClass;
|
|
begin
|
|
Result := nil;
|
|
BarItemClass := BarItemClasses[AMenuItem.Count > 0];
|
|
if BarItemClass = nil then Exit;
|
|
|
|
Result := BarItemClass.Create(FBarHostForm);
|
|
|
|
Result.Action := AMenuItem.Action;
|
|
Result.ImageIndex := AMenuItem.ImageIndex;
|
|
Result.Glyph := AMenuItem.Bitmap;
|
|
Result.Caption := AMenuItem.Caption;
|
|
Result.Enabled := AMenuItem.Enabled;
|
|
Result.HelpContext := AMenuItem.HelpContext;
|
|
Result.Hint := AMenuItem.Hint;
|
|
Result.ShortCut := AMenuItem.ShortCut;
|
|
Result.Tag := AMenuItem.Tag;
|
|
Result.Visible := VisibleToBarItemVisible(AMenuItem.Visible);
|
|
if not (Result is TdxBarSubItem) then
|
|
Result.OnClick := AMenuItem.OnClick;
|
|
if Result is TdxBarButton then
|
|
begin
|
|
if AMenuItem.Checked or AMenuItem.RadioItem then
|
|
TdxBarButton(Result).ButtonStyle := bsChecked;
|
|
if AMenuItem.RadioItem then
|
|
TdxBarButton(Result).GroupIndex := AMenuItem.GroupIndex;
|
|
TdxBarButton(Result).Down := AMenuItem.Checked;
|
|
end;
|
|
end;
|
|
|
|
procedure FixBeginGroup(AItemLinks: TdxBarItemLinks);
|
|
var
|
|
I: Integer;
|
|
ItemLink: TdxBarItemLink;
|
|
begin
|
|
for I := AItemLinks.Count - 1 downto 0 do
|
|
begin
|
|
ItemLink := AItemLinks.Items[I];
|
|
if IsSeparator(ItemLink.Item) then
|
|
begin
|
|
ItemLink.Free;
|
|
if I < AItemLinks.Count then
|
|
AItemLinks.Items[I].BeginGroup := True;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure ProcessSubMenu(AItemLinks: TdxBarItemLinks; AMenuItem: TMenuItem);
|
|
var
|
|
I: Integer;
|
|
MI: TMenuItem;
|
|
Item: TdxBarItem;
|
|
begin
|
|
for I := 0 to AMenuItem.Count - 1 do
|
|
begin
|
|
MI := AMenuItem.Items[I];
|
|
Item := CreateItem(MI);
|
|
if Item <> nil then
|
|
begin
|
|
AItemLinks.Add.Item := Item;
|
|
if Item is TdxBarSubItem then
|
|
ProcessSubMenu(TdxBarSubItem(Item).ItemLinks, MI);
|
|
end;
|
|
end;
|
|
FixBeginGroup(AItemLinks);
|
|
end;
|
|
|
|
begin
|
|
Result := nil;
|
|
if (APopupMenu <> nil) and (APopupMenu.Items.Count > 0) then
|
|
begin
|
|
Result := TdxBarPopupMenu.Create(FBarHostForm);
|
|
try
|
|
FBarManager.Images := APopupMenu.Images;
|
|
ProcessSubMenu(TdxBarPopupMenu(Result).ItemLinks, APopupMenu.Items);
|
|
except
|
|
FBarManager.Images := nil;
|
|
Result.Free;
|
|
raise;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TdxBarPSPopupMenuBuilder.FreePopup(var APopupMenu: TComponent);
|
|
var
|
|
I: Integer;
|
|
begin
|
|
for I := 0 to FBarManager.ItemCount - 1 do
|
|
FBarManager.Items[I].Free;
|
|
FreeAndNil(APopupMenu);
|
|
end;
|
|
|
|
procedure TdxBarPSPopupMenuBuilder.InvokePopup(
|
|
X, Y: Integer; AControl: TControl; APopupMenu: TComponent);
|
|
var
|
|
R: TRect;
|
|
begin
|
|
if APopupMenu is TdxBarPopupMenu then
|
|
begin
|
|
if AControl = nil then
|
|
TdxBarPopupMenu(APopupMenu).Popup(X, Y)
|
|
else
|
|
begin
|
|
R := cxRectOffset(AControl.ClientRect, AControl.ClientToScreen(cxNullPoint));
|
|
TdxBarPopupMenu(APopupMenu).PopupEx(X, Y, AControl.Width, AControl.Height, True, @R);
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
class function TdxBarPSPopupMenuBuilder.RequireProcessDoPopup: Boolean;
|
|
begin
|
|
Result := True;
|
|
end;
|
|
|
|
{ TdxBarPSPageSetupMenuBuilder }
|
|
|
|
class function TdxBarPSPageSetupMenuBuilder.ExtractPrintStyleFromObj(Obj: TObject): TBasedxPrintStyle;
|
|
begin
|
|
if Obj is TdxBarListItem then
|
|
begin
|
|
with TdxBarListItem(Obj) do
|
|
Result := TBasedxPrintStyle(Items.Objects[ItemIndex])
|
|
end
|
|
else
|
|
Result := inherited ExtractPrintStyleFromObj(Obj);
|
|
end;
|
|
|
|
procedure TdxBarPSPageSetupMenuBuilder.BuildPageSetupMenu(ARootItem: TObject;
|
|
AData: Pointer; AIncludeDefineItem: Boolean;
|
|
AStyles: TStringList; ACurrentStyle: TBasedxPrintStyle;
|
|
AOnStyleClick, AOnDefineStylesClick: TNotifyEvent);
|
|
begin
|
|
if not (ARootItem is TdxBarListItem) then
|
|
begin
|
|
inherited BuildPageSetupMenu(ARootItem, AData, AIncludeDefineItem,
|
|
AStyles, ACurrentStyle, AOnStyleClick, AOnDefineStylesClick);
|
|
Exit;
|
|
end;
|
|
|
|
with TdxBarListItem(ARootItem) do
|
|
begin
|
|
Items.Clear;
|
|
Items := AStyles;
|
|
if Items.Count > 0 then ItemIndex := ACurrentStyle.Index;
|
|
OnClick := AOnStyleClick;
|
|
end;
|
|
|
|
if AIncludeDefineItem and (TObject(AData) is TdxBarButton) then
|
|
with TdxBarButton(AData) do
|
|
begin
|
|
Caption := cxGetResourceString(@sdxDefinePrintStylesMenuItem);
|
|
OnClick := AOnDefineStylesClick;
|
|
end;
|
|
end;
|
|
|
|
{ TdxBarPSAutoHFTextMenuBuilder }
|
|
|
|
procedure TdxBarPSAutoHFTextMenuBuilder.BuildAutoHFTextEntriesMenu(ARootItem: TObject;
|
|
AData: Pointer; AIncludeSetupAutoHFTextEntriesItem: Boolean;
|
|
AAutoHFTextEntries: TStrings; AOnHFTextEntriesClick, AOnSetupHFTextEntriesClick: TNotifyEvent);
|
|
begin
|
|
if not (ARootItem is TdxBarListItem) then Exit;
|
|
|
|
with TdxBarListItem(ARootItem) do
|
|
begin
|
|
Items.Clear;
|
|
Items := AAutoHFTextEntries;
|
|
OnClick := AOnHFTextEntriesClick;
|
|
end;
|
|
|
|
if AIncludeSetupAutoHFTextEntriesItem and (TObject(AData) is TdxBarButton) then
|
|
with TdxBarButton(AData) do
|
|
begin
|
|
Caption := cxGetResourceString(@sdxMenuInsertEditAutoTextEntries);
|
|
OnClick := AOnSetupHFTextEntriesClick;
|
|
end;
|
|
end;
|
|
|
|
class function TdxBarPSAutoHFTextMenuBuilder.ExtractAutoHFTextEntryIndexFromObj(Obj: TObject): Integer;
|
|
begin
|
|
Result := TdxBarListItem(Obj).ItemIndex;
|
|
end;
|
|
|
|
{ utility routines }
|
|
|
|
function AddPercentageChar(const S: string): string;
|
|
begin
|
|
Result := S;
|
|
if Result[Length(Result)] <> PercentSymbol then
|
|
Result := Result + PercentSymbol;
|
|
end;
|
|
|
|
procedure ProcessMessages;
|
|
begin
|
|
//Application.ProcessMessages;
|
|
end;
|
|
|
|
{ TdxfmPreviewWdxBar }
|
|
|
|
constructor TdxfmPreviewWdxBar.Create(AOwner: TComponent);
|
|
begin
|
|
inherited;
|
|
FExplorerContextCommands := TList.Create;
|
|
dxLoadImageListFromResources(ilToolBar, IDB_DXPSPREVIEW_TOOLBARS_SMALLIMAGELIST);
|
|
SetupBarManagerStyle(dxBarManager);
|
|
end;
|
|
|
|
destructor TdxfmPreviewWdxBar.Destroy;
|
|
begin
|
|
SaveBarManagerDefaults;
|
|
FreeAndNil(FExplorerContextCommands);
|
|
inherited Destroy;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.AfterConstruction;
|
|
var
|
|
Bar: TdxBar;
|
|
begin
|
|
inherited AfterConstruction;
|
|
cbxPredefinedZoom.DropDownCount := Preview.PredefinedZooms.Count;
|
|
seActivePage.Value := 1;
|
|
|
|
ShowHFBar(False);
|
|
Bar := ShortCutBar;
|
|
if Bar <> nil then Bar.Hidden := True;
|
|
|
|
dxBarManager.PopupMenuLinks[0].Control := Preview.Preview;
|
|
dxBarManager.PopupMenuLinks[1].Control := Preview.ThumbnailsPreview;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.bbViewMarginsClick(Sender: TObject);
|
|
begin
|
|
if not Locked then
|
|
Preview.ShowPageMargins := TdxBarButton(Sender).Down;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.bbViewMarginBarClick(Sender: TObject);
|
|
begin
|
|
if not Locked then
|
|
Preview.ShowMarginBar := TdxBarButton(Sender).Down;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.bbViewStatusBarClick(Sender: TObject);
|
|
begin
|
|
if not Locked then
|
|
Preview.ShowStatusBar := TdxBarButton(Sender).Down;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.bbViewExplorerClick(Sender: TObject);
|
|
begin
|
|
if not Locked then
|
|
Preview.ShowExplorer := TdxBarButton(Sender).Down;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.pmExplorerPopup(Sender: TObject);
|
|
begin
|
|
Preview.UpdateControls;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.bbThumbnailsSizeClick(Sender: TObject);
|
|
begin
|
|
Preview.ThumbnailsSize := TdxPSThumbnailsSize(TTagToInt(TComponent(Sender).Tag));
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.bbViewThumbnailsClick(Sender: TObject);
|
|
begin
|
|
if not Locked then
|
|
Preview.ShowThumbnails := TdxBarButton(Sender).Down;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.DesignClick(Sender: TObject);
|
|
begin
|
|
Preview.DoDesignReport;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.bbFileRebuildClick(Sender: TObject);
|
|
begin
|
|
if Preview.CanRebuild then
|
|
Preview.RebuildReport;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.PrintClick(Sender: TObject);
|
|
const
|
|
BtnClicked: Boolean = False;
|
|
begin
|
|
if BtnClicked then Exit;
|
|
ProcessMessages;
|
|
BtnClicked := True;
|
|
try
|
|
Preview.DoPrintReport(Boolean(TTagToInt(TComponent(Sender).Tag)));
|
|
finally
|
|
BtnClicked := False;
|
|
end;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.PageSetupClick(Sender: TObject);
|
|
const
|
|
BtnClicked: Boolean = False;
|
|
begin
|
|
if BtnClicked then Exit;
|
|
ProcessMessages;
|
|
BtnClicked := True;
|
|
try
|
|
Preview.DoPageSetupReport(0);
|
|
finally
|
|
BtnClicked := False;
|
|
end;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.FileSaveClick(Sender: TObject);
|
|
begin
|
|
Preview.DoExplorerCreateNewItem;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.ExplorerLoadDataClick(Sender: TObject);
|
|
begin
|
|
ProcessMessages;
|
|
Preview.DoExplorerLoadItemData;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.bbFileCloseClick(Sender: TObject);
|
|
begin
|
|
ProcessMessages;
|
|
Preview.DoExplorerUnloadItemData;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.ExplorerCreateNewFolderClick(Sender: TObject);
|
|
begin
|
|
Preview.ExplorerTree.FocusedItem := Preview.ExplorerTree.SelectedItem;
|
|
PostCreateFolderMessage;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.PostCreateFolderMessage;
|
|
begin
|
|
PostMessage(Handle, WM_CREATEFOLDER, 0, 0);
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.ExplorerDeleteItemClick(Sender: TObject);
|
|
begin
|
|
ProcessMessages;
|
|
Preview.DoExplorerDeleteItem;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.ExplorerRenameItemClick(Sender: TObject);
|
|
begin
|
|
ProcessMessages;
|
|
Preview.DoExplorerRenameItem;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.bbExplorerPropertiesClick(Sender: TObject);
|
|
begin
|
|
Preview.DoExplorerItemShowPropertySheets;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.PageBackgroundClick(Sender: TObject);
|
|
begin
|
|
ProcessMessages;
|
|
Preview.DoShowPageBackgroundDlg(CalcWindowPos(Sender));
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.bbFormatShrinkToPageWidthClick(Sender: TObject);
|
|
begin
|
|
if ReportLink <> nil then
|
|
begin
|
|
ReportLink.ShrinkToPageWidth := not ReportLink.ShrinkToPageWidth;
|
|
Preview.DoShrinkToPageWidth(ReportLink.ShrinkToPageWidth);
|
|
end;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.bbFormatShowHideEmptyPagesClick(Sender: TObject);
|
|
begin
|
|
if not Locked then
|
|
Preview.DoShowEmptyPages(TdxBarButton(Sender).Down);
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.bbZoomSetupClick(Sender: TObject);
|
|
begin
|
|
ProcessMessages;
|
|
Preview.DoShowZoomDlg;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.cbxPredefinedZoomClick(Sender: TObject);
|
|
begin
|
|
ProcessMessages;
|
|
Preview.DoShowZoomDlg;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.bbZoomMultiplePagesClick(Sender: TObject);
|
|
var
|
|
Link: TdxBarItemLink;
|
|
R: TRect;
|
|
YShift: Integer;
|
|
begin
|
|
Link := TdxBarItem(Sender).ClickItemLink;
|
|
if (Link <> nil) and (Link.Control <> nil) then
|
|
begin
|
|
R := Link.ItemRect;
|
|
MapWindowPoints(Link.BarControl.Handle, 0, R, 2);
|
|
YShift := R.Bottom - R.Top;
|
|
end
|
|
else
|
|
begin
|
|
GetWindowRect(Preview.Handle, R);
|
|
OffsetRect(R, 3, 0);
|
|
YShift := 3;
|
|
end;
|
|
Preview.DoShowMultiplySelectPagesDlg(ilToolBar, PageSelectorImageIndex, R.TopLeft, YShift);
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.GoToPageClick(Sender: TObject);
|
|
begin
|
|
case TTagToInt(TComponent(Sender).Tag) of
|
|
0: Preview.GoToFirstPage;
|
|
1: Preview.GoToPrevPage;
|
|
2: Preview.GoToNextPage;
|
|
3: Preview.GoToLastPage;
|
|
end;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.CloseClick(Sender: TObject);
|
|
begin
|
|
Close;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.HelpClick(Sender: TObject);
|
|
begin
|
|
ProcessMessages;
|
|
Preview.DoInvokeHelp;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.Activate;
|
|
begin
|
|
inherited;
|
|
TimerHint.Enabled := True;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.WndProc(var Message: TMessage);
|
|
begin
|
|
if Message.Msg = WM_CREATEFOLDER then
|
|
begin
|
|
Preview.ExplorerTree.SelectedItem := Preview.ExplorerTree.FocusedItem;
|
|
Preview.DoExplorerCreateNewFolder;
|
|
end
|
|
else
|
|
inherited;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.ExplorerContextCommandClick(Sender: TObject);
|
|
var
|
|
Command: TCustomdxPSExplorerContextCommand;
|
|
CommandSet2: IdxPSExplorerContextCommands2;
|
|
begin
|
|
Command := TCustomdxPSExplorerContextCommand(TTagToObj(TdxBarButton(Sender).Tag));
|
|
if Supports(TObject(Preview.Explorer), IdxPSExplorerContextCommands2, CommandSet2) then
|
|
begin
|
|
CommandSet2.InitializeCommand(Command);
|
|
try
|
|
if Command.Enabled then Command.Execute; {.1}
|
|
finally
|
|
CommandSet2.FinalizeCommand(Command);
|
|
end;
|
|
end;
|
|
Preview.UpdateControls;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.LoadStrings;
|
|
begin
|
|
with dxBarManager do
|
|
begin
|
|
Bars[0].Caption := cxGetResourceString(@sdxMenuBar);
|
|
Bars[1].Caption := cxGetResourceString(@sdxStandardBar);
|
|
Bars[2].Caption := cxGetResourceString(@sdxHeaderFooterBar);
|
|
Bars[3].Caption := cxGetResourceString(@sdxShortCutMenusBar);
|
|
Bars[4].Caption := cxGetResourceString(@sdxAutoTextBar);
|
|
Bars[5].Caption := cxGetResourceString(@sdxExplorerBar);
|
|
|
|
Categories[0] := DropAmpersand(cxGetResourceString(@sdxMenuFile));
|
|
Categories[1] := DropAmpersand(cxGetResourceString(@sdxMenuExplorer));
|
|
Categories[2] := DropAmpersand(cxGetResourceString(@sdxMenuEdit));
|
|
Categories[3] := DropAmpersand(cxGetResourceString(@sdxMenuInsert));
|
|
Categories[4] := DropAmpersand(cxGetResourceString(@sdxMenuView));
|
|
Categories[5] := DropAmpersand(cxGetResourceString(@sdxMenuFormat));
|
|
Categories[6] := DropAmpersand(cxGetResourceString(@sdxMenuZoom));
|
|
Categories[7] := DropAmpersand(cxGetResourceString(@sdxMenuTools));
|
|
Categories[8] := DropAmpersand(cxGetResourceString(@sdxMenuGotoPage));
|
|
Categories[9] := DropAmpersand(cxGetResourceString(@sdxMenuHelp));
|
|
Categories[10] := DropAmpersand(cxGetResourceString(@sdxMenuBuiltInMenus));
|
|
Categories[11] := DropAmpersand(cxGetResourceString(@sdxMenuShortCutMenus));
|
|
Categories[12] := DropAmpersand(cxGetResourceString(@sdxMenuNewMenu));
|
|
end;
|
|
|
|
bbFile.Caption := cxGetResourceString(@sdxMenuFile);
|
|
bbFileSave.Caption := cxGetResourceString(@sdxMenuFileSave);
|
|
bbFileLoad.Caption := cxGetResourceString(@sdxMenuFileLoad);
|
|
bbFileClose.Caption := cxGetResourceString(@sdxMenuFileClose);
|
|
bbFileDesign.Caption := cxGetResourceString(@sdxMenuFileDesign);
|
|
bbFilePrintDialog.Caption := cxGetResourceString(@sdxMenuFilePrint);
|
|
bbFilePrint.Caption := DropEndEllipsis(cxGetResourceString(@sdxMenuFilePrint));
|
|
bbFileRebuild.Caption := cxGetResourceString(@sdxMenuFileRebuild);
|
|
// bbFilePrintSetup.Caption := cxGetResourceString(@sdxMenuFilePrintSetup);
|
|
bliPrintStyles.Caption := cxGetResourceString(@sdxMenuPrintStyles);
|
|
bbFilePageSetup.Caption := cxGetResourceString(@sdxMenuFilePageSetup);
|
|
bbFileExit.Caption := cxGetResourceString(@sdxMenuFileExit);
|
|
bbExportToPDF.Caption := cxGetResourceString(@sdxMenuExportToPDF);
|
|
|
|
bbExplorer.Caption := cxGetResourceString(@sdxMenuExplorer);
|
|
bbExplorerCreateNewFolder.Caption := cxGetResourceString(@sdxMenuExplorerCreateFolder);
|
|
bbExplorerDelete.Caption := cxGetResourceString(@sdxMenuExplorerDelete);
|
|
bbExplorerRename.Caption := cxGetResourceString(@sdxMenuExplorerRename);
|
|
bbExplorerProperties.Caption := cxGetResourceString(@sdxMenuExplorerProperties);
|
|
|
|
bbEdit.Caption := cxGetResourceString(@sdxMenuEdit);
|
|
bbEditFind.Caption := cxGetResourceString(@sdxMenuEditFind);
|
|
bbEditFindNext.Caption := cxGetResourceString(@sdxMenuEditFindNext);
|
|
bbEditReplace.Caption := cxGetResourceString(@sdxMenuEditReplace);
|
|
|
|
bbInsert.Caption := cxGetResourceString(@sdxMenuInsert);
|
|
bsiInsertHFAutoText.Caption := cxGetResourceString(@sdxMenuInsertAutoText);
|
|
bbInsertEditAutoText.Caption := cxGetResourceString(@sdxMenuInsertEditAutoTextEntries);
|
|
bsiInsertAutoText.Caption := cxGetResourceString(@sdxMenuInsertAutoTextEntriesSubItem);
|
|
bliInsertAutoTextEntries.Caption := cxGetResourceString(@sdxMenuInsertAutoTextEntries);
|
|
bbInsertHFPageNumber.Caption := cxGetResourceString(@sdxMenuInsertPageNumber);
|
|
bbInsertHFTotalPages.Caption := cxGetResourceString(@sdxMenuInsertTotalPages);
|
|
bbInsertHFPageOfPages.Caption := cxGetResourceString(@sdxMenuInsertPageOfPages);
|
|
bbInsertHFDateTime.Caption := cxGetResourceString(@sdxMenuInsertDateTime);
|
|
bbInsertHFDate.Caption := cxGetResourceString(@sdxMenuInsertDate);
|
|
bbInsertHFTime.Caption := cxGetResourceString(@sdxMenuInsertTime);
|
|
bbInsertHFUserName.Caption := cxGetResourceString(@sdxMenuInsertUserName);
|
|
bbInsertHFMachineName.Caption := cxGetResourceString(@sdxMenuInsertMachineName);
|
|
|
|
bbView.Caption := cxGetResourceString(@sdxMenuView);
|
|
bbViewMargins.Caption := cxGetResourceString(@sdxMenuViewMargins);
|
|
bbViewMarginBar.Caption := cxGetResourceString(@sdxMenuViewMarginsStatusBar);
|
|
bbViewStatusBar.Caption := cxGetResourceString(@sdxMenuViewPagesStatusBar);
|
|
bbViewExplorer.Caption := cxGetResourceString(@sdxMenuViewExplorer);
|
|
bbViewThumbnails.Caption := cxGetResourceString(@sdxMenuViewThumbnails);
|
|
bbThumbnailsSmall.Caption := cxGetResourceString(@sdxMenuThumbnailsSmall);
|
|
bbThumbnailsLarge.Caption := cxGetResourceString(@sdxMenuThumbnailsLarge);
|
|
bbViewToolbars.Caption := cxGetResourceString(@sdxMenuViewToolBars);
|
|
bbViewZoom.Caption := cxGetResourceString(@sdxMenuZoom);
|
|
|
|
bbZoomPercent100.Caption := cxGetResourceString(@sdxMenuZoomPercent100);
|
|
bbZoomPageWidth.Caption := cxGetResourceString(@sdxMenuZoomPageWidth);
|
|
bbZoomWholePage.Caption := cxGetResourceString(@sdxMenuZoomWholePage);
|
|
bbZoomTwoPages.Caption := cxGetResourceString(@sdxMenuZoomTwoPages);
|
|
bbZoomFourPages.Caption := cxGetResourceString(@sdxMenuZoomFourPages);
|
|
bbZoomMultiplePages.Caption := cxGetResourceString(@sdxMenuZoomMultiplyPages);
|
|
bbZoomWidenToSourceWidth.Caption := cxGetResourceString(@sdxMenuZoomWidenToSourceWidth);
|
|
bbZoomSetup.Caption := cxGetResourceString(@sdxMenuZoomSetup);
|
|
bbViewPages.Caption := cxGetResourceString(@sdxMenuPages);
|
|
bbViewPageHeaders.Caption := cxGetResourceString(@sdxMenuViewPagesHeaders);
|
|
bbViewPageFooters.Caption := cxGetResourceString(@sdxMenuViewPagesFooters);
|
|
bbViewSwitchToLeftPart.Caption := cxGetResourceString(@sdxMenuViewSwitchToLeftPart);
|
|
bbViewSwitchToRightPart.Caption := cxGetResourceString(@sdxMenuViewSwitchToRightPart);
|
|
bbViewSwitchToCenterPart.Caption := cxGetResourceString(@sdxMenuViewSwitchToCenterPart);
|
|
bbViewHFSwitchHeaderFooter.Caption := cxGetResourceString(@sdxMenuViewHFSwitchHeaderFooter);
|
|
bbViewHFClose.Caption := cxGetResourceString(@sdxMenuViewHFClose);
|
|
|
|
bbFormat.Caption := cxGetResourceString(@sdxMenuFormat);
|
|
bbFormatTitle.Caption := cxGetResourceString(@sdxMenuFormatTitle);
|
|
bbFormatFootnotes.Caption := cxGetResourceString(@sdxMenuFormatFootnotes);
|
|
bbFormatHeaderAndFooter.Caption := cxGetResourceString(@sdxMenuFormatHeaderAndFooter);
|
|
bbFormatDateTime.Caption := cxGetResourceString(@sdxMenuFormatDateTime);
|
|
bbFormatPageNumbering.Caption := cxGetResourceString(@sdxMenuFormatPageNumbering);
|
|
bbFormatPageBackground.Caption := cxGetResourceString(@sdxMenuFormatPageBackground);
|
|
bbFormatShrinkToPageWidth.Caption := cxGetResourceString(@sdxMenuFormatShrinkToPage);
|
|
bbFormatShowHideEmptyPages.Caption := cxGetResourceString(@sdxMenuShowEmptyPages);
|
|
bbFormatHFBackground.Caption := cxGetResourceString(@sdxMenuFormatHFBackground);
|
|
bbFormatHFClear.Caption := cxGetResourceString(@sdxMenuFormatHFClear);
|
|
|
|
bbGotoPage.Caption := cxGetResourceString(@sdxMenuGotoPage);
|
|
bbGotoFirstPage.Caption := cxGetResourceString(@sdxMenuGotoPageFirst);
|
|
bbGotoPrevPage.Caption := cxGetResourceString(@sdxMenuGotoPagePrev);
|
|
bbGotoNextPage.Caption := cxGetResourceString(@sdxMenuGotoPageNext);
|
|
bbGotoLastPage.Caption := cxGetResourceString(@sdxMenuGotoPageLast);
|
|
|
|
bbTools.Caption := cxGetResourceString(@sdxMenuTools);
|
|
bbToolsCustomize.Caption := cxGetResourceString(@sdxMenuToolsCustomize);
|
|
bbToolsOptions.Caption := cxGetResourceString(@sdxMenuToolsOptions);
|
|
|
|
bbHelp.Caption := cxGetResourceString(@sdxMenuHelp);
|
|
bbHelpTopics.Caption := cxGetResourceString(@sdxMenuHelpTopics);
|
|
bbHelpAbout.Caption := cxGetResourceString(@sdxMenuHelpAbout);
|
|
|
|
cbxPredefinedZoom.Caption := cxGetResourceString(@sdxMenuZoom) + ':';
|
|
cbxPredefinedZoom.Items[8] := cxGetResourceString(@sdxPageWidth);
|
|
cbxPredefinedZoom.Items[9] := cxGetResourceString(@sdxWholePage);
|
|
cbxPredefinedZoom.Items[10] := cxGetResourceString(@sdxTwoPages);
|
|
cbxPredefinedZoom.Items[11] := cxGetResourceString(@sdxFourPages);
|
|
cbxPredefinedZoom.Items[12] := cxGetResourceString(@sdxWidenToSourceWidth);
|
|
seActivePage.Caption := cxGetResourceString(@sdxMenuActivePage);
|
|
|
|
bsiShortcutPreview.Caption := cxGetResourceString(@sdxMenuShortcutPreview);
|
|
bsiShortcutExplorer.Caption := cxGetResourceString(@sdxMenuShortcutExplorer);
|
|
bsiShortcutThumbnails.Caption := cxGetResourceString(@sdxMenuShortcutThumbnails);
|
|
|
|
bsiNewMenuNewMenu.Caption := cxGetResourceString(@sdxMenuNewMenu);
|
|
|
|
{ hints }
|
|
bbFileDesign.Hint := cxGetResourceString(@sdxHintFileDesign);
|
|
bbFileSave.Hint := cxGetResourceString(@sdxHintFileSave);
|
|
bbFileLoad.Hint := cxGetResourceString(@sdxHintFileLoad);
|
|
bbFileClose.Hint := cxGetResourceString(@sdxHintFileClose);
|
|
bbFilePrint.Hint := cxGetResourceString(@sdxHintFilePrint) + dxPSPrVw.GetCurrentPrinterAsHint;
|
|
bbFilePrintDialog.Hint := cxGetResourceString(@sdxHintFilePrintDialog);
|
|
// bbFilePrintSetup.Hint := cxGetResourceString(@sdxHintFilePrintSetup);
|
|
bbFilePageSetup.Hint := cxGetResourceString(@sdxHintFilePageSetup);
|
|
bbFileExit.Hint := cxGetResourceString(@sdxHintFileExit);
|
|
bbExportToPDF.Hint := cxGetResourceString(@sdxHintExportToPDF);
|
|
|
|
bbExplorerCreateNewFolder.Hint := cxGetResourceString(@sdxHintExplorerCreateFolder);
|
|
bbExplorerDelete.Hint := cxGetResourceString(@sdxHintExplorerDelete);
|
|
bbExplorerRename.Hint := cxGetResourceString(@sdxHintExplorerRename);
|
|
bbExplorerProperties.Hint := cxGetResourceString(@sdxHintExplorerProperties);
|
|
|
|
bbEditFind.Hint := cxGetResourceString(@sdxHintEditFind);
|
|
bbEditFindNext.Hint := cxGetResourceString(@sdxHintEditFindNext);
|
|
bbEditReplace.Hint := cxGetResourceString(@sdxHintEditReplace);
|
|
|
|
bbInsertEditAutoText.Hint := cxGetResourceString(@sdxHintInsertEditAutoTextEntries);
|
|
bbInsertHFPageNumber.Hint := cxGetResourceString(@sdxHintInsertPageNumber);
|
|
bbInsertHFTotalPages.Hint := cxGetResourceString(@sdxHintInsertTotalPages);
|
|
bbInsertHFPageOfPages.Hint := cxGetResourceString(@sdxHintInsertPageOfPages);
|
|
bbInsertHFDateTime.Hint := cxGetResourceString(@sdxHintInsertDateTime);
|
|
bbInsertHFDate.Hint := cxGetResourceString(@sdxHintInsertDate);
|
|
bbInsertHFTime.Hint := cxGetResourceString(@sdxHintInsertTime);
|
|
bbInsertHFUserName.Hint := cxGetResourceString(@sdxHintInsertUserName);
|
|
bbInsertHFMachineName.Hint := cxGetResourceString(@sdxHintInsertMachineName);
|
|
|
|
bbViewMargins.Hint := cxGetResourceString(@sdxHintViewMargins);
|
|
bbViewMarginBar.Hint := cxGetResourceString(@sdxHintViewMarginsStatusBar);
|
|
bbViewStatusBar.Hint := cxGetResourceString(@sdxHintViewPagesStatusBar);
|
|
bbViewExplorer.Hint := cxGetResourceString(@sdxHintViewExplorer);
|
|
bbViewThumbnails.Hint := cxGetResourceString(@sdxHintViewThumbnails);
|
|
bbThumbnailsSmall.Hint := cxGetResourceString(@sdxHintThumbnailsSmall);
|
|
bbThumbnailsLarge.Hint := cxGetResourceString(@sdxHintThumbnailsLarge);
|
|
cbxPredefinedZoom.Hint := cxGetResourceString(@sdxHintViewZoom);
|
|
bbZoomPercent100.Hint := cxGetResourceString(@sdxHintZoomPercent100);
|
|
bbZoomPageWidth.Hint := cxGetResourceString(@sdxHintZoomPageWidth);
|
|
bbZoomWholePage.Hint := cxGetResourceString(@sdxHintZoomWholePage);
|
|
bbZoomTwoPages.Hint := cxGetResourceString(@sdxHintZoomTwoPages);
|
|
bbZoomFourPages.Hint := cxGetResourceString(@sdxHintZoomFourPages);
|
|
bbZoomMultiplePages.Hint := cxGetResourceString(@sdxHintZoomMultiplyPages);
|
|
bbZoomWidenToSourceWidth.Hint := cxGetResourceString(@sdxHintZoomWidenToSourceWidth);
|
|
bbZoomSetup.Hint := cxGetResourceString(@sdxHintZoomSetup);
|
|
bbViewPageHeaders.Hint := cxGetResourceString(@sdxHintViewPagesHeaders);
|
|
bbViewPageFooters.Hint := cxGetResourceString(@sdxHintViewPagesFooters);
|
|
bbViewSwitchToLeftPart.Hint := cxGetResourceString(@sdxHintViewSwitchToLeftPart);
|
|
bbViewSwitchToRightPart.Hint := cxGetResourceString(@sdxHintViewSwitchToRightPart);
|
|
bbViewSwitchToCenterPart.Hint := cxGetResourceString(@sdxHintViewSwitchToCenterPart);
|
|
bbViewHFSwitchHeaderFooter.Hint := cxGetResourceString(@sdxHintViewHFSwitchHeaderFooter);
|
|
bbViewHFClose.Hint := cxGetResourceString(@sdxHintViewHFClose);
|
|
|
|
bbFormatTitle.Hint := cxGetResourceString(@sdxHintFormatTitle);
|
|
bbFormatFootnotes.Hint := cxGetResourceString(@sdxHintFormatFootnotes);
|
|
bbFormatDateTime.Hint := cxGetResourceString(@sdxHintFormatDateTime);
|
|
bbFormatPageNumbering.Hint := cxGetResourceString(@sdxHintFormatPageNumbering);
|
|
bbFormatPageBackground.Hint := cxGetResourceString(@sdxHintFormatPageBackground);
|
|
bbFormatShrinkToPageWidth.Hint := cxGetResourceString(@sdxHintFormatShrinkToPage);
|
|
bbFormatHFBackground.Hint := cxGetResourceString(@sdxHintFormatHFBackground);
|
|
bbFormatHFClear.Hint := cxGetResourceString(@sdxHintFormatHFClear);
|
|
|
|
bbGotoFirstPage.Hint := cxGetResourceString(@sdxHintGotoPageFirst);
|
|
bbGotoPrevPage.Hint := cxGetResourceString(@sdxHintGotoPagePrev);
|
|
bbGotoNextPage.Hint := cxGetResourceString(@sdxHintGotoPageNext);
|
|
bbGotoLastPage.Hint := cxGetResourceString(@sdxHintGotoPageLast);
|
|
seActivePage.Hint := cxGetResourceString(@sdxHintActivePage);
|
|
|
|
bbToolsCustomize.Hint := cxGetResourceString(@sdxHintToolsCustomize);
|
|
bbToolsOptions.Hint := cxGetResourceString(@sdxHintToolsOptions);
|
|
|
|
bbHelpTopics.Hint := cxGetResourceString(@sdxHintHelpTopics);
|
|
bbHelpAbout.Hint := cxGetResourceString(@sdxHintHelpAbout);
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.ZoomClick(Sender: TObject);
|
|
var
|
|
PageXCount, PageYCount: Integer;
|
|
ZoomMode: TdxPreviewZoomMode;
|
|
begin
|
|
case TTagToInt(TComponent(Sender).Tag) of
|
|
0: ZoomMode := pzmNone;
|
|
1: ZoomMode := pzmPageWidth;
|
|
else
|
|
ZoomMode := pzmPages;
|
|
end;
|
|
PageXCount := 1;
|
|
PageYCount := 1;
|
|
if ZoomMode = pzmPages then
|
|
case TTagToInt(TComponent(Sender).Tag) of
|
|
3: PageXCount := 2;
|
|
4:
|
|
begin
|
|
PageXCount := 2;
|
|
PageYCount := 2;
|
|
end;
|
|
5: ReportLink.GetPageColRowCount(PageXCount, PageYCount);
|
|
end;
|
|
Preview.DoSetupZoomFactor(100, PageXCount, PageYCount, ZoomMode);
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.SetBarItemVisibility(Item: TdxBarItem; Value: Boolean);
|
|
begin
|
|
Item.Visible := VisibleToBarItemVisible(Value);
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.seActivePageChange(Sender: TObject);
|
|
var
|
|
V: Integer;
|
|
begin
|
|
if Locked then Exit;
|
|
V := seActivePage.IntCurValue;
|
|
if V < seActivePage.MinValue then V := Round(seActivePage.MinValue);
|
|
if V > seActivePage.MaxValue then V := Round(seActivePage.MaxValue);
|
|
Preview.DoActivePageChanged(V - 1);
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.seActivePageButtonClick(
|
|
Sender: TdxBarSpinEdit; Button: TdxBarSpinEditButton);
|
|
begin
|
|
if Locked then Exit;
|
|
case Button of
|
|
sbUp:
|
|
Preview.GoToNextPage;
|
|
sbDown:
|
|
Preview.GoToPrevPage;
|
|
end;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.cbxPredefinedZoomChange(Sender: TObject);
|
|
begin
|
|
Preview.SetZoomFactorByText(cbxPredefinedZoom.Text);
|
|
if cbxPredefinedZoom.DroppedDown then
|
|
Windows.SetFocus(Preview.Handle);
|
|
Preview.UpdateControls;
|
|
cbxPredefinedZoom.Text := AddPercentageChar(IntToStr(Preview.ZoomFactor));
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.dxBarManagerBarVisibleChange(
|
|
Sender: TdxBarManager; ABar: TdxBar);
|
|
begin
|
|
if ABar = HFBar then
|
|
UpdateHFState(ABar.Visible);
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.miCustomizePopupClick(Sender: TObject);
|
|
begin
|
|
ShowdxBarSubMenuEditor(pmPreview.ItemLinks);
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.bbViewHFCloseClick(Sender: TObject);
|
|
begin
|
|
Preview.DoShowHFToolBar(False);
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.bbFormatHeaderAndFooterClick(Sender: TObject);
|
|
begin
|
|
Preview.DoShowHFToolBar(TdxBarButton(Sender).Down);
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.InsertHFClick(Sender: TObject);
|
|
begin
|
|
Preview.DoInsertHF(Preview.HFFunctionList[TTagToInt(TComponent(Sender).Tag)]);
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.bbFormatHFClearClick(Sender: TObject);
|
|
begin
|
|
Preview.DoClearHF;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.bbViewHFSwitchHeaderFooterClick(Sender: TObject);
|
|
begin
|
|
if TdxBarButton(Sender).Down then
|
|
Preview.State := prsEditFooters
|
|
else
|
|
Preview.State := prsEditHeaders;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.bbFormatDateTimeClick(Sender: TObject);
|
|
begin
|
|
ProcessMessages;
|
|
Preview.DoShowFormatDateTimeDlg;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.bbFormatTitleClick(Sender: TObject);
|
|
begin
|
|
ProcessMessages;
|
|
Preview.DoFormatTitle;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.bbFormatFootnotesClick(Sender: TObject);
|
|
begin
|
|
ProcessMessages;
|
|
Preview.DoFormatFootnotes;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.bbFormatPageNumbersClick(Sender: TObject);
|
|
begin
|
|
ProcessMessages;
|
|
Preview.DoShowFormatPageNumbersDlg;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.SwitchPartClick(Sender: TObject);
|
|
begin
|
|
Preview.HFEditPart := TdxPageTitlePart(TTagToInt(TdxBarButton(Sender).Tag));
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.bbFormatHFBackgroundClick(Sender: TObject);
|
|
begin
|
|
ProcessMessages;
|
|
Preview.DoShowHFBackgroundDlg(CalcWindowPos(Sender));
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.bbViewPageHeadersClick(Sender: TObject);
|
|
begin
|
|
if not Locked then
|
|
Preview.DoShowPageHeaders(TdxBarButton(Sender).Down);
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.bbViewPageFootersClick(Sender: TObject);
|
|
begin
|
|
if not Locked then
|
|
Preview.DoShowPageFooters(TdxBarButton(Sender).Down);
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.bbToolsCustomizeClick(Sender: TObject);
|
|
begin
|
|
dxBarManager.Customizing(True);
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.bbToolsOptionsClick(Sender: TObject);
|
|
begin
|
|
Preview.DoShowOptionsDlg;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.dxBarManagerShowCustomizingForm(Sender: TObject);
|
|
begin
|
|
ShowShortCutBar(True);
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.dxBarManagerHideCustomizingForm(Sender: TObject);
|
|
begin
|
|
ShowShortCutBar(False);
|
|
end;
|
|
|
|
function TdxfmPreviewWdxBar.GetExplorerContextCommand(Index: Integer): TCustomdxPSExplorerContextCommand;
|
|
begin
|
|
Result := TCustomdxPSExplorerContextCommand(FExplorerContextCommands.Items[Index]);
|
|
end;
|
|
|
|
function TdxfmPreviewWdxBar.GetExplorerContextCommandCount: Integer;
|
|
begin
|
|
Result := FExplorerContextCommands.Count;
|
|
end;
|
|
|
|
function TdxfmPreviewWdxBar.GetLocked: Boolean;
|
|
begin
|
|
Result := Preview.Locked;
|
|
end;
|
|
|
|
function TdxfmPreviewWdxBar.GetReportLink: TBasedxReportLink;
|
|
begin
|
|
Result := Preview.ReportLink;
|
|
end;
|
|
|
|
function TdxfmPreviewWdxBar.CalcWindowPos(Sender: TObject): TPoint;
|
|
var
|
|
Link: TdxBarItemLink;
|
|
R: TRect;
|
|
begin
|
|
Link := TdxBarItem(Sender).ClickItemLink;
|
|
if (Link <> nil) and (Link.Control <> nil) then
|
|
begin
|
|
R := Link.ItemRect;
|
|
MapWindowPoints(Link.BarControl.Handle, 0, R, 2);
|
|
Result.X := R.Left;
|
|
Result.Y := R.Bottom;
|
|
end
|
|
else
|
|
Result := Preview.ClientOrigin;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.EnableItemsWhileBuilding(Value: Boolean);
|
|
var
|
|
Items: TList;
|
|
I, J: Integer;
|
|
begin
|
|
Items := TList.Create;
|
|
try
|
|
for I := 0 to dxBarManager.Categories.Count - 1 do
|
|
begin
|
|
dxBarManager.GetItemsByCategory(I, Items);
|
|
for J := 0 to Items.Count - 1 do
|
|
TdxBarItem(Items[J]).Enabled := Value;
|
|
end;
|
|
finally
|
|
Items.Free;
|
|
end;
|
|
bbFileExit.Enabled := True;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.DoShowExplorerPopup(Sender: TObject;
|
|
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
|
begin
|
|
if Button = mbRight then
|
|
pmExplorer.PopupFromCursorPos;
|
|
end;
|
|
|
|
function TdxfmPreviewWdxBar.ShortcutBar: TdxBar;
|
|
begin
|
|
Result := dxBarManager.BarByCaption(DropAmpersand(cxGetResourceString(@sdxShortCutMenusBar)));
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.ShowShortCutBar(Value: Boolean);
|
|
var
|
|
Bar: TdxBar;
|
|
begin
|
|
Bar := ShortcutBar;
|
|
if Bar <> nil then
|
|
begin
|
|
Bar.Hidden := not Value;
|
|
Bar.Visible := False;
|
|
if Value then
|
|
begin
|
|
bsiShortcutPreview.ItemLinks := pmPreview.ItemLinks;
|
|
bsiShortcutExplorer.ItemLinks := pmExplorer.ItemLinks;
|
|
bsiShortcutThumbnails.ItemLinks := pmThumbnails.ItemLinks;
|
|
end
|
|
else
|
|
begin
|
|
pmPreview.ItemLinks := bsiShortcutPreview.ItemLinks;
|
|
pmExplorer.ItemLinks := bsiShortcutExplorer.ItemLinks;
|
|
pmThumbnails.ItemLinks := bsiShortcutThumbnails.ItemLinks;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.EnabledHFItems(Value: Boolean);
|
|
begin
|
|
bbInsertHFPageNumber.Enabled := Value;
|
|
bbInsertHFTotalPages.Enabled := Value;
|
|
bbInsertHFPageOfPages.Enabled := Value;
|
|
bbInsertHFDate.Enabled := Value;
|
|
bbInsertHFTime.Enabled := Value;
|
|
bbInsertHFDateTime.Enabled := Value;
|
|
bbViewHFSwitchHeaderFooter.Enabled := Value;
|
|
bbInsertHFUserName.Enabled := Value;
|
|
bbInsertHFMachineName.Enabled := Value;
|
|
bbViewHFClose.Enabled := Value;
|
|
bbViewSwitchToLeftPart.Enabled := Value;
|
|
bbViewSwitchToCenterPart.Enabled := Value;
|
|
bbViewSwitchToRightPart.Enabled := Value;
|
|
bbFormatHFClear.Enabled := Value;
|
|
|
|
bliInsertAutoTextEntries.Enabled := Value;
|
|
bbFormatHFBackground.Enabled := Value;
|
|
end;
|
|
|
|
function TdxfmPreviewWdxBar.HFBar: TdxBar;
|
|
begin
|
|
Result := dxBarManager.BarByCaption(DropAmpersand(cxGetResourceString(@sdxHeaderFooterBar)));
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.ShowHFBar(Value: Boolean);
|
|
var
|
|
Bar: TdxBar;
|
|
begin
|
|
Bar := HFBar;
|
|
if Bar <> nil then
|
|
Bar.Visible := Value;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.UpdateHFState(Value: Boolean);
|
|
begin
|
|
EnabledHFItems(Value);
|
|
Preview.ZoomOnClick := not Value;
|
|
bbFormatHeaderAndFooter.Down := Value;
|
|
|
|
if not Value then
|
|
Preview.State := prsNone
|
|
else
|
|
if bbViewHFSwitchHeaderFooter.Down then
|
|
Preview.State := prsEditFooters
|
|
else
|
|
Preview.State := prsEditHeaders;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.LoadBarManagerDefaults;
|
|
var
|
|
AIniFile: TCustomIniFile;
|
|
begin
|
|
if dxPSStoringManager.BeginStoring(AIniFile) then
|
|
try
|
|
Preview.LoadFromIniFile(AIniFile, dxPSFormGetActualSectionName(Self));
|
|
finally
|
|
dxPSStoringManager.EndStoring(AIniFile);
|
|
end;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.SaveBarManagerDefaults;
|
|
var
|
|
AIniFile: TCustomIniFile;
|
|
begin
|
|
if dxPSStoringManager.BeginStoring(AIniFile) then
|
|
try
|
|
Preview.SaveToIniFile(AIniFile, dxPSFormGetActualSectionName(Self));
|
|
finally
|
|
dxPSStoringManager.EndStoring(AIniFile);
|
|
end;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.LoadBarManager(
|
|
AIniFile: TCustomIniFile; const ASectionName: string);
|
|
const
|
|
StorageType: array[Boolean] of TdxBarStoringKind = (skIni, skReg);
|
|
var
|
|
AIsSameVersion: Boolean;
|
|
begin
|
|
AIsSameVersion :=
|
|
(AIniFile.ReadInteger(dxValidatePath(ASectionName) + 'Version', 'Major', 0) = dxPSVerMajor) and
|
|
(AIniFile.ReadInteger(dxValidatePath(ASectionName) + 'Version', 'Minor', 0) = dxPSVerMinor);
|
|
|
|
if AIsSameVersion then
|
|
begin
|
|
TdxBarManagerAccess(dxBarManager).LoadBarManager(
|
|
AIniFile, dxValidatePath(ASectionName) + sdxToolBars,
|
|
StorageType[AIniFile is TRegistryIniFile]);
|
|
pmPreview.ItemLinks := bsiShortcutPreview.ItemLinks;
|
|
pmExplorer.ItemLinks := bsiShortcutExplorer.ItemLinks;
|
|
pmThumbnails.ItemLinks := bsiShortcutThumbnails.ItemLinks;
|
|
end
|
|
else
|
|
begin
|
|
bsiShortcutPreview.ItemLinks := pmPreview.ItemLinks;
|
|
bsiShortcutExplorer.ItemLinks := pmExplorer.ItemLinks;
|
|
bsiShortcutThumbnails.ItemLinks := pmThumbnails.ItemLinks;
|
|
end;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.SaveBarManager(
|
|
AIniFile: TCustomIniFile; const ASectionName: string);
|
|
const
|
|
StorageType: array[Boolean] of TdxBarStoringKind = (skIni, skReg);
|
|
begin
|
|
AIniFile.WriteInteger(dxValidatePath(ASectionName) + 'Version', 'Major', dxPSVerMajor);
|
|
AIniFile.WriteInteger(dxValidatePath(ASectionName) + 'Version', 'Minor', dxPSVerMinor);
|
|
TdxBarManagerAccess(dxBarManager).SaveBarManager(
|
|
AIniFile, dxValidatePath(ASectionName) + sdxToolBars,
|
|
StorageType[AIniFile is TRegistryIniFile]);
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.TimerHintTimer(Sender: TObject);
|
|
begin
|
|
bbFilePrint.Hint := cxGetResourceString(@sdxHintFilePrint) + GetCurrentPrinterAsHint;
|
|
TTimer(Sender).Enabled := False;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.bbExportToPDFClick(Sender: TObject);
|
|
begin
|
|
dxPSExportToPDF(ReportLink);
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.PreviewAddExplorerCommand(
|
|
Sender: TObject; ACommand: TCustomdxPSExplorerContextCommand);
|
|
|
|
procedure AddBarControl(AItemLinks: TdxBarItemLinks; ABarButton: TdxBarButton);
|
|
begin
|
|
with AItemLinks.Add do
|
|
begin
|
|
Item := ABarButton;
|
|
Index := 0;
|
|
BringToTopInRecentList(True);
|
|
end;
|
|
end;
|
|
|
|
procedure BeginGroup(AItemLinks: TdxBarItemLinks);
|
|
begin
|
|
if AItemLinks.Count <> 0 then
|
|
AItemLinks[0].BeginGroup := True;
|
|
end;
|
|
|
|
var
|
|
BarButton: TdxBarButton;
|
|
begin
|
|
if ACommand is TdxPSExplorerContextCommandSeparator then
|
|
begin
|
|
BeginGroup(bbExplorer.ItemLinks);
|
|
BeginGroup(dxBarManager.BarByCaption(cxGetResourceString(@sdxExplorerBar)).ItemLinks);
|
|
BeginGroup(pmExplorer.ItemLinks);
|
|
end
|
|
else
|
|
begin
|
|
BarButton := TdxBarButton.Create(Self);
|
|
with BarButton do
|
|
begin
|
|
Glyph := ACommand.Bitmap;
|
|
Caption := ACommand.Caption;
|
|
Enabled := ACommand.Enabled;
|
|
Hint := ACommand.Hint;
|
|
ShortCut := ACommand.ShortCut;
|
|
Tag := MakeTTag(ACommand);
|
|
|
|
Category := dxBarManager.Categories.IndexOf(DropAmpersand(cxGetResourceString(@sdxMenuExplorer)));
|
|
OnClick := ExplorerContextCommandClick;
|
|
end;
|
|
|
|
AddBarControl(bbExplorer.ItemLinks, BarButton);
|
|
AddBarControl(dxBarManager.BarByCaption(cxGetResourceString(@sdxExplorerBar)).ItemLinks, BarButton);
|
|
AddBarControl(pmExplorer.ItemLinks, BarButton);
|
|
ACommand.Data := Integer(BarButton);
|
|
|
|
if FExplorerContextCommands.IndexOf(ACommand) = -1 then
|
|
FExplorerContextCommands.Add(ACommand);
|
|
end;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.PreviewAfterPrintReport(Sender: TObject; AShowDialog: Boolean);
|
|
begin
|
|
if AShowDialog then
|
|
bbFilePrint.Hint := cxGetResourceString(@sdxHintFilePrint) + GetCurrentPrinterAsHint;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.PreviewCreationComplete(Sender: TObject);
|
|
begin
|
|
LoadBarManagerDefaults;
|
|
LoadStrings;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.PreviewInitContent(Sender: TObject);
|
|
|
|
procedure AddEndEllipsis(AnItem: TdxBarButton);
|
|
begin
|
|
with AnItem do
|
|
if AnsiLastChar(Caption) <> '.' then Caption := dxPSUtl.AddEndEllipsis(Caption);
|
|
end;
|
|
|
|
begin
|
|
if ReportLink <> nil then
|
|
seActivePage.MaxValue := ReportLink.PageCount;
|
|
cbxPredefinedZoom.Text := IntToStr(Preview.ZoomFactor) + PercentSymbol;
|
|
|
|
if Preview.IsExplorerAvailable then
|
|
TWinControlAccess(Preview.ExplorerTree.Control).OnMouseUp := DoShowExplorerPopup;
|
|
|
|
if not Preview.IsExplorerAvailable then
|
|
begin
|
|
AddEndEllipsis(bbFileSave);
|
|
AddEndEllipsis(bbFileLoad);
|
|
end;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.PreviewLoadProperties(
|
|
Sender: TObject; AIniFile: TCustomIniFile; const ASectionName: string);
|
|
begin
|
|
LoadBarManager(AIniFile, ASectionName);
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.PreviewSaveProperties(
|
|
Sender: TObject; AIniFile: TCustomIniFile; const ASectionName: string);
|
|
begin
|
|
SaveBarManager(AIniFile, ASectionName);
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.PreviewStyleListChanged(Sender: TObject);
|
|
begin
|
|
ReportLink.BuildPageSetupMenu(bliPrintStyles, bbDefinePrintStyles, True);
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.PreviewUpdateControls(Sender: TObject);
|
|
const
|
|
ButtonStyles: array[Boolean] of TdxBarButtonStyle = (bsDefault, bsDropDown);
|
|
var
|
|
Bar: TdxBar;
|
|
PagesExists, B: Boolean;
|
|
PageXCount, PageYCount, Index: Integer;
|
|
begin
|
|
if Locked or (csDestroying in ComponentState) then Exit;
|
|
|
|
PagesExists := Preview.Preview.PageCount > 0;
|
|
Preview.BeginUpdate;
|
|
try
|
|
EnableItemsWhileBuilding(True);
|
|
|
|
bbFileDesign.Enabled := Preview.CanDesign;
|
|
bbFileRebuild.Enabled := Preview.CanRebuild;
|
|
bbFileSave.Enabled := Preview.CanSaveReport;
|
|
bbFileLoad.Enabled := Preview.CanLoadReport;
|
|
bbFileClose.Enabled := Preview.CanUnloadReport;
|
|
bbFilePrint.Enabled := Preview.CanPrint;
|
|
bbExportToPDF.Enabled := Preview.CanExport;
|
|
bbFilePrintDialog.Enabled := Preview.CanPrintDialog;
|
|
bbFilePageSetup.Enabled := Preview.CanPageSetup;
|
|
bbFilePageSetup.ButtonStyle := ButtonStyles[Preview.CanPrintStyle];
|
|
bbFileExit.Enabled := not Preview.IsPrinting;
|
|
|
|
bbExplorer.Enabled := Preview.IsExplorerAvailable;
|
|
bbExplorerCreateNewFolder.Enabled := Preview.IsExplorerAvailable and Preview.ExplorerTree.CanCreateFolder;
|
|
bbExplorerDelete.Enabled := Preview.IsExplorerAvailable and Preview.ExplorerTree.CanDeleteSelection;
|
|
bbExplorerRename.Enabled := Preview.IsExplorerAvailable and Preview.ExplorerTree.CanRenameSelectedItem;
|
|
bbExplorerProperties.Enabled := Preview.IsExplorerAvailable and Preview.ExplorerTree.CanShowPropertySheetsForSelectedItem;
|
|
|
|
bbFormatShowHideEmptyPages.Down := (ReportLink <> nil) and ReportLink.ShowEmptyPages;
|
|
bbFormatFootnotes.Enabled := (ReportLink <> nil) and ReportLink.CanChangeFootnotes;
|
|
bbFormatTitle.Enabled := (ReportLink <> nil) and ReportLink.CanChangeTitle;
|
|
bbFormatPageBackground.Enabled := Preview.IsEnabled(peoPageBackground) and not Preview.IsPrinting;
|
|
bbFormatShrinkToPageWidth.Enabled := PagesExists and not Preview.IsPrinting;
|
|
if ReportLink <> nil then
|
|
begin
|
|
bbFormatShrinkToPageWidth.Down := ReportLink.ShrinkToPageWidth;
|
|
SetBarItemVisibility(bbFormatShowHideEmptyPages, ReportLink.EmptyPagesCanExist);
|
|
bbFormatShowHideEmptyPages.Down := ReportLink.ShowEmptyPages;
|
|
end;
|
|
|
|
bbZoomPageWidth.Enabled := PagesExists;
|
|
bbZoomPercent100.Enabled := PagesExists;
|
|
bbZoomWholePage.Enabled := PagesExists;
|
|
bbZoomTwoPages.Enabled := PagesExists and (Preview.Preview.PageCount > 1);
|
|
bbZoomFourPages.Enabled := PagesExists and (Preview.Preview.PageCount > 3);
|
|
bbZoomMultiplePages.Enabled := PagesExists;
|
|
if ReportLink <> nil then
|
|
begin
|
|
ReportLink.GetPageColRowCount(PageXCount, PageYCount);
|
|
bbZoomWidenToSourceWidth.Enabled := PageXCount > 1;
|
|
end;
|
|
cbxPredefinedZoom.Enabled := bbZoomPageWidth.Enabled;
|
|
bbZoomSetup.Enabled := bbZoomPageWidth.Enabled;
|
|
|
|
bbGoToFirstPage.Enabled := PagesExists and (Preview.Preview.SelPageIndex <> 0);
|
|
bbGoToPrevPage.Enabled := PagesExists and (Preview.Preview.SelPageIndex <> 0);
|
|
bbGoToNextPage.Enabled := PagesExists and (Preview.Preview.SelPageIndex <> Preview.PageCount - 1);
|
|
bbGoToLastPage.Enabled := PagesExists and (Preview.Preview.SelPageIndex <> Preview.PageCount - 1);
|
|
seActivePage.Enabled := Preview.PageCount > 1;
|
|
|
|
bbHelp.Enabled := Preview.IsEnabled(peoHelp);
|
|
bbHelpTopics.Enabled := Preview.IsEnabled(peoHelp);
|
|
|
|
bbViewMargins.Down := Preview.ShowPageMargins;
|
|
bbViewMarginBar.Down := Preview.ShowMarginBar;
|
|
bbViewStatusBar.Down := Preview.ShowStatusBar;
|
|
SetBarItemVisibility(bbViewExplorer, Preview.IsExplorerAvailable);
|
|
bbViewExplorer.Down := Preview.ShowExplorer;
|
|
bbViewThumbnails.Down := Preview.ShowThumbnails;
|
|
bbThumbnailsSmall.Down := Preview.ThumbnailsSize = tsSmall;
|
|
bbThumbnailsLarge.Down := Preview.ThumbnailsSize = tsLarge;
|
|
if ReportLink <> nil then
|
|
begin
|
|
bbViewPageHeaders.Down := ReportLink.ShowPageHeader;
|
|
bbViewPageFooters.Down := ReportLink.ShowPageFooter;
|
|
end;
|
|
|
|
SetBarItemVisibility(bbFileDesign, Preview.IsVisible(pvoReportDesign));
|
|
SetBarItemVisibility(bbFileSave, Preview.IsCommandSaveReportVisible);
|
|
SetBarItemVisibility(bbFileLoad, Preview.IsCommandLoadReportVisible);
|
|
SetBarItemVisibility(bbFileClose, Preview.IsCommandUnloadReportVisible);
|
|
SetBarItemVisibility(bbFilePrint, Preview.IsVisible(pvoPrint));
|
|
SetBarItemVisibility(bbFilePrintDialog, Preview.IsVisible(pvoPrint));
|
|
SetBarItemVisibility(bbFilePageSetup, Preview.IsVisible(pvoPageSetup));
|
|
|
|
SetBarItemVisibility(bbExplorer, Preview.IsExplorerAvailable);
|
|
SetBarItemVisibility(bbExplorerCreateNewFolder, Preview.IsExplorerAvailable);
|
|
SetBarItemVisibility(bbExplorerDelete, Preview.IsExplorerAvailable);
|
|
SetBarItemVisibility(bbExplorerRename, Preview.IsExplorerAvailable);
|
|
SetBarItemVisibility(bbExplorerProperties, Preview.IsExplorerAvailable);
|
|
SetBarItemVisibility(bsiShortcutExplorer, Preview.IsExplorerAvailable);
|
|
|
|
B := (ReportLink <> nil) and (ReportLink.StyleManager <> nil);
|
|
SetBarItemVisibility(bsiInsertHFAutoText, B);
|
|
SetBarItemVisibility(bbInsertEditAutoText, B);
|
|
SetBarItemVisibility(bsiInsertAutoText, B);
|
|
SetBarItemVisibility(bliInsertAutoTextEntries, B);
|
|
SetBarItemVisibility(bbFormatPageBackground, Preview.IsVisible(pvoPageBackground));
|
|
SetBarItemVisibility(bbHelp, Preview.IsVisible(pvoHelp));
|
|
SetBarItemVisibility(bbHelpTopics, Preview.IsVisible(pvoHelp));
|
|
|
|
if seActivePage.Enabled then
|
|
begin
|
|
seActivePage.MinValue := 1;
|
|
if ReportLink <> nil then
|
|
begin
|
|
seActivePage.MaxValue := ReportLink.PageCount;
|
|
seActivePage.Value := ReportLink.VirtualPageIndexToRealPageIndex(
|
|
Preview.Preview.SelPageIndex) + 1;
|
|
end
|
|
end
|
|
else
|
|
seActivePage.Value := -1;
|
|
|
|
if Preview.IsBuilding or Preview.IsPrinting then
|
|
EnableItemsWhileBuilding(False);
|
|
|
|
if HFBar <> nil then
|
|
EnabledHFItems(HFBar.Visible);
|
|
|
|
{ Categories visibility }
|
|
|
|
{ Edit }
|
|
Index := dxBarManager.Categories.IndexOf(DropAmpersand(cxGetResourceString(@sdxMenuEdit)));
|
|
if Index <> -1 then
|
|
dxBarManager.CategoryVisible[Index] := False;
|
|
|
|
{ Help }
|
|
Index := dxBarManager.Categories.IndexOf(DropAmpersand(cxGetResourceString(@sdxMenuHelp)));
|
|
if Index <> -1 then
|
|
dxBarManager.CategoryVisible[Index] :=
|
|
(bbHelpTopics.Visible = ivAlways) or (bbHelpAbout.Visible = ivAlways);
|
|
|
|
{ Shortcut Menus }
|
|
Index := dxBarManager.Categories.IndexOf(DropAmpersand(cxGetResourceString(@sdxMenuShortCutMenus)));
|
|
if Index <> -1 then
|
|
dxBarManager.CategoryVisible[Index] := False;
|
|
|
|
{ Explorer }
|
|
Index := dxBarManager.Categories.IndexOf(DropAmpersand(cxGetResourceString(@sdxMenuExplorer)));
|
|
if Index <> -1 then
|
|
dxBarManager.CategoryVisible[Index] := Preview.IsExplorerAvailable;
|
|
|
|
{ AutoText }
|
|
Bar := dxBarManager.BarByCaption(cxGetResourceString(@sdxAutoTextBar));
|
|
if Bar <> nil then
|
|
Bar.Hidden := not Preview.IsAutoHFTextEntriesAvailable;
|
|
|
|
{ Explorer }
|
|
Bar := dxBarManager.BarByCaption(cxGetResourceString(@sdxExplorerToolBar));
|
|
if Bar <> nil then
|
|
Bar.Hidden := not Preview.IsExplorerAvailable;
|
|
|
|
Preview.UpdateExplorerContextCommands;
|
|
finally
|
|
Preview.CancelUpdate;
|
|
end;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.PreviewUpdateExplorerCommands(Sender: TObject);
|
|
var
|
|
I: Integer;
|
|
begin
|
|
if not (csDestroying in ComponentState) then
|
|
begin
|
|
for I := 0 to ExplorerContextCommandCount - 1 do
|
|
begin
|
|
with ExplorerContextCommands[I] do
|
|
TdxBarButton(Data).Enabled := Enabled;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.PreviewZoomFactorChanged(Sender: TObject);
|
|
begin
|
|
cbxPredefinedZoom.Text := AddPercentageChar(IntToStr(Preview.ZoomFactor));
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.PreviewZoomModeChanged(Sender: TObject);
|
|
begin
|
|
cbxPredefinedZoom.Text := AddPercentageChar(IntToStr(Preview.ZoomFactor));
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.PreviewCanShowMarginHint(Sender: TObject; var AAllow: Boolean);
|
|
begin
|
|
AAllow := ActiveBarControl = nil;
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.PreviewHFTextEntriesChanged(Sender: TObject);
|
|
begin
|
|
if Preview.IsAutoHFTextEntriesAvailable then
|
|
ReportLink.StyleManager.BuildAutoHFTextEntriesMenu(
|
|
bliInsertAutoTextEntries, bbInsertEditAutoText, True);
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.PreviewPreviewDblClick(Sender: TObject);
|
|
begin
|
|
ShowHFBar(False);
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.PreviewHFToolBarVisibleChanged(Sender: TObject; AShow: Boolean);
|
|
begin
|
|
ShowHFBar(AShow);
|
|
end;
|
|
|
|
procedure TdxfmPreviewWdxBar.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
|
|
begin
|
|
CanClose := Preview.CanClosePreviewWindow;
|
|
end;
|
|
|
|
{ TdxPSAdvancedPreviewDialogStyleInfo }
|
|
|
|
class function TdxPSAdvancedPreviewDialogStyleInfo.CreatePreviewWindow: TdxPSCustomPreviewWindow;
|
|
begin
|
|
with TdxfmPreviewWdxBar.Create(nil) do
|
|
Result := Preview;
|
|
end;
|
|
|
|
class function TdxPSAdvancedPreviewDialogStyleInfo.GetName: string;
|
|
begin
|
|
Result := 'Advanced';
|
|
end;
|
|
|
|
class function TdxPSAdvancedPreviewDialogStyleInfo.GetUnitName: string;
|
|
begin
|
|
Result := 'dxPSPrVwAdv';
|
|
end;
|
|
|
|
initialization
|
|
dxPSPopupMenuController.RegisterBuilder(TdxBarPSPopupMenuBuilder);
|
|
dxPSAutoHFTextMenuBuilderFactory.RegisterBuilder(TdxBarPSAutoHFTextMenuBuilder);
|
|
dxPSPageSetupMenuBuilderFactory.RegisterBuilder(TdxBarPSPageSetupMenuBuilder);
|
|
dxPSPreviewDialogManager.RegisterPreviewDialog(TdxPSAdvancedPreviewDialogStyleInfo);
|
|
dxPSGlbl.PSCanShowHintFunc := dxBar_DoesNotHaveActivePopup;
|
|
|
|
finalization
|
|
dxPSGlbl.PSCanShowHintFunc := nil;
|
|
dxPSPreviewDialogManager.UnregisterPreviewDialog(TdxPSAdvancedPreviewDialogStyleInfo);
|
|
dxPSPageSetupMenuBuilderFactory.UnregisterBuilder(TdxBarPSPageSetupMenuBuilder);
|
|
dxPSAutoHFTextMenuBuilderFactory.UnregisterBuilder(TdxBarPSAutoHFTextMenuBuilder);
|
|
dxPSPopupMenuController.UnregisterBuilder(TdxBarPSPopupMenuBuilder);
|
|
|
|
end.
|
|
|
|
|