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

📄 rm_desgn.pas

📁 中小企业管理系统------ ERP系统原代码
💻 PAS
📖 第 1 页 / 共 5 页
字号:
    btnSetHeightToMax: TRMToolbarButton;
    ToolbarSep973: TRMToolbarSep;
    ToolbarSep9723: TRMToolbarSep;
    ToolbarSep9722: TRMToolbarSep;
    ToolbarSep9719: TRMToolbarSep;
    ToolbarSep9720: TRMToolbarSep;
    ToolbarSep9721: TRMToolbarSep;
    ToolbarSep9710: TRMToolbarSep;
    ToolbarSep979: TRMToolbarSep;
    btnSendtoBack: TRMToolbarButton;
    btnSelectAll: TRMToolbarButton;
    btnBringtoFront: TRMToolbarButton;
    ToolbarSep974: TRMToolbarSep;
    btnDeletePage: TRMToolbarButton;
    btnPageSetup: TRMToolbarButton;
    btnAddPage: TRMToolbarButton;
    ToolbarSep975: TRMToolbarSep;
    GB2: TRMToolbarButton;
    GB3: TRMToolbarButton;
    GB1: TRMToolbarButton;
    ToolbarSep976: TRMToolbarSep;
    btnExit: TRMToolbarButton;
    btnFontUnderline: TRMToolbarButton;
    btnFrameTop: TRMToolbarButton;
    btnFrameLeft: TRMToolbarButton;
    btnNoFrame: TRMToolbarButton;
    btnFrameBottom: TRMToolbarButton;
    btnSetFrame: TRMToolbarButton;
    btnFrameRight: TRMToolbarButton;
    ToolbarSep9711: TRMToolbarSep;
    btnTextAlignCenter: TRMToolbarButton;
    btnFontBold: TRMToolbarButton;
    btnFontItalic: TRMToolbarButton;
    btnTextAlignVCenter: TRMToolbarButton;
    btnTextAlignLeft: TRMToolbarButton;
    HlB1: TRMToolbarButton;
    btnTextAlignTop: TRMToolbarButton;
    btnTextAlignRight: TRMToolbarButton;
    btnTextAlignH: TRMToolbarButton;
    btnTextAlignBottom: TRMToolbarButton;
    ToolbarSep9712: TRMToolbarSep;
    OB1: TRMToolbarButton;
    OB2: TRMToolbarButton;
    OB3: TRMToolbarButton;
    OB4: TRMToolbarButton;
    OB5: TRMToolbarButton;
    OB6: TRMToolbarButton;
    OB7: TRMToolbarButton;
    OB8: TRMToolbarButton;
    OB9: TRMToolbarButton;
    btnAlignVWCenter: TRMToolbarButton;
    btnAlignLeft: TRMToolbarButton;
    btnAlignHWCenter: TRMToolbarButton;
    btnAlignHCenter: TRMToolbarButton;
    btnAlignVSE: TRMToolbarButton;
    btnAlignHSE: TRMToolbarButton;
    btnAlignRight: TRMToolbarButton;
    btnAlignBottom: TRMToolbarButton;
    btnAlignTop: TRMToolbarButton;
    btnAlignVCenter: TRMToolbarButton;
    ToolbarSep9713: TRMToolbarSep;
    ToolbarSep9714: TRMToolbarSep;
    ToolbarSep9715: TRMToolbarSep;
    ToolbarSep9716: TRMToolbarSep;
    ToolbarSep9717: TRMToolbarSep;
    ToolbarSep9718: TRMToolbarSep;
    btnInsertFields: TRMToolbarButton;

    btnModifyPreviedFirst: TRMToolbarButton;
    btnModifyPreviedPrev: TRMToolbarButton;
    btnModifyPreviedNext: TRMToolbarButton;
    btnModifyPreviedLast: TRMToolbarButton;
    btnAutoSave: TRMToolbarButton;
    Edit1: TRMEdit;

    //WHF Add
    procedure OnDockRequestDockEvent(Sender: TObject; Bar: TRMCustomDockableWindow; var Accept: Boolean);
    procedure OnFrameWidthExitEvent(Sender: TObject);
    procedure OnFrameWidthKeyPress(Sender: TObject; var Key: Char);
    procedure OnpadAutoArrangeClick(Sender: TObject);
    procedure OpenFile(aFileName: string);
    //old
    procedure SetCurPage(Value: Integer);
    procedure SetGridSize(Value: Integer);
    procedure SetGridShow(Value: Boolean);
    procedure SetGridAlign(Value: Boolean);
    procedure SetUnits(Value: TRMSizeUnits);
    procedure SetCurDocName(Value: string);
    procedure ShowPosition;
    procedure ShowContent;
    procedure EnableControls;
    procedure ResetSelection;
    procedure DeleteObjects(aAddUndoAction: Boolean);
    procedure AddPage;
    procedure RemovePage(n: Integer);
    procedure SetPageTitles;
    procedure Unselect;
    procedure SelectionChanged;

    procedure DefFrameEditor(Sender: TObject);
    procedure DefMemoEditor(Sender: TObject);
    procedure DefPictureEditor(Sender: TObject);
    procedure DefbkPictureEditor(Sender: TObject);
    procedure DefTagEditor(Sender: TObject);
    procedure DefRestrEditor(Sender: TObject);
    procedure DefHighlightEditor(Sender: TObject);
    procedure DefFieldEditor(Sender: TObject);
    procedure DefDataSourceEditor(Sender: TObject);
    procedure DefCrossDataSourceEditor(Sender: TObject);
    procedure DefGroupEditor(Sender: TObject);
    procedure DefFontEditor(Sender: TObject);
    procedure DefCalcMemoEditor(Sender: TObject);
    procedure DefScript_BeforePrintEditor(Sender: TObject);
    procedure DefScript_AfterPrintEditor(Sender: TObject);

    procedure FillInspFields;
    function RectTypEnabled: Boolean;
    function FontTypEnabled: Boolean;
    function ZEnabled: Boolean;
    function CutEnabled: Boolean;
    function CopyEnabled: Boolean;
    function PasteEnabled: Boolean;
    function DelEnabled: Boolean;
    function EditEnabled: Boolean;
    procedure MoveObjects(dx, dy: Integer; Resize: Boolean);
    procedure SelectAll;
    procedure CutToClipboard;
    procedure CopyToClipboard;
    procedure SaveState;
    procedure RestoreState;
    procedure SetOpenFileMenuItems(const aNewFile: string);
    procedure ClearBuffer(Buffer: TRMUndoBuffer; var BufferLength: Integer);
    procedure ClearUndoBuffer;
    procedure ClearRedoBuffer;
    procedure Undo(Buffer: PRMUndoBuffer);
    procedure ReleaseAction(ActionRec: TRMUndoRec);
    procedure AddAction(Buffer: PRMUndoBuffer; a: TRMUndoAction; List: TList);
    procedure AddUndoAction(a: TRMUndoAction);
    procedure InsFieldsClick(Sender: TObject);
    procedure InsertFieldsClick(Sender: TObject);
    procedure OnFieldsDialogCloseEvnet(Sender: TObject);
    procedure GetDefaultSize(var dx, dy: Integer);
    function SelStatus: TRMSelectionStatus;
    procedure OnModify(Item: Integer);
    procedure PageFormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure PageFormResize(Sender: TObject);
    procedure PageFormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    function BeforeEdit: Boolean;
    procedure AfterEdit;
    procedure DoEdit(ClassRef: TClass);
    procedure ShowFieldsDialog(Show: Boolean);
    procedure InspSelectionChanged(ObjName: string);
    procedure InspGetObjects(List: TStrings);
    procedure NotifyParentBands(OldName, NewName: string);
    procedure NotifySubReports(OldIndex, NewIndex: Integer);
    procedure AssignDefEditors;
{$IFDEF Delphi4}
    procedure FormMouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
    procedure FormMouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
{$ENDIF}
    procedure Localize;
    procedure OnFindReplaceView(Sender: TObject);
    procedure _EditPreparedReport(aNewPageNo: Integer);
  protected
    function GetDesignerPage: TWinControl; override;
  public
    { Public declarations }
    function GetModified: Boolean; override;
    procedure SetModified(Value: Boolean); override;
    procedure RegisterObject(ButtonBmp: TBitmap; const ButtonHint: string; ButtonTag: Integer; IsControl: Boolean); override;
    procedure RegisterTool(MenuCaption: string; ButtonBmp: TBitmap; OnClick: TNotifyEvent); override;
    procedure BeforeChange; override;
    procedure AfterChange; override;
    procedure SelectObject(ObjName: string); override;
    function InsertDBField: string; override;
    function InsertExpression: string; override;
    procedure ShowMemoEditor(Sender: TObject);
    procedure ShowEditor;
    procedure RedrawPage; override;
    function PointsToUnits(x: Double): Double;
    function UnitsToPoints(x: Double): Double;

    property CurDocName: string read FCurDocName write SetCurDocName;
    property CurPage: Integer read FCurPage write SetCurPage;
    property GridSizeX: Integer read FGridSizeX write SetGridSize;
    property GridSizeY: Integer read FGridSizeY write SetGridSize;
    property ShowGrid: Boolean read FGridShow write SetGridShow;
    property GridAlign: Boolean read FGridAlign write SetGridAlign;
    property Units: TRMSizeUnits read FUnits write SetUnits;
    property PageType: TRMPageType read FPageType;
    property UseTableName: Boolean read FUseTableName write FUseTableName;
  end;

//old
function RMCheckBand(b: TRMBandType): Boolean;

var
  RMTemplateDir: string;
  FDesignerRestrictions: TRMDesignerRestrictions;

implementation

{$R *.DFM}
{$R *.RES}
{$R RM_LNG2.RES}
{$R RM_LNG3.RES}

uses
  Commctrl, Registry, RM_CmpReg, RM_Pgopt, RM_GEdit, RM_FindReplace,
  RM_Templ, RM_Newrp, RM_DsOpt, RM_Const, RM_Const1, RM_Prntr, RM_Hilit, RM_Flds, RM_flds1,
  RM_Dict, RM_BndEd, RM_VBnd, RM_BTyp, RM_Utils, RM_GrpEd, RM_About,
  RM_IFlds, RM_Restr, RM_Pars, RM_DBRel, RM_DBSet, RM_CalcEditor, RM_fmted, RM_FrameProp,
  RM_DlgExpr, RM_PageF, rm_Wizard, rm_RptWiz, DB, RM_Property;

type
  THackView = class(TRMView)
  end;

var
  SelNum: Integer; // number of objects currently selected
  FirstSelected: TRMView;
  MRFlag: Boolean; // several objects was selected
  ObjRepeat: Boolean; // was pressed Shift + Insert Object
  WasOk: Boolean; // was Ok pressed in dialog
  OldRect, OldRect1: TRect; // object rect after mouse was clicked
  Busy: Boolean; // busy flag. need!
  ShowSizes: Boolean;
  LastFontName: string;
  LastFrameWidth, LastLineWidth: Single;
  LastFrameTyp, LastFontStyle, LastCharset: Word;
  LastFrameColor, LastFillColor, LastFontColor: TColor;
  LastFontSize, LastAlignment: Integer;
  FirstChange: Boolean;
  ClipRgn: HRGN;
  DesignerComp: TRMDesigner;
  InspBusy: Boolean;
//  FDesignerRestrictions: TRMDesignerRestrictions;

  FClipBd: TList; // clipboard
  FClipPage: Integer;

function ClipBd: TList;
begin
  if FClipBd = nil then
    FClipBd := TList.Create;
  Result := FClipBd;
end;

function Objects: TList;
begin
  Result := RMDesigner.Page.Objects;
end;

function TopSelected: Integer;
var
  i: Integer;
begin
  Result := Objects.Count - 1;
  for i := Objects.Count - 1 downto 0 do
  begin
    if TRMView(Objects[i]).Selected then
    begin
      Result := i;
      Break;
    end;
  end;
end;

function RMCheckBand(b: TRMBandType): Boolean;
var
  i: Integer;
  t: TRMView;
begin
  Result := False;
  for i := 0 to Objects.Count - 1 do
  begin
    t := Objects[i];
    if t.Typ = gtBand then
    begin
      if b = TRMBandView(t).BandType then
      begin
        Result := True;
        Break;
      end;
    end;
  end;
end;

function GetUnusedBand: TRMBandType;
var
  b: TRMBandType;
begin
  Result := btNone;
  for b := btReportTitle to btNone do
  begin
    if not RMCheckBand(b) then
    begin
      Result := b;
      Break;
    end;
  end;
  if Result = btNone then
    Result := btMasterData;
end;

procedure SendBandsToDown;
var
  i, j, n, k: Integer;
  t: TRMView;
begin
  n := Objects.Count; j := 0; i := n - 1;
  k := 0;
  while j < n do
  begin
    t := Objects[i];
    if t.Typ = gtBand then
    begin
      Objects.Delete(i);
      Objects.Insert(0, t);
      Inc(k);
    end
    else
      Dec(i);
    Inc(j);
  end;

  for i := 0 to n - 1 do // sends btOverlay to back
  begin
    t := Objects[i];
    if (t.Typ = gtBand) and (TRMBandView(t).BandType = btOverlay) then
    begin
      Objects.Delete(i);
      Objects.Insert(0, t);
      Break;
    end;
  end;
  i := 0; j := 0;
  while j < n do // sends btCrossXXX to RMont
  begin
    t := Objects[i];
    if (t.Typ = gtBand) and (TRMBandView(t).BandType in [btCrossHeader..btCrossFooter]) then
    begin
      Objects.Delete(i);
      Objects.Insert(k - 1, t);
    end
    else
      Inc(i);
    Inc(j);
  end;
end;

procedure ClearClipBoard;
var
  m: TMemoryStream;
begin
  if Assigned(FClipBd) then
  begin
    with FClipBd do
    begin
      while Count > 0 do
      begin
        m := Items[0];
        m.Free;
        Delete(0);
      end;
    end;
  end;
end;

procedure GetRegion;
var
  i: Integer;
  t: TRMView;
  R: HRGN;
begin
  ClipRgn := CreateRectRgn(0, 0, 0, 0);
  for i := 0 to Objects.Count - 1 do
  begin
    t := Objects[i];
    if t.Selected then
    begin
      R := t.GetClipRgn(rtExtended);
      CombineRgn(ClipRgn, ClipRgn, R, RGN_OR);
      DeleteObject(R);
    end;
  end;
  FirstChange := False;
end;

function IsBandsSelect(var Value: TRMView): Boolean;
var
  i: Integer;
begin
  Result := False;
  Value := nil;
  for i := 0 to Objects.Count - 1 do
  begin
    Value := Objects[i];
    if Value.Selected and (Value.Typ = gtBand) then
    begin
      Result := True;
      Break;
    end;
  end;
end;

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

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

  FCanEditRestrictions := True;
  FCloseQuery := True;
  DesignerComp := Self;
  FHelpFile := 'rmuser.hlp';
  FOpenFileCount := 4;
end;

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

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

procedure TRMDesigner.SetRestrictions(Value: TRMDesignerRestrictions);
begin
  FDesignerRestrictions_1 := Value;
  if not (csDesigning in ComponentState) then
    FDesignerRestrictions := Value;
end;

{----------------------------------------------------------------------------}
{----------------------------------------------------------------------------}
{TRMDesignerPage}

constructor TRMDesignerPage.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  Parent := AOwner as TWinControl;
  BevelInner := bvNone;
  BevelOuter := bvNone;
  Color := clWhite;
  BorderStyle := bsNone;
  OnMouseDown := MDown;
  OnMouseUp := MUp;

⌨️ 快捷键说明

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