rm_designer.pas
来自「胜天进销存源码,国产优秀的进销存」· PAS 代码 · 共 2,241 行 · 第 1/5 页
PAS
2,241 行
btnFontUnderline: TRMToolbarButton;
ToolbarSep9711: TRMToolbarSep;
btnTextAlignCenter: TRMToolbarButton;
btnFontBold: TRMToolbarButton;
btnFontItalic: TRMToolbarButton;
btnTextAlignVCenter: TRMToolbarButton;
btnTextAlignLeft: TRMToolbarButton;
HlB1: TRMToolbarButton;
btnTextAlignTop: TRMToolbarButton;
btnTextAlignRight: TRMToolbarButton;
btnTextAlignH: TRMToolbarButton;
btnTextAlignBottom: TRMToolbarButton;
ToolbarSep9713: TRMToolbarSep;
ToolbarSep9714: TRMToolbarSep;
ToolbarSep9715: TRMToolbarSep;
ToolbarSep9716: TRMToolbarSep;
ToolbarSep9718: TRMToolbarSep;
btnInsertFields: TRMToolbarButton;
FOpenFiles: TStringList;
FHRuler, FVRuler: TRMDesignerRuler;
FcmbFont: TRMFontComboBox;
FcmbFontSize: TRMComboBox97 {TComboBox};
FBtnFontColor: TRMColorPickerButton;
FCurDocName, FCaption: string;
FOldFactor: Integer;
FUndoBusy: Boolean;
procedure padSearchFindClick(Sender: TObject);
procedure padSearchReplaceClick(Sender: TObject);
procedure padSearchFindAgainClick(Sender: TObject);
procedure ToolBarPopMenuPopup(Sender: TObject);
procedure InsertFieldsClick(Sender: TObject);
procedure OnFieldsDialogCloseEvnet(Sender: TObject);
procedure ShowFieldsDialog(aVisible: Boolean);
procedure Localize;
function GetFirstSelected: TRMView;
procedure SetObjectsID;
procedure SaveIni;
procedure LoadIni;
function GetSelectionStatus: TSelectionStatus;
function FileSave: Boolean;
function FileSaveAs: Boolean;
procedure CreateDefaultPage;
procedure OnFindReplaceView(Sender: TObject);
procedure SetCurDocName(Value: string);
procedure OnpadAutoArrangeClick(Sender: TObject);
procedure OnInspBeforeModify(Sender: TObject; const aPropName: string);
procedure OnInspAfterModify(Sender: TObject; const aPropName, aPropValue: string);
procedure InspSelectionChanged(ObjName: string);
procedure InspGetObjects(List: TStrings);
procedure FillInspFields;
procedure SelectObject(ObjName: string);
procedure ClearUndoBuffer;
procedure ClearRedoBuffer;
procedure ReleaseAction(aActionRec: PRMUndoRec);
procedure AddAction(aBuffer: PRMUndoBuffer; aAction: TRMUndoAction; aList: TList);
procedure Undo(aBuffer: PRMUndoBuffer);
procedure GB1Click(Sender: TObject);
procedure GB2Click(Sender: TObject);
procedure GB3Click(Sender: TObject);
procedure HlB1Click(Sender: TObject);
function GetScript: TStrings;
procedure SetScript(Value: TStrings);
procedure SetOpenFileMenuItems(const aNewFile: string);
procedure OnDockRequestDockEvent(Sender: TObject; Bar: TRMCustomDockableWindow; var Accept: Boolean);
procedure ScrollBox1Resize(Sender: TObject);
{$IFDEF Delphi4}
procedure OnFormMouseWheelUpEvent(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
procedure OnFormMouseWheelDownEvent(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
{$ENDIF}
procedure OpenFile(aFileName: string);
function RectTypEnabled: Boolean;
function FontTypEnabled: Boolean;
function ZEnabled: Boolean;
function CutEnabled: Boolean;
function CopyEnabled: Boolean;
function PasteEnabled: Boolean;
function DelEnabled: Boolean;
function EditEnabled: Boolean;
function RedoEnabled: Boolean;
function UndoEnabled: Boolean;
procedure MoveObjects(dx, dy: Integer; Resize: Boolean);
protected
procedure SelectAll;
procedure EnableControls; override;
procedure ShowPosition; override;
procedure DoFormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); override;
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 }
function Objects: TList;
procedure BeforeChange; override;
procedure AfterChange; override;
function InsertDBField: string; override;
function InsertExpression: string; override;
procedure MemoViewEditor(t: TRMView); override;
procedure PictureViewEditor(t: TRMView); override;
procedure RMFontEditor(Sender: TObject); override;
procedure RMDisplayFormatEditor(Sender: TObject); override;
procedure RMCalcMemoEditor(Sender: TObject); override;
procedure SetPageTabs; override;
procedure UnselectAll; override;
procedure SelectionChanged(aRefreshInspProp: Boolean); override;
procedure SetCurPage(Value: Integer); override;
procedure ResetSelection; override;
procedure ShowContent; override;
procedure SetRulerOffset; override;
procedure AddUndoAction(aAction: TRMUndoAction); override;
procedure ShowObjMsg; override;
procedure ShowEditor; override;
procedure ShowMemoEditor(Sender: TObject);
property CurDocName: string read FCurDocName write SetCurDocName;
property SelStatus: TSelectionStatus read GetSelectionStatus;
property Script: TStrings read GetScript write SetScript;
end;
implementation
{$R *.DFM}
uses
Registry, RM_Const, RM_Const1, RM_Utils, RM_EditorMemo, RM_EditorBand, RM_EditorGroup,
RM_EditorCrossBand, RM_EditorPicture, RM_EditorHilit, RM_EditorFrame, 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_EditorBandType,
RM_Wizard, RM_WizardNewReport;
type
THackView = class(TRMView)
end;
THackPage = class(TRMCustomPage)
end;
THackReportPage = class(TRMReportPage)
end;
THackReport = class(TRMReport)
end;
const
crPencil = 11;
DefaultPopupItemsCount = 9;
TAG_SetFrameTop = 1;
TAG_SetFrameLeft = 2;
TAG_SetFrameBottom = 3;
TAG_SetFrameRight = 4;
TAG_BackColor = 5;
// TAG_FrameStyle = 6;
TAG_SetFontName = 7;
TAG_SetFontSize = 8;
TAG_FontBold = 9;
TAG_FontItalic = 10;
TAG_FontUnderline = 11;
TAG_HAlignLeft = 12;
TAG_HAlignCenter = 13;
TAG_HAlignRight = 14;
TAG_HAlignEuqal = 15;
TAG_FrameSize = 16;
TAG_FontColor = 17;
TAG_FrameColor = 19;
TAG_SetFrame = 20;
TAG_NoFrame = 21;
TAG_FrameStyle1 = 25;
TAG_FrameStyle2 = 26;
TAG_FrameStyle3 = 27;
TAG_FrameStyle4 = 28;
TAG_FrameStyle5 = 29;
TAG_FrameStyle6 = 30;
TAG_VAlignTop = 31;
TAG_VAlignCenter = 32;
TAG_VAlignBottom = 33;
var
FDesignerComp: TRMDesigner;
FEditAfterInsert: Boolean;
type
TRMScrollBox = class(TScrollBox)
private
FOnkeyDown: TKeyEvent;
procedure CNKeydown(var Message: TMessage); message CN_KEYDOWN;
protected
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
public
constructor Create(AOwner: TComponent); override;
published
property OnkeyDown: TKeyEvent read FOnkeyDown write FOnkeyDown;
end;
constructor TRMScrollBox.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
TabStop := True; //使之能获得焦点
end;
procedure TRMScrollBox.CNKeydown(var Message: TMessage);
begin
case TWMKey(Message).CharCode of
VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT, VK_TAB:
begin
Exit; //如果让他自己处理的话就会失去焦点,必须中断才能把消息传到WM_KeyDown
end;
else
inherited;
end;
end;
procedure TRMScrollBox.KeyDown(var Key: Word; Shift: TShiftState);
begin
if Assigned(FOnkeyDown) then
begin
FOnkeyDown(Self, key, Shift);
end;
inherited;
end;
{------------------------------------------------------------------------------}
{------------------------------------------------------------------------------}
{TRMDesigner}
constructor TRMDesigner.Create(AOwner: TComponent);
begin
// if Assigned(FDesignerComp) then
// raise Exception.Create('You already have one TRMDesigner component');
inherited Create(AOwner);
FDesignerComp := Self;
FOpenFileCount := 4;
FDefaultDictionaryFile := '';
FUseUndoRedo := True;
end;
destructor TRMDesigner.Destroy;
begin
FDesignerComp := 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;
{------------------------------------------------------------------------------}
{------------------------------------------------------------------------------}
{ TRMToolbarAlign }
constructor TRMToolbarAlign.CreateAndDock(AOwner: TComponent; DockTo: TRMDock);
begin
inherited Create(AOwner);
Dockedto := DockTo;
// Parent := Self;
FDesignerForm := TRMDesignerForm(AOwner);
BeginUpdate;
DockRow := 2;
DockPos := 10; //ToolbarBorder.DockPos + ToolbarBorder.Width;
Name := 'ToolbarAlign';
btnAlignLeft := TRMToolbarButton.Create(Self);
with btnAlignLeft do
begin
ImageIndex := 0;
Images := FDesignerForm.ImageListAlign;
OnClick := btnAlignLeftClick;
AddTo := Self;
end;
btnAlignHCenter := TRMToolbarButton.Create(Self);
with btnAlignHCenter do
begin
ImageIndex := 1;
Images := FDesignerForm.ImageListAlign;
OnClick := btnAlignHCenterClick;
AddTo := Self;
end;
btnAlignRight := TRMToolbarButton.Create(Self);
with btnAlignRight do
begin
ImageIndex := 2;
Images := FDesignerForm.ImageListAlign;
OnClick := btnAlignRightClick;
AddTo := Self;
end;
btnAlignTop := TRMToolbarButton.Create(Self);
with btnAlignTop do
begin
ImageIndex := 3;
Images := FDesignerForm.ImageListAlign;
OnClick := btnAlignTopClick;
AddTo := Self;
end;
btnAlignVCenter := TRMToolbarButton.Create(Self);
with btnAlignVCenter do
begin
ImageIndex := 4;
Images := FDesignerForm.ImageListAlign;
OnClick := btnAlignVCenterClick;
AddTo := Self;
end;
btnAlignBottom := TRMToolbarButton.Create(Self);
with btnAlignBottom do
begin
ImageIndex := 5;
Images := FDesignerForm.ImageListAlign;
OnClick := btnAlignBottomClick;
AddTo := Self;
end;
ToolbarSep9720 := TRMToolbarSep.Create(Self);
with ToolbarSep9720 do
begin
AddTo := Self;
end;
btnAlignHSE := TRMToolbarButton.Create(Self);
with btnAlignHSE do
begin
ImageIndex := 6;
Images := FDesignerForm.ImageListAlign;
OnClick := btnAlignHSEClick;
AddTo := Self;
end;
btnAlignVSE := TRMToolbarButton.Create(Self);
with btnAlignVSE do
begin
ImageIndex := 7;
Images := FDesignerForm.ImageListAlign;
OnClick := btnAlignVSEClick;
AddTo := Self;
end;
ToolbarSep9721 := TRMToolbarSep.Create(Self);
with ToolbarSep9721 do
begin
AddTo := Self;
end;
btnAlignHWCenter := TRMToolbarButton.Create(Self);
with btnAlignHWCenter do
begin
ImageIndex := 8;
Images := FDesignerForm.ImageListAlign;
OnClick := btnAlignHWCenterClick;
AddTo := Self;
end;
btnAlignVWCenter := TRMToolbarButton.Create(Self);
with btnAlignVWCenter do
begin
ImageIndex := 9;
Images := FDesignerForm.ImageListAlign;
OnClick := btnAlignVWCenterClick;
AddTo := Self;
end;
ToolbarSep9710 := TRMToolbarSep.Create(Self);
with ToolbarSep9710 do
begin
AddTo := Self;
end;
btnAlignLeftRight := TRMToolbarButton.Create(Self);
with btnAlignLeftRight do
begin
ImageIndex := 10;
Images := FDesignerForm.ImageListAlign;
OnClick := btnAlignLeftRightClick;
AddTo := Self;
end;
btnAlignTopBottom := TRMToolbarButton.Create(Self);
with btnAlignTopBottom do
begin
ImageIndex := 11;
Images := FDesignerForm.ImageListAlign;
OnClick := btnAlignTopBottomClick;
AddTo := Self;
end;
EndUpdate;
Localize;
end;
procedure TRMToolbarAlign.Localize;
begin
RMSetStrProp(btnAlignLeft, 'Hint', rmRes + 138);
RMSetStrProp(btnAlignHCenter, 'Hint', rmRes + 139);
RMSetStrProp(btnAlignHSE, 'Hint', rmRes + 140);
RMSetStrProp(btnAlignHWCenter, 'Hint', rmRes + 141);
RMSetStrProp(btnAlignRight, 'Hint', rmRes + 142);
RMSetStrProp(btnAlignTop, 'Hint', rmRes + 143);
RMSetStrProp(btnAlignVSE, 'Hint', rmRes + 144);
RMSetStrProp(btnAlignVWCenter, 'Hint', rmRes + 145);
RMSetStrProp(btnAlignVCenter, 'Hint', rmRes + 146);
RMSetStrProp(btnAlignBottom, 'Hint', rmRes + 147);
RMSetStrProp(btnAlignLeftRight, 'Hint', rmRes + 199);
RMSetStrProp(btnAlignTopBottom, 'Hint', rmRes + 215);
end;
function TRMToolbarAlign.GetLeftObject: Integer;
var
i: Integer;
t: TRMView;
x: Integer;
begin
t := FDesignerForm.Objects[FDesignerForm.TopSelected];
x := t.spLeft_Designer;
Result := FDesignerForm.TopSelected;
for i := 0 to FDesignerForm.Objects.Count - 1 do
begin
t := FDesignerForm.Objects[i];
if t.Selected then
begin
if t.spLeft_Designer < x then
begin
x := t.spLeft_Designer;
Result := i;
end;
end;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?