📄 eermodel.pas
字号:
//Delete the Obj
procedure DeleteObj; override;
procedure LoadImageFromFile;
function GetXML: string; override;
{$IFDEF USE_IXMLDBMODELType}
procedure SetXML(theXMLImage: IXMLIMAGEType);
{$ENDIF}
procedure SetXML2(theXMLParser: TXmlParser);
function GetStrechImg: Boolean;
procedure SetStrechImg(StrechImg: Boolean);
procedure ClearImg;
function GetImgSize: TSize;
protected
procedure DoMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); override;
procedure DoMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); override;
procedure DoMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
private
{ Private declarations }
Img, StrechedImg: TBitmap;
StrechImg: Boolean;
public
{ Public declarations }
end;
// -----------------------------------------------
// Declaration of the EER Region Object
TEERRegion = class(TEERObj)
constructor Create(AOwner: TComponent; TheName: string); reintroduce; overload;
destructor Destroy; override;
function ObjIsEqualTo(Source: TObject): Boolean; overload;
procedure ShowEditor(Sender: TObject); override;
procedure DoPaint(Sender: TObject); override;
//Paint the Object
procedure PaintObj2Canvas(theCanvas: TCanvas; xo, yo: integer); override;
procedure RefreshObj(Sender: TObject = nil); override;
//Delete the Obj
procedure DeleteObj; override;
function GetXML: string; override;
{$IFDEF USE_IXMLDBMODELType}
procedure SetXML(theXMLRegion: IXMLREGIONType);
{$ENDIF}
procedure SetXML2(theXMLParser: TXmlParser);
procedure SelectAllObjsInRegion;
procedure GetEERObjsInRegion(ObjType: TEERObjectSet; ObjectList: TList; OnlySelected: Boolean=False);
procedure SetSelected(select: Boolean); override;
protected
procedure DoMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); override;
procedure DoMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); override;
procedure DoMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
private
{ Private declarations }
public
{ Public declarations }
ObjectsInRegion: TList;
RegionColor: integer;
TablePrefix,
TableType: Integer;
OverwriteTablePrefix,
OverwriteTableType: Boolean;
end;
// -----------------------------------------------
// Declaration of the EER Stored Proc Object
TEERStoredProc = class(TEERObj)
constructor Create(AOwner: TComponent; TheName: string); reintroduce; overload;
destructor Destroy; override;
protected
private
{ Private declarations }
Code: TStringList;
public
end;
TEERDatatypeGroup = class(TPersistent)
constructor Create(AOwner: TComponent); overload;
destructor Destroy; override;
public
Owner: TComponent;
GroupName: string;
IconNr: integer;
end;
TEERDatatype = class(TPersistent)
constructor Create(AOwner: TComponent); overload;
destructor Destroy; override;
procedure Assign(Source: TPersistent); override;
protected
public
Owner: TComponent;
id, //id of the type
group: integer; //number of group
TypeName, //Name of the Datatype (INTEGER)
description: string; //the description
Param, //Params [(length,decimals)]
Options: Array[0..5] of string; //several options [UNSIGNED] [ZEROFILL]
ParamCount, //Count of the Params
OptionCount: integer; //Count of the Options
ParamRequired: Boolean; //stores whether the Params are required or not
OptionDefaults: Array[0..5] of Boolean; //stores default selection
EditParamsAsString: Boolean; // for ENUM and SET Types
SynonymGroup: integer;
PhysicalMapping: Boolean;
PhysicalTypeName: string;
function GetPhysicalTypeName: string;
end;
//-----------------------------------------------
TEERColumn = class(TPersistent)
constructor Create(AOwner: TComponent); overload;
destructor Destroy; override;
procedure Assign(Source: TPersistent); override;
function ObjIsEqualTo(Source: TObject): Boolean;
public
Owner: TComponent;
ColName, //Name of the Column
PrevColName: string; //Name of the Column before change
Obj_id, //ID of the column
Pos: integer; //Position
idDatatype: integer; //ID of the Datatype
DatatypeParams: String; //Params of the Datatype as String
Width, //overall width for Numeric Types
Prec: integer; //Precision for Numeric Types
PrimaryKey, //Primary Key Flag
NotNull, //Not Null Flag
AutoInc, //Auto Increment Flag
IsForeignKey: Boolean; //Foreign Key Flag
FK_checked: Boolean; //Flag to detect recursion
OptionSelected: Array[0..5] of Boolean; //stores selected options
DefaultValue: string; //Default Value of the Column
Comments: string; //Comments
tmp: string;
end;
//-----------------------------------------------
TEERIndex = class(TPersistent)
constructor Create(AOwner: TComponent); overload;
destructor Destroy; override;
procedure Assign(Source: TPersistent); override;
function ObjIsEqualTo(Source: TObject): Boolean;
public
Owner: TComponent;
IndexName: string;
Obj_id, //ID of the index
Pos: integer; //Position
IndexKind: integer;
Columns, //Stores the idColumns
ColumnParams: TStringList; //Stores optional column params (length for blob)
FKRefDef_Obj_id: integer; //Stores the Obj_id of the parent Relation or -1
end;
//-----------------------------------------------
TEERActionLog = class(TPersistent)
constructor Create(AOwner: TComponent); overload;
destructor Destroy; override;
public
Owner: TComponent;
ActionType: integer;
ActionDate: TDateTime;
SubActions: TObjectList;
Closed: Boolean;
end;
//-----------------------------------------------
TEERActionSubLog = class(TPersistent)
constructor Create(AOwner: TComponent); overload;
destructor Destroy; override;
public
Owner: TComponent;
SubActionType: integer;
Obj_id: integer;
Params: TStringList;
end;
//-----------------------------------------------
TStoredSQLCmd = class(TPersistent)
constructor Create(SQLCmdType: integer; StoredPosition: string; SQLText: string); overload;
public
SQLCmdType: integer;
StoredPosition: string;
SQLText: string;
end;
//-----------------------------------------------
TPosMarker = class(TPersistent)
public
ZoomFac: double;
X: integer;
Y: integer;
end;
//-----------------------------------------------
const
re_Top=1;
re_Right=2;
re_Bottom=3;
re_Left=4;
rk_11=0;
rk_1n=1;
rk_1nNonId=2;
rk_nm=3;
rk_11Sub=4;
rk_11NonId=5;
ik_PRIMARY=0;
ik_INDEX=1;
ik_UNIQUE_INDEX=2;
ik_FULLTEXT_INDEX=3;
at_MoveObj=10;
sa_MoveFrom=11;
sa_MoveTo=12;
at_NewObj=20;
at_DeleteObj=30;
at_RenameObj=40;
at_ScaleObj=50;
sa_ScaleFrom=51;
sa_ScaleTo=52;
at_EditObj=60;
//SQLCmdType
ct_SQLCmd=1;
ct_SQLScript=2;
ct_SQLTableSelect=3;
ct_SQLHistory=4;
ct_SQLDragDropStores=5;
//-----------------------------------------------
// General Functions
function ReverseRelDirection(theRelDir: integer): integer;
function SortRelations(Item1, Item2: Pointer): Integer;
implementation
uses MainDM, EERDM;
// -----------------------------------------------
// Implementation of the MAIN-Class
constructor TEERModel.Create(AOwner: TComponent);
var i: integer;
thePosMarker: TPosMarker;
{thePluginData: TEERPluginData; //Dummy for Plugindata}
begin
inherited Create(AOwner);
Parent:=TForm(AOwner);
Color:=clWhite;
BevelOuter:=bvNone;
ModelName:='Noname1';
ModelFilename:='Noname1.xml';
ModelComments:='';
//Load a Background Image
//Bitmap.LoadFromFile('Gfx'+PathDelim+'background.png');
EERModel_Width:=4096;
EERModel_Height:=2842;
Top:=0;
Left:=0;
Width:=EERModel_Width;
Height:=EERModel_Height;
LogActions:=False;
//DatabaseType:=DMDB.DefaultDatabaseType;
DatabaseType:='MySQL';
TablePrefix:=TStringList.Create;
TablePrefix.Add(DMMain.GetTranslatedMessage('Default (no prefix)', 208));
DefaultTablePrefix:=0;
DBQuoteCharacter:='`';
DefSyncDBConn:='';
DefSaveDBConn:='';
DefQueryDBConn:='';
//Create Datatypes
DatatypeGroups:=TObjectList.Create;
Datatypes:=TObjectList.Create;
CommonDataType:=TStringList.Create;
LoadDataTypesFromIniFile;
//Reserved Words
ReservedWords:=TStringList.Create;
LoadReservedWordsFromIniFile;
DefaultDataType:=5;
//Set Font
{$IFDEF MSWINDOWS}
DefModelFont:='Tahoma';
{$ELSE}
DefModelFont:='Nimbus Sans L';
{$ENDIF}
ParentFont:=False;
ZoomFac:=100;
NewTableCounter:=0;
NewRelCounter:=0;
NewNoteCounter:=0;
NewRegionCounter:=0;
NewImageCounter:=0;
LastRegionColor:=0;
Rel_SrcTable:=nil;
Rel_DestTable:=nil;
LoadModelBitmaps;
if(DMEER.Notation=noErwin)then
begin
RelIconSize:=9;
end
else
begin
RelIconSize:=19;
end;
RelIconDSize:=Trunc(RelIconSize / 2);
//Normal DPI settings for font
DPI:=72;
// Create Selection PaintBox
SelectionRect:=TPaintBox.Create(self);
SelectionRect.Parent:=self;
SelectionRect.Visible:=False;
SelectionRect.OnPaint:=DoSelectionRectPaint;
SelectionRect.Font.Name:=DefModelFont;
SelectionRect.Canvas.Font.Name:=DefModelFont;
// Create GridPaintBox PaintBox
GridPaintBox:=TPaintBox.Create(self);
GridPaintBox.Parent:=self;
GridPaintBox.Name:='GridPaintBox';
GridPaintBox.Visible:=DMEER.DisplayPaperGrid;
GridPaintBox.OnPaint:=DoGridPaintBoxPaint;
GridPaintBox.Width:=EERModel_Width;
GridPaintBox.Height:=EERModel_Height;
GridPaintBox.OnMouseDown:=DoMouseDown;
GridPaintBox.OnMouseMove:=DoMouseMove;
GridPaintBox.OnMouseUp:=DoMouseUp;
//Capture MouseAction
MouseIsDown:=False;
OnMouseDown:=DoMouseDown;
OnMouseMove:=DoMouseMove;
OnMouseUp:=DoMouseUp;
ModelPrinter:='';
HPageCount:=4;
PageAspectRatio:=1.4408925123364084960308946577988;
PageOrientation:=poLandscape;
PageFormat:='A4 (210x297 mm, 8.26x11.7 inches)';
PageSize.cx:=Round(EERModel_Width/HPageCount);
if(PageOrientation=poPortrait)then
PageSize.cy:=Round(PageSize.cx*PageAspectRatio)
else
PageSize.cy:=Round(PageSize.cx/PageAspectRatio);
VPageCount:=EERModel_Height/PageSize.cy;
for i:=0 to 200 do
SelectedPages[i]:=False;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -