⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rm_designer.pas

📁 这是一个功能强大
💻 PAS
📖 第 1 页 / 共 5 页
字号:
    itmFileFile1: TRMmenuItem;
    itmFileFile2: TRMmenuItem;
    itmFileFile3: TRMmenuItem;
    itmFileFile4: TRMmenuItem;
    itmFileFile5: TRMmenuItem;
    itmFileFile6: TRMmenuItem;
    itmFileFile7: TRMmenuItem;
    itmFileFile8: TRMmenuItem;
    itmFileFile9: TRMmenuItem;
    N1: TRMSeparatorMenuItem;
    padFileExit: TRMmenuItem;

    FBarSearch: TRMSubmenuItem;
    padSearchFind: TRMMenuItem;
    padSearchReplace: TRMMenuItem;
    padSearchFindAgain: TRMMenuItem;

    FBarHelp: TRMSubmenuItem;
    padHelp: TRMmenuItem;
    N18: TRMSeparatorMenuItem;
    padAbout: TRMmenuItem;
    padSep: TRMSeparatorMenuItem;
    padLanguage: TRMSubmenuItem;
    //MenuBar End

    FToolbarStandard: TRMToolbarStandard;
    FToolbarModifyPrepared: TRMToolbarModifyPrepared;

    procedure padHelpClick(Sender: TObject);
    procedure padFilePropertyClick(Sender: TObject);
    procedure btnPageSetupClick(Sender: TObject);
    procedure btnFileSaveClick(Sender: TObject);
    procedure padPrintClick(Sender: TObject);
    procedure btnExitClick(Sender: TObject);
    procedure btnPasteClick(Sender: TObject);
    procedure padAboutClick(Sender: TObject);
    procedure padFileNewClick(Sender: TObject);
    procedure padVarListClick(Sender: TObject);
    procedure LoadDictionary1Click(Sender: TObject);
    procedure MergeDictionary1Click(Sender: TObject);
    procedure SaveAsDictionary1Click(Sender: TObject);
    procedure itmFileFile9Click(Sender: TObject);
    procedure btnFileOpenClick(Sender: TObject);
    procedure btnFileNewClick(Sender: TObject);
    procedure padFileSaveAsClick(Sender: TObject);
    procedure btnPreviewClick(Sender: TObject);
    procedure btnCutClick(Sender: TObject);
    procedure btnCopyClick(Sender: TObject);
    procedure btnAddPageClick(Sender: TObject);
    procedure btnAddFormClick(Sender: TObject);
    procedure btnDeletePageClick(Sender: TObject);
    procedure btnUndoClick(Sender: TObject);
    procedure btnRedoClick(Sender: TObject);
    procedure padSearchFindClick(Sender: TObject);
    procedure padSearchReplaceClick(Sender: TObject);
    procedure padSearchFindAgainClick(Sender: TObject);
    procedure MenuFilePreview1Click(Sender: TObject);
    procedure MenuFileHeaderFooterClick(Sender: TObject);

    procedure OnFieldsDialogCloseEvnet(Sender: TObject);

    procedure Localize;
    procedure SaveIni;
    procedure LoadIni;
    function FileSave: Boolean;
    function FileSaveAs: Boolean;
    procedure CreateDefaultPage;

    procedure Tab1Change(Sender: TObject);
    procedure Tab1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
    procedure Tab1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure Tab1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure Tab1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
    procedure Tab1DragDrop(Sender, Source: TObject; X, Y: Integer);
{$IFDEF Raize}
    procedure Tab1Changing(Sender: TObject; NewIndex: Integer; var AllowChange: Boolean);
{$ELSE}
    procedure Tab1Changing(Sender: TObject; var AllowChange: Boolean);
{$ENDIF}

    procedure SetCurDocName(Value: string);
    procedure OnInspBeforeModify(Sender: TObject; const aPropName: string);
    procedure OnInspAfterModify(Sender: TObject; const aPropName, aPropValue: string);

    procedure GB1Click(Sender: TObject);
    procedure GB2Click(Sender: TObject);
    procedure GB3Click(Sender: TObject);

    procedure SetOpenFileMenuItems(const aNewFile: string);

    procedure OnDockRequestDockEvent(Sender: TObject; Bar: TRMCustomDockableWindow; var Accept: Boolean);
    procedure OnFormMouseWheelUpEvent(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
    procedure OnFormMouseWheelDownEvent(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
    procedure OnLanguageItemClick(Sender: TObject);

    procedure OpenFile(aFileName: string);
    procedure SetGridShow(Value: Boolean);
    procedure SetGridAlign(Value: Boolean);
    procedure SetGridSize(Value: Integer);
  protected
    function GetModified: Boolean; override;
    procedure SetModified(Value: Boolean); override;
    procedure SetFactor(Value: Integer); override;
    function GetDesignerRestrictions: TRMDesignerRestrictions; override;
    procedure SetDesignerRestrictions(Value: TRMDesignerRestrictions); override;
  public
    { Public declarations }
    FirstSelected: TRMView;
    SelNum: Integer; // number of objects currently selected
    Dock971: TRMDock;
    Dock972: TRMDock;
    Dock973: TRMDock;
    Dock974: TRMDock;
    ObjID: Integer;
    SaveDesignerRestrictions: TRMDesignerRestrictions;
    UndoBuffer, RedoBuffer: TRMUndoBuffer;

    procedure ClearUndoBuffer;
    procedure ClearRedoBuffer;
    procedure ReleaseAction(aActionRec: PRMUndoRec);

    procedure BeforeChange; override;
    procedure AfterChange; override;
    function InsertDBField(t: TRMView): string; override;
    function InsertExpression(t: TRMView): string; override;
    procedure InspSelectionChanged(ObjName: string);

    procedure RMMemoViewEditor(t: TRMView); override;
    procedure RMFontEditor(Sender: TObject); override;
    procedure RMDisplayFormatEditor(Sender: TObject); override;
    procedure RMPictureViewEditor(t: TRMView); override;
    procedure RMCalcMemoEditor(Sender: TObject); override;

    procedure AddLanguageMenu(aParentMenu: TRMSubmenuItem);
    function EditorForm: TForm; override;
    function GetParentBand(t: TRMReportView): TRMReportView;
    procedure EnableControls; override;
    procedure InspGetObjects(List: TStrings);
    procedure SetObjectsID;
    procedure DoClick(Sender: TObject);

    function PageSetup(aRepaint: Boolean): Boolean;
    function RMCheckBand(b: TRMBandType): Boolean;
    function IsSubreport(PageN: Integer): TRMView;
    function TopSelected: Integer;
    procedure SetObjectID(t: TRMView);
    procedure RedrawPage;
    procedure UnSelectAll;
    function Objects: TList;
    procedure ShowPosition; override;
    function PageObjects: TList; override;

    procedure SetPageTabs;
    procedure SetCurPage(Value: Integer);
    procedure ResetSelection;
    procedure AddUndoAction(aAction: TRMUndoAction);
    procedure SetOldCurPage(Value: Integer);
    procedure SetControlsEnabled(const Ar: array of TObject; aEnabled: Boolean);

    property MenuFileHeaderFooter: TRMMenuItem read FMenuFileHeaderFooter;
    property UndoBufferLength: Integer read FUndoBufferLength write FUndoBufferLength;
    property RedoBufferLength: Integer read FRedoBufferLength write FRedoBufferLength;
    property ToolbarModifyPrepared: TRMToolbarModifyPrepared read FToolbarModifyPrepared;
    property ToolbarStandard: TRMToolbarStandard read FToolbarStandard;
    property MainMenu: TRMMenuBar read FMainMenu;
    property BarFile: TRMSubmenuItem read FBarFile;
    property BarSearch: TRMSubmenuItem read FBarSearch;
    property BarHelp: TRMSubmenuItem read FBarHelp;
    property Busy: Boolean read FBusy write FBusy; // busy flag. need!
    property InspBusy: Boolean read FInspBusy write FInspBusy;
    property CurPageEditor: TRMCustomPageEditor read FCurPageEditor;
    property FieldForm: TRMInsFieldsForm read FFieldForm;
    property InspForm: TRMInspForm read FInspForm;
    property CurPage: Integer read FCurPage write SetCurPage;
    property CurDocName: string read FCurDocName write SetCurDocName;
    property AutoOpenLastFile: Boolean read FAutoOpenLastFile write FAutoOpenLastFile;
    property WorkSpaceColor: TColor read FWorkSpaceColor write FWorkSpaceColor;
    property InspFormColor: TColor read FInspFormColor write FInspFormColor;
    property UnlimitedHeight: Boolean read FUnlimitedHeight write FUnlimitedHeight;
    property GridAlign: Boolean read FGridAlign write SetGridAlign;
    property GridSize: Integer read FGridSize write SetGridSize;
    property ShowGrid: Boolean read FShowGrid write SetGridShow;
  end;

procedure RMAssignImages(aSrcBmp: TBitmap; aDstImgList: TImageList); overload;
procedure RMAssignImages(aRes: string; aDstImgList: TImageList); overload;
procedure RMAddLanguageDll(aDllFileName: string; aCaption: string);

var
  RM_LastFontName: string;
  RM_LastFontSize: Integer;
  RM_LastFontCharset: Word;
  RM_LastFontStyle: Word;
  RM_LastFontColor: TColor;
  RM_LastHAlign: TRMHAlign;
  RM_LastVAlign: TRMVAlign;
  RM_LastFillColor: TColor;
  RM_LastFrameWidth: Integer;
  RM_LastFrameColor: TColor;
  RM_LastLeftFrameVisible: Boolean;
  RM_LastTopFrameVIsible: Boolean;
  RM_LastRightFrameVisible: Boolean;
  RM_LastBottomFrameVisible: Boolean;
  RM_CurLanguage: string = '';

  RM_Dsg_LastDataSet: string = '';
  RMTemplateDir: string = '';

  RMDesignerComp: TRMDesigner = nil;

implementation

{$R *.DFM}

uses
  ShellApi,
  RM_DsgForm, Registry, RM_Const, RM_Const1, RM_Utils, RM_EditorMemo, RM_EditorPicture, RM_EditorField,
  RM_EditorExpr, RM_PageSetup, RM_EditorReportProp, RM_DesignerOptions, RM_Printer, RM_About,
  RM_EditorFormat, RM_EditorDictionary, RM_EditorFindReplace, RM_EditorTemplate,
  RM_EditorCalc, RM_Wizard, RM_WizardNewReport
{$IFDEF USE_SYNEDIT}
  ,RM_EditorConfirmReplace, RM_EditorReplaceText, RM_EditorSearchText
{$ENDIF}
  ;

const
  rsGridShow = 'GridShow';
  rsGridAlign = 'GridAlign';
  rsGridSize = 'GridSize';
  rsUnits = 'Units';
  rsEdit = 'EditAfterInsert';
  rsBandTitles = 'BandTitles';
  rsAutoOpenLastFile = 'AutoOpenLastFile';
  rsWorkSpaceColor = 'WorkSpaceColor';
  rsInspFormColor = 'InspFormColor';
  rsLocalizedPropertyName = 'LocalizedPropertyName';
  rsShowDropDownField = 'ShowDropDownField';
  rsLanguage = 'Language';

type
  THackView = class(TRMView)
  end;

  THackPage = class(TRMCustomPage)
  end;

  THackReportPage = class(TRMReportPage)
  end;

  THackReport = class(TRMReport)
  end;

var
  FEditAfterInsert: Boolean;
  FLanguageList: TStringList = nil;
  FLanguageNameList: TStringList = nil;

procedure RMAssignImages(aSrcBmp: TBitmap; aDstImgList: TImageList);
var
  lBmp: TBitmap;
  lLeft, lTop: Integer;
  lWidth, lHeight: Integer;
begin
  lWidth := aDstImgList.Width;
  lHeight := aDstImgList.Height;
  lBmp := TBitmap.Create;
  try
    lBmp.Width := lWidth;
    lBmp.Height := lHeight;
    lTop := 0;
    while lTop < aSrcBmp.Height do
    begin
      lLeft := 0;
      while lLeft < aSrcBmp.Width do
      begin
        lBmp.Canvas.CopyRect(Rect(0, 0, lWidth, lHeight), aSrcBmp.Canvas,
          Rect(lLeft, lTop, lLeft + lWidth, lTop + lHeight));

        aDstImgList.AddMasked(lBmp, lBmp.TransparentColor);
        lLeft := lLeft + lWidth;
      end;

      lTop := lTop + lHeight;
    end;
  finally
    lBmp.Free;
  end;
end;

procedure RMAssignImages(aRes: string; aDstImgList: TImageList);
var
  lBmp: TBitmap;
begin
  lBmp := TBitmap.Create;
  try
    lBmp.LoadFromResourceName(hInstance, aRes);
    RMAssignImages(lBmp, aDstImgList);
  finally
    lBmp.Free;
  end;
end;

{------------------------------------------------------------------------------}
{------------------------------------------------------------------------------}
{TRMDesigner}

constructor TRMDesigner.Create(AOwner: TComponent);
begin
  //  if Assigned(FDesignerComp) then
  //    raise Exception.Create('You already have one TRMDesigner component');
  inherited Create(AOwner);

  FDefaultPageClass := '';
  RMDesignerComp := Self;
  FOpenFileCount := 4;
  FDefaultDictionaryFile := '';
  FUseUndoRedo := True;
end;

destructor TRMDesigner.Destroy;
begin
  RMDesignerComp := nil;
  inherited Destroy;
end;

procedure TRMDesigner.SetOpenFileCount(Value: Integer);
begin
  if (Value >= 0) and (Value <= 9) then
    FOpenFileCount := Value;
end;

procedure TRMDesigner.SetDesignerRestrictions(Value: TRMDesignerRestrictions);
begin
  FDesignerRestrictions := Value;
end;

{------------------------------------------------------------------------------}
{------------------------------------------------------------------------------}
{ TRMCustomPageEditor }

constructor TRMCustomPageEditor.CreateComp(aOwner: TComponent;
  aDesignerForm: TRMDesignerForm);
begin
  inherited Create(aOwner);

  FDesignerForm := aDesignerForm;
end;

destructor TRMCustomPageEditor.Destroy;
begin
  inherited Destroy;
end;

procedure TRMCustomPageEditor.Editor_Localize;
begin
  //
end;

procedure TRMCustomPageEditor.Editor_AddUndoAction(aAction: TRMUndoAction);
begin
  //
end;

procedure TRMCustomPageEditor.Editor_BtnUndoClick(Sender: TObject);
begin
  //
end;

procedure TRMCustomPageEditor.Editor_BtnRedoClick(Sender: TObject);
begin
  //
end;

procedure TRMCustomPageEditor.Editor_DisableDraw;
begin
 //
end;

procedure TRMCustomPageEditor.Editor_EnableDraw;
begin
 //
end;

procedure TRMCustomPageEditor.Editor_RedrawPage;
begin
 //
end;

procedure TRMCustomPageEditor.Editor_Resize;
begin
 //
end;

procedure TRMCustomPageEditor.Editor_Init;
begin
 //
end;

procedure TRMCustomPageEditor.Editor_SetCurPage;
begin
 //
end;

procedure TRMCustomPageEditor.Editor_SelectionChanged(aRefreshInspProp: Boolean);
begin
 //
end;

procedure TRMCustomPageEditor.Editor_FillInspFields;
begin
 //
end;

procedure TRMCustomPageEditor.Editor_ShowPosition;
begin
 //
end;

procedure TRMCustomPageEditor.Editor_ShowContent;
begin
 //
end;

function TRMCustomPageEditor.Editor_PageObjects: TList;
begin
  Result := nil;
end;

procedure TRMCustomPageEditor.Editor_OnInspGetObjects(aList: TStrings);
begin
 //
end;

procedure TRMCustomPageEditor.Editor_DoClick(Sender: TObject);
begin
 //
end;

procedure TRMCustomPageEditor.Editor_SelectObject(ObjName: string);
begin
 //
end;

procedure TRMCustomPageEditor.Editor_AfterChange;
begin
 //
end;

procedure TRMCustomPageEditor.Editor_SetObjectsID;
begin
  //
end;

procedure TRMCustomPageEditor.Editor_BtnCutClick(Sender: TObject);
begin
  //
end;

procedure TRMCustomPageEditor.Editor_BtnCopyClick(Sender: TObject);
begin
  //
end;

procedure TRMCustomPageEditor.Editor_BtnPasteClick(Sender: TObject);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -