Componentes.Terceros.DevExp.../official/x.26/ExpressPrinting System/Sources/dxPSPrVwAdv.pas
2007-09-09 11:27:27 +00:00

1718 lines
61 KiB
ObjectPascal

{*******************************************************************}
{ }
{ Developer Express Visual Component Library }
{ ExpressPrinting System(tm) COMPONENT SUITE }
{ }
{ Copyright (C) 1998-2007 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;
type
TdxfmPreviewWdxBar = class(TCustomdxPSPreviewWindow)
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;
ilToolBar: TImageList;
bbZoomWidenToSourceWidth: TdxBarButton;
seActivePage: TdxBarSpinEdit;
pmPreview: TdxBarPopupMenu;
MainMenu1: TMainMenu;
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;
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);
private
FExplorerContextCommands: TList;
function GetExplorerContextCommand(Index: Integer): TCustomdxPSExplorerContextCommand;
function GetExplorerContextCommandCount: Integer;
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);
procedure EnabledHFItems(Value: Boolean);
function HFBar: TdxBar;
procedure ShowHFBar(Value: Boolean);
procedure UpdateHFState(Value: Boolean);
procedure LoadBarManagerFromRegistry(const APath: string);
procedure SaveBarManagerToRegistry(const APath: string);
protected
procedure Activate; override;
procedure WndProc(var Message: TMessage); override;
procedure AddExplorerContextCommand(ACommand: TCustomdxPSExplorerContextCommand); override;
procedure ExplorerContextCommandClick(Sender: TObject); virtual;
procedure UpdateExplorerContextCommands; override;
procedure DoAfterPrintReport(AShowDialog: Boolean); override;
procedure DoPreviewDblClick(APreview: TdxPreview); override;
procedure DoPreviewZoomFactorChanged(APreview: TdxPreview); override;
procedure DoPreviewZoomModeChanged(APreview: TdxPreview); override;
procedure DoShowHFToolBar(Value: Boolean); override;
function GetPreviewCanShowMarginHint(APreview: TdxPreview): Boolean; override;
procedure HFTextEntriesChanged; override;
procedure LoadStrings; override;
procedure StyleListChanged(Sender: TObject); override;
property ExplorerContextCommandCount: Integer read GetExplorerContextCommandCount;
property ExplorerContextCommands[Index: Integer]: TCustomdxPSExplorerContextCommand read GetExplorerContextCommand;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure AfterConstruction; override;
procedure InitContent; override;
procedure LoadFromRegistry(const APath: string); override;
procedure SaveToRegistry(const APath: string); override;
procedure UpdateControls; override;
end;
implementation
{$R *.DFM}
uses
Registry, CommCtrl, Math, cxClasses, dxPSRes, dxPrnPg, dxPSGlbl, dxPSPopupMan,
dxPSUtl, dxPSPgsMnuBld, dxPSEngn, dxPgsDlg, dxPSEvnt, dxPSAutoHFTextMnuBld,
dxPSfmAutoHFTextFmt, dxPrnDev
{$IFDEF EXPRESSBARS5}, cxLookAndFeels, dxThemeManager {$ENDIF};
const
WM_CREATEFOLDER = WM_USER + 5;
PageSelectorImageIndex = 35;
sdxToolBars = '\ToolBars'; // Don't Localize
type
TWinControlAccess = class(TWinControl);
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(const X, Y: Integer; const AControl: TControl;
const APopupMenu: TComponent); override;
class function RequireProcessDoPopup: Boolean; override;
public
constructor Create; override;
destructor Destroy; override;
end;
TdxBarPSPageSetupMenuBuilder = class(TAbstractdxPSPageSetupMenuBuilder)
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 = 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;
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
{$IFDEF EXPRESSBARS5}
BarManagerStyleMap: array[dxPSGlbl.TdxPSLookAndFeel] of dxBar.TdxBarManagerStyle =
(dxBar.bmsEnhanced, dxBar.bmsFlat, dxBar.bmsXP, dxBar.bmsOffice11);
{$ELSE}
BarManagerStyleMap: array[dxPSGlbl.TdxPSLookAndFeel] of dxBar.TdxBarManagerStyle =
(dxBar.bmsEnhanced, dxBar.bmsFlat, dxBar.bmsFlat, dxBar.bmsFlat);
{$ENDIF}
begin
with dxPSEngine do
{$IFDEF EXPRESSBARS5}
if UseNativeLookAndFeel and dxThemeManager.AreVisualStylesAvailable then
begin
ABarManager.Style := dxBar.bmsUseLookAndFeel;
ABarManager.LookAndFeel.NativeStyle := True;
end
else
ABarManager.Style := BarManagerStyleMap[LookAndFeel];
{$ElSE}
ABarManager.Style := BarManagerStyleMap[LookAndFeel];
{$ENDIF}
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(const X, Y: Integer;
const AControl: TControl; const APopupMenu: TComponent);
begin
if APopupMenu is TdxBarPopupMenu then
TdxBarPopupMenu(APopupMenu).Popup(X, Y);
end;
class function TdxBarPSPopupMenuBuilder.RequireProcessDoPopup: Boolean;
begin
Result := True;
end;
{ TdxBarPSPageSetupMenuBuilder }
class function TdxBarPSPageSetupMenuBuilder.ExtractPrintStyleFromObj(Obj: TObject): TBasedxPrintStyle;
begin
with TdxBarListItem(Obj) do
Result := TBasedxPrintStyle(Items.Objects[ItemIndex]);
end;
procedure TdxBarPSPageSetupMenuBuilder.BuildPageSetupMenu(ARootItem: TObject;
AData: Pointer; AIncludeDefineItem: Boolean;
AStyles: TStringList; ACurrentStyle: TBasedxPrintStyle;
AOnStyleClick, AOnDefineStylesClick: TNotifyEvent);
begin
if not (ARootItem is TdxBarListItem) then Exit;
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;
SetupBarManagerStyle(dxBarManager);
end;
destructor TdxfmPreviewWdxBar.Destroy;
begin
FreeAndNil(FExplorerContextCommands);
inherited;
end;
procedure TdxfmPreviewWdxBar.AfterConstruction;
var
Bar: TdxBar;
begin
inherited;
cbxPredefinedZoom.DropDownCount := PredefinedZooms.Count;
seActivePage.Value := 1;
ShowHFBar(False);
Bar := ShortCutBar;
if Bar <> nil then Bar.Hidden := True;
dxBarManager.PopupMenuLinks[0].Control := Preview;
dxBarManager.PopupMenuLinks[1].Control := ThumbnailsPreview;
end;
procedure TdxfmPreviewWdxBar.InitContent;
procedure AddEndEllipsis(AnItem: TdxBarButton);
begin
with AnItem do
if AnsiLastChar(Caption) <> '.' then Caption := dxPSUtl.AddEndEllipsis(Caption);
end;
begin
inherited;
if ReportLink <> nil then
seActivePage.MaxValue := ReportLink.PageCount;
cbxPredefinedZoom.Text := IntToStr(ZoomFactor) + PercentSymbol;
if IsExplorerAvailable then
TWinControlAccess(ExplorerTree.Control).OnMouseUp := DoShowExplorerPopup;
if not IsExplorerAvailable then
begin
AddEndEllipsis(bbFileSave);
AddEndEllipsis(bbFileLoad);
end;
end;
procedure TdxfmPreviewWdxBar.LoadFromRegistry(const APath: string);
begin
inherited;
LoadBarManagerFromRegistry(APath);
end;
procedure TdxfmPreviewWdxBar.SaveToRegistry(const APath: string);
begin
inherited;
SaveBarManagerToRegistry(APath);
end;
procedure TdxfmPreviewWdxBar.UpdateControls;
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;
inherited;
PagesExists := FPreview.PageCount > 0;
BeginUpdate;
try
EnableItemsWhileBuilding(True);
bbFileDesign.Enabled := CanDesign;
bbFileRebuild.Enabled := CanRebuild;
bbFileSave.Enabled := CanSaveReport;
bbFileLoad.Enabled := CanLoadReport;
bbFileClose.Enabled := CanUnloadReport;
bbFilePrint.Enabled := CanPrint;
bbFilePrintDialog.Enabled := CanPrintDialog;
bbFilePageSetup.Enabled := CanPageSetup;
bbFilePageSetup.ButtonStyle := ButtonStyles[CanPrintStyle];
bbFileExit.Enabled := not IsPrinting;
bbExplorer.Enabled := IsExplorerAvailable;
bbExplorerCreateNewFolder.Enabled := IsExplorerAvailable and ExplorerTree.CanCreateFolder;
bbExplorerDelete.Enabled := IsExplorerAvailable and ExplorerTree.CanDeleteSelection;
bbExplorerRename.Enabled := IsExplorerAvailable and ExplorerTree.CanRenameSelectedItem;
bbExplorerProperties.Enabled := IsExplorerAvailable and ExplorerTree.CanShowPropertySheetsForSelectedItem;
bbFormatShowHideEmptyPages.Down := (ReportLink <> nil) and ReportLink.ShowEmptyPages;
bbFormatTitle.Enabled := (ReportLink <> nil) and ReportLink.CanChangeTitle;
bbFormatPageBackground.Enabled := IsEnabled(peoPageBackground) and not IsPrinting;
bbFormatShrinkToPageWidth.Enabled := PagesExists and not 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 (FPreview.PageCount > 1);
bbZoomFourPages.Enabled := PagesExists and (FPreview.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 (FPreview.SelPageIndex <> 0);
bbGoToPrevPage.Enabled := PagesExists and (Preview.SelPageIndex <> 0);
bbGoToNextPage.Enabled := PagesExists and (Preview.SelPageIndex <> FPreview.PageCount - 1);
bbGoToLastPage.Enabled := PagesExists and (Preview.SelPageIndex <> FPreview.PageCount - 1);
seActivePage.Enabled := Preview.PageCount > 1;
bbHelp.Enabled := IsEnabled(peoHelp);
bbHelpTopics.Enabled := IsEnabled(peoHelp);
//bbHelpAbout.Enabled := IsEnabled(peoHelp);
bbViewMargins.Down := ShowPageMargins;
bbViewMarginBar.Down := ShowMarginBar;
bbViewStatusBar.Down := ShowStatusBar;
SetBarItemVisibility(bbViewExplorer, IsExplorerAvailable);
bbViewExplorer.Down := ShowExplorer;
bbViewThumbnails.Down := ShowThumbnails;
bbThumbnailsSmall.Down := ThumbnailsSize = tsSmall;
bbThumbnailsLarge.Down := ThumbnailsSize = tsLarge;
if ReportLink <> nil then
begin
bbViewPageHeaders.Down := ReportLink.ShowPageHeader;
bbViewPageFooters.Down := ReportLink.ShowPageFooter;
end;
SetBarItemVisibility(bbFileDesign, IsVisible(pvoReportDesign));
SetBarItemVisibility(bbFileSave, IsCommandSaveReportVisible);
SetBarItemVisibility(bbFileLoad, IsCommandLoadReportVisible);
SetBarItemVisibility(bbFileClose, IsCommandUnloadReportVisible);
SetBarItemVisibility(bbFilePrint, IsVisible(pvoPrint));
SetBarItemVisibility(bbFilePrintDialog, IsVisible(pvoPrint));
SetBarItemVisibility(bbFilePageSetup, IsVisible(pvoPageSetup));
SetBarItemVisibility(bbExplorer, IsExplorerAvailable);
SetBarItemVisibility(bbExplorerCreateNewFolder, IsExplorerAvailable);
SetBarItemVisibility(bbExplorerDelete, IsExplorerAvailable);
SetBarItemVisibility(bbExplorerRename, IsExplorerAvailable);
SetBarItemVisibility(bbExplorerProperties, IsExplorerAvailable);
SetBarItemVisibility(bsiShortcutExplorer, IsExplorerAvailable);
B := (ReportLink <> nil) and (ReportLink.StyleManager <> nil);
SetBarItemVisibility(bsiInsertHFAutoText, B);
SetBarItemVisibility(bbInsertEditAutoText, B);
SetBarItemVisibility(bsiInsertAutoText, B);
SetBarItemVisibility(bliInsertAutoTextEntries, B);
SetBarItemVisibility(bbFormatPageBackground, IsVisible(pvoPageBackground));
SetBarItemVisibility(bbHelp, IsVisible(pvoHelp));
SetBarItemVisibility(bbHelpTopics, IsVisible(pvoHelp));
//SetBarItemVisibility(bbHelpAbout, IsVisible(pvoHelp));
if seActivePage.Enabled then
begin
seActivePage.MinValue := 1;
if ReportLink <> nil then
begin
seActivePage.MaxValue := ReportLink.PageCount;
seActivePage.Value := ReportLink.VirtualPageIndexToRealPageIndex(FPreview.SelPageIndex) + 1;
end
end
else
seActivePage.Value := -1;
if IsBuilding or 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] := IsExplorerAvailable;
{ AutoText }
Bar := dxBarManager.BarByCaption(cxGetResourceString(@sdxAutoTextBar));
if Bar <> nil then
Bar.Hidden := not IsAutoHFTextEntriesAvailable;
{ Explorer }
Bar := dxBarManager.BarByCaption(cxGetResourceString(@sdxExplorerToolBar));
if Bar <> nil then
Bar.Hidden := not IsExplorerAvailable;
UpdateExplorerContextCommands;
finally
CancelUpdate;
end;
end;
procedure TdxfmPreviewWdxBar.bbViewMarginsClick(Sender: TObject);
begin
if Locked then Exit;
ShowPageMargins := TdxBarButton(Sender).Down;
end;
procedure TdxfmPreviewWdxBar.bbViewMarginBarClick(Sender: TObject);
begin
if Locked then Exit;
ShowMarginBar := TdxBarButton(Sender).Down;
end;
procedure TdxfmPreviewWdxBar.bbViewStatusBarClick(Sender: TObject);
begin
if Locked then Exit;
ShowStatusBar := TdxBarButton(Sender).Down;
end;
procedure TdxfmPreviewWdxBar.bbViewExplorerClick(Sender: TObject);
begin
if Locked then Exit;
ShowExplorer := TdxBarButton(Sender).Down;
end;
procedure TdxfmPreviewWdxBar.pmExplorerPopup(Sender: TObject);
begin
UpdateControls;
end;
procedure TdxfmPreviewWdxBar.bbThumbnailsSizeClick(Sender: TObject);
begin
ThumbnailsSize := TdxPSThumbnailsSize(TTagToInt(TComponent(Sender).Tag));
end;
procedure TdxfmPreviewWdxBar.bbViewThumbnailsClick(Sender: TObject);
begin
if Locked then Exit;
ShowThumbnails := TdxBarButton(Sender).Down;
end;
procedure TdxfmPreviewWdxBar.DesignClick(Sender: TObject);
begin
DoDesignReport;
end;
procedure TdxfmPreviewWdxBar.bbFileRebuildClick(Sender: TObject);
begin
if CanRebuild then RebuildReport;
end;
procedure TdxfmPreviewWdxBar.PrintClick(Sender: TObject);
const
BtnClicked: Boolean = False;
begin
if BtnClicked then Exit;
ProcessMessages;
BtnClicked := True;
try
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
DoPageSetupReport(0);
finally
BtnClicked := False;
end;
end;
procedure TdxfmPreviewWdxBar.FileSaveClick(Sender: TObject);
begin
DoExplorerCreateNewItem;
end;
procedure TdxfmPreviewWdxBar.ExplorerLoadDataClick(Sender: TObject);
begin
ProcessMessages;
DoExplorerLoadItemData;
end;
procedure TdxfmPreviewWdxBar.bbFileCloseClick(Sender: TObject);
begin
ProcessMessages;
DoExplorerUnloadItemData;
end;
procedure TdxfmPreviewWdxBar.ExplorerCreateNewFolderClick(Sender: TObject);
begin
ExplorerTree.FocusedItem := ExplorerTree.SelectedItem;
PostCreateFolderMessage;
end;
procedure TdxfmPreviewWdxBar.PostCreateFolderMessage;
begin
PostMessage(Handle, WM_CREATEFOLDER, 0, 0);
end;
procedure TdxfmPreviewWdxBar.ExplorerDeleteItemClick(Sender: TObject);
begin
ProcessMessages;
DoExplorerDeleteItem;
end;
procedure TdxfmPreviewWdxBar.ExplorerRenameItemClick(Sender: TObject);
begin
ProcessMessages;
DoExplorerRenameItem;
end;
procedure TdxfmPreviewWdxBar.bbExplorerPropertiesClick(
Sender: TObject);
begin
DoExplorerItemShowPropertySheets;
end;
procedure TdxfmPreviewWdxBar.PageBackgroundClick(Sender: TObject);
begin
ProcessMessages;
DoShowPageBackgroundDlg(CalcWindowPos(Sender));
end;
procedure TdxfmPreviewWdxBar.bbFormatShrinkToPageWidthClick(Sender: TObject);
begin
if ReportLink <> nil then
begin
ReportLink.ShrinkToPageWidth := not ReportLink.ShrinkToPageWidth;
DoShrinkToPageWidth(ReportLink.ShrinkToPageWidth);
end;
end;
procedure TdxfmPreviewWdxBar.bbFormatShowHideEmptyPagesClick(Sender: TObject);
begin
if Locked then Exit;
DoShowEmptyPages(TdxBarButton(Sender).Down);
end;
procedure TdxfmPreviewWdxBar.bbZoomSetupClick(Sender: TObject);
begin
ProcessMessages;
DoShowZoomDlg;
end;
procedure TdxfmPreviewWdxBar.cbxPredefinedZoomClick(Sender: TObject);
begin
ProcessMessages;
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;
DoShowMultiplySelectPagesDlg(ilToolBar, PageSelectorImageIndex, R.TopLeft, YShift);
end;
procedure TdxfmPreviewWdxBar.GoToPageClick(Sender: TObject);
begin
case TTagToInt(TComponent(Sender).Tag) of
0: GoToFirstPage;
1: GoToPrevPage;
2: GoToNextPage;
3: GoToLastPage;
end;
end;
procedure TdxfmPreviewWdxBar.CloseClick(Sender: TObject);
begin
Close;
end;
procedure TdxfmPreviewWdxBar.HelpClick(Sender: TObject);
begin
ProcessMessages;
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
ExplorerTree.SelectedItem := ExplorerTree.FocusedItem;
DoExplorerCreateNewFolder;
end
else
inherited;
end;
procedure TdxfmPreviewWdxBar.AddExplorerContextCommand(ACommand: TCustomdxPSExplorerContextCommand);
procedure AddBarControl(AnItemLinks: TdxBarItemLinks; ABarButton: TdxBarButton);
begin
with AnItemLinks.Add do
begin
Item := ABarButton;
Index := 0;
BringToTopInRecentList(True);
end;
end;
procedure BeginGroup(AnItemLinks: TdxBarItemLinks);
begin
if AnItemLinks.Count <> 0 then
AnItemLinks[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.ExplorerContextCommandClick(Sender: TObject);
var
Command: TCustomdxPSExplorerContextCommand;
CommandSet2: IdxPSExplorerContextCommands2;
begin
Command := TCustomdxPSExplorerContextCommand(TTagToObj(TdxBarButton(Sender).Tag));
if Supports(TObject(Explorer), IdxPSExplorerContextCommands2, CommandSet2) then
begin
CommandSet2.InitializeCommand(Command);
try
if Command.Enabled then Command.Execute; {.1}
finally
CommandSet2.FinalizeCommand(Command);
end;
end;
UpdateControls;
end;
procedure TdxfmPreviewWdxBar.UpdateExplorerContextCommands;
var
I: Integer;
begin
if not (csDestroying in ComponentState) then
for I := 0 to ExplorerContextCommandCount - 1 do
with ExplorerContextCommands[I] do
TdxBarButton(Data).Enabled := Enabled;
end;
procedure TdxfmPreviewWdxBar.DoAfterPrintReport(AShowDialog: Boolean);
begin
if AShowDialog then
bbFilePrint.Hint := cxGetResourceString(@sdxHintFilePrint) + GetCurrentPrinterAsHint;
end;
procedure TdxfmPreviewWdxBar.DoPreviewDblClick(APreview: TdxPreview);
begin
ShowHFBar(False);
end;
procedure TdxfmPreviewWdxBar.DoPreviewZoomFactorChanged(APreview: TdxPreview);
begin
cbxPredefinedZoom.Text := AddPercentageChar(IntToStr(ZoomFactor));
end;
procedure TdxfmPreviewWdxBar.DoPreviewZoomModeChanged(APreview: TdxPreview);
begin
cbxPredefinedZoom.Text := AddPercentageChar(IntToStr(ZoomFactor));
end;
function TdxfmPreviewWdxBar.GetPreviewCanShowMarginHint(APreview: TdxPreview): Boolean;
begin
Result := ActiveBarControl = nil;
end;
procedure TdxfmPreviewWdxBar.HFTextEntriesChanged;
begin
if IsAutoHFTextEntriesAvailable then
ReportLink.StyleManager.BuildAutoHFTextEntriesMenu(bliInsertAutoTextEntries, bbInsertEditAutoText, True);
end;
procedure TdxfmPreviewWdxBar.LoadStrings;
begin
inherited;
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({$IFNDEF CLR}@{$ENDIF}sdxMenuFilePrintSetup);
bliPrintStyles.Caption := cxGetResourceString(@sdxMenuPrintStyles);
bbFilePageSetup.Caption := cxGetResourceString(@sdxMenuFilePageSetup);
bbFileExit.Caption := cxGetResourceString(@sdxMenuFileExit);
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);
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({$IFNDEF CLR}@{$ENDIF}sdxHintFilePrintSetup);
bbFilePageSetup.Hint := cxGetResourceString(@sdxHintFilePageSetup);
bbFileExit.Hint := cxGetResourceString(@sdxHintFileExit);
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);
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.StyleListChanged(Sender: TObject);
begin
if Sender = ReportLink.StyleManager then
ReportLink.BuildPageSetupMenu(bliPrintStyles, bbDefinePrintStyles, True);
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;
DoSetupZoomFactor(100, PageXCount, PageYCount, ZoomMode);
end;
procedure TdxfmPreviewWdxBar.SetBarItemVisibility(Item: TdxBarItem; Value: Boolean);
begin
Item.Visible := VisibleToBarItemVisible(Value);
end;
procedure TdxfmPreviewWdxBar.DoShowHFToolBar(Value: Boolean);
begin
ShowHFBar(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);
DoActivePageChanged(V - 1);
end;
procedure TdxfmPreviewWdxBar.seActivePageButtonClick(
Sender: TdxBarSpinEdit; Button: TdxBarSpinEditButton);
begin
if Locked then Exit;
case Button of
sbUp:
GoToNextPage;
sbDown:
GoToPrevPage;
end;
end;
procedure TdxfmPreviewWdxBar.cbxPredefinedZoomChange(Sender: TObject);
begin
SetZoomFactorByText(cbxPredefinedZoom.Text);
if cbxPredefinedZoom.DroppedDown then Windows.SetFocus(Preview.Handle);
UpdateControls;
cbxPredefinedZoom.Text := AddPercentageChar(IntToStr(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
DoShowHFToolBar(False);
end;
procedure TdxfmPreviewWdxBar.bbFormatHeaderAndFooterClick(Sender: TObject);
begin
DoShowHFToolBar(TdxBarButton(Sender).Down);
end;
procedure TdxfmPreviewWdxBar.InsertHFClick(Sender: TObject);
begin
DoInsertHF(HFFunctionList[TTagToInt(TComponent(Sender).Tag)]);
end;
procedure TdxfmPreviewWdxBar.bbFormatHFClearClick(Sender: TObject);
begin
DoClearHF;
end;
procedure TdxfmPreviewWdxBar.bbViewHFSwitchHeaderFooterClick(Sender: TObject);
begin
if TdxBarButton(Sender).Down then
State := prsEditFooters
else
State := prsEditHeaders;
end;
procedure TdxfmPreviewWdxBar.bbFormatDateTimeClick(Sender: TObject);
begin
ProcessMessages;
DoShowFormatDateTimeDlg;
end;
procedure TdxfmPreviewWdxBar.bbFormatTitleClick(Sender: TObject);
begin
ProcessMessages;
DoFormatTitle;
end;
procedure TdxfmPreviewWdxBar.bbFormatPageNumbersClick(Sender: TObject);
begin
ProcessMessages;
DoShowFormatPageNumbersDlg;
end;
procedure TdxfmPreviewWdxBar.SwitchPartClick(Sender: TObject);
begin
HFEditPart := TdxPageTitlePart(TTagToInt(TdxBarButton(Sender).Tag));
end;
procedure TdxfmPreviewWdxBar.bbFormatHFBackgroundClick(Sender: TObject);
begin
ProcessMessages;
DoShowHFBackgroundDlg(CalcWindowPos(Sender));
end;
procedure TdxfmPreviewWdxBar.bbViewPageHeadersClick(Sender: TObject);
begin
if Locked then Exit;
DoShowPageHeaders(TdxBarButton(Sender).Down);
end;
procedure TdxfmPreviewWdxBar.bbViewPageFootersClick(Sender: TObject);
begin
if Locked then Exit;
DoShowPageFooters(TdxBarButton(Sender).Down);
end;
procedure TdxfmPreviewWdxBar.bbToolsCustomizeClick(Sender: TObject);
begin
dxBarManager.Customizing(True);
end;
procedure TdxfmPreviewWdxBar.bbToolsOptionsClick(Sender: TObject);
begin
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.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);
if Preview <> nil then
if Value then
Preview.OptionsZoom := Preview.OptionsZoom - [pozZoomOnClick]
else
Preview.OptionsZoom := Preview.OptionsZoom + [pozZoomOnClick];
bbFormatHeaderAndFooter.Down := Value;
if Value then
if bbViewHFSwitchHeaderFooter.Down then
State := prsEditFooters
else
State := prsEditHeaders
else
State := prsNone;
end;
procedure TdxfmPreviewWdxBar.LoadBarManagerFromRegistry(const APath: string);
var
IsSameVersion: Boolean;
begin
with TRegistry.Create do
try
IsSameVersion := OpenKey(APath + '\Version', False);
if IsSameVersion then
try
IsSameVersion := ValueExists('Major') and ValueExists('Minor');
if IsSameVersion then
IsSameVersion := (ReadInteger('Major') = dxPSVerMajor) and
(ReadInteger('Minor') = dxPSVerMinor);
except
on ERegistryException do
IsSameVersion := False
else
raise;
end;
finally
Free;
end;
if IsSameVersion then
begin
dxBarManager.LoadFromRegistry(APath + sdxToolBars);
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.SaveBarManagerToRegistry(const APath: string);
begin
with TRegistry.Create do
try
if OpenKey(APath + '\Version', True) then
try
WriteInteger('Major', dxPSVerMajor);
WriteInteger('Minor', dxPSVerMinor);
except
on ERegistryException do
else
raise;
end;
finally
Free;
end;
dxBarManager.SaveToRegistry(APath + sdxToolBars);
end;
procedure TdxfmPreviewWdxBar.TimerHintTimer(Sender: TObject);
begin
bbFilePrint.Hint := cxGetResourceString(@sdxHintFilePrint) + GetCurrentPrinterAsHint;
TTimer(Sender).Enabled := False;
end;
initialization
dxPSPopupMenuController.RegisterBuilder(TdxBarPSPopupMenuBuilder);
dxPSAutoHFTextMenuBuilderFactory.RegisterBuilder(TdxBarPSAutoHFTextMenuBuilder);
dxPSPageSetupMenuBuilderFactory.RegisterBuilder(TdxBarPSPageSetupMenuBuilder);
dxPSRegisterPreviewWindow(TdxfmPreviewWdxBar);
dxPSGlbl.PSCanShowHintFunc := dxBar_DoesNotHaveActivePopup;
finalization
dxPSGlbl.PSCanShowHintFunc := nil;
dxPSUnregisterPreviewWindow(TdxfmPreviewWdxBar);
dxPSPageSetupMenuBuilderFactory.UnregisterBuilder(TdxBarPSPageSetupMenuBuilder);
dxPSAutoHFTextMenuBuilderFactory.UnregisterBuilder(TdxBarPSAutoHFTextMenuBuilder);
dxPSPopupMenuController.UnregisterBuilder(TdxBarPSPopupMenuBuilder);
end.