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

📄 eermodel.pas

📁 DBDesigner 4 is a database design system that integrates database design, modelling, creation and ma
💻 PAS
📖 第 1 页 / 共 5 页
字号:

    //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 + -