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

📄 optionsmodel.pas

📁 功能强大的ER图建模工具的源代码。 可以代替ERWin了
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit OptionsModel;

//----------------------------------------------------------------------------------------------------------------------
//
// This file is part of fabFORCE DBDesigner4.
// Copyright (C) 2002 Michael G. Zinner, www.fabFORCE.net
//
// DBDesigner4 is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// DBDesigner4 is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// You should have received a copy of the GNU General Public License
// along with DBDesigner4; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
//
//----------------------------------------------------------------------------------------------------------------------
//
// Unit OptionsModel.pas
// ---------------------
// Version 1.5, 08.04.2002, Mike
// Description
//   Contains the model options form class
//
// Changes:
//   Version 1.5, 08.04.2002, Mike
//     added DefaultTableType and ActivateRefDefForNewRelation
//     OnFormClose FontCBox.ItemIndex could be -1 and cause a
//       Listindex out of bounds error, fixed
//   Version 1.4, 04.04.2002, Mike / Shannon Weyrick
//     added TableNameInRefsCBox
//   Version 1.3, 28.03.2002, Mike
//     added EditOptionsSheet, support grid parameters
//   Version 1.2, 13.03.2002, Mike
//     new edit for model's VersionStr
//   Version 1.1, 13.03.2002
//     fixed bug in SetModel & PluginRecordsStringGridClick when model
//     contains no plugindata
//   Version 1.0, 04.12.2002
//     initial version, Mike
//
//----------------------------------------------------------------------------------------------------------------------

interface

uses
  SysUtils, Types, Classes, QGraphics, QControls, QForms, QDialogs,
  QStdCtrls, QExtCtrls, EERModel, QComCtrls, QButtons, QCheckLst, QGrids,
  Qt, EERDM;

type
  TOptionsModelForm = class(TForm)
    PageControl: TPageControl;
    GeneralSheet: TTabSheet;
    Label1: TLabel;
    ModelNameEd: TEdit;
    PluginSheet: TTabSheet;
    Label2: TLabel;
    FontCBox: TComboBox;
    Label8: TLabel;
    PluginRecordsStringGrid: TStringGrid;
    Label9: TLabel;
    PluginParamsStringGrid: TStringGrid;
    DatabaseSheet: TTabSheet;
    Label4: TLabel;
    TablePrefixCLBox: TCheckListBox;
    NewTblPrefixBtn: TSpeedButton;
    DelTblPrefixBtn: TSpeedButton;
    Label5: TLabel;
    Label6: TLabel;
    Label12: TLabel;
    ModelCommentsMemo: TMemo;
    RegionColorsMemo: TMemo;
    Label10: TLabel;
    Label11: TLabel;
    DefDatatypeCBox: TComboBox;
    Label7: TLabel;
    Label3: TLabel;
    DBTypeEd: TEdit;
    VersionEd: TEdit;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    EditOptionsSheet: TTabSheet;
    GroupBox1: TGroupBox;
    GridWidthLbl: TLabel;
    GridXEd: TEdit;
    GridHeightLbl: TLabel;
    GridYEd: TEdit;
    GridWidthUnitsLbl: TLabel;
    GridHeightUnitsLbl: TLabel;
    UsePosGridCBox: TCheckBox;
    GroupBox2: TGroupBox;
    Label18: TLabel;
    DefaultTableTypeCBox: TComboBox;
    BottomPnl: TPanel;
    AbortBtn: TSpeedButton;
    SubmitBtn: TSpeedButton;
    RemovePluginData: TBitBtn;
    MakeEditSettingsDefaultBtn: TBitBtn;
    GroupBox3: TGroupBox;
    TableNameInRefsCBox: TCheckBox;
    Label23: TLabel;
    FKPrefixEd: TEdit;
    Label24: TLabel;
    FKPostfixEd: TEdit;
    CreateFKRefDefIndexCBox: TCheckBox;
    ActivateRefDefForNewRelationsCBox: TCheckBox;
    Label19: TLabel;
    PageControlTreeView: TTreeView;
    PageControlTitlePnl: TPanel;
    PageControlTitleLbl: TLabel;
    PageControlTitleShape: TShape;
    CreateSQLforLinkedObjectsCBox: TCheckBox;
    Bevel1: TBevel;
    GroupBox4: TGroupBox;
    Label20: TLabel;
    CanvasWidthEd: TEdit;
    Label21: TLabel;
    Label22: TLabel;
    CanvasHeightEd: TEdit;
    Label25: TLabel;

    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);

    procedure SetModel(theModel: TEERModel);
    procedure NewTblPrefixBtnClick(Sender: TObject);
    procedure TablePrefixCLBoxClickCheck(Sender: TObject);
    procedure TablePrefixCLBoxDblClick(Sender: TObject);
    procedure DelTblPrefixBtnClick(Sender: TObject);
    procedure PluginRecordsStringGridClick(Sender: TObject);
    procedure MakeEditSettingsDefaultBtnClick(Sender: TObject);
    procedure SubmitBtnClick(Sender: TObject);
    procedure AbortBtnClick(Sender: TObject);
    procedure ApplyChanges;
    procedure SubmitBtnMouseEnter(Sender: TObject);
    procedure SubmitBtnMouseLeave(Sender: TObject);
    procedure UsePosGridCBoxClick(Sender: TObject);
    procedure RemovePluginDataClick(Sender: TObject);
    procedure PageControlChange(Sender: TObject);
    procedure PageControlTreeViewChange(Sender: TObject; Node: TTreeNode);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure CanvasWidthEdChange(Sender: TObject);
    procedure CanvasHeightEdChange(Sender: TObject);
  private
    { Private declarations }
    DiscardChanges: Boolean;
  public
    { Public declarations }
    EERModel: TEERModel;
  end;

var
  OptionsModelForm: TOptionsModelForm;

implementation

uses MainDM;

{$R *.xfm}

procedure TOptionsModelForm.FormCreate(Sender: TObject);
begin
  DMMain.InitForm(self);

  DiscardChanges:=False;

  //Translate PageControlTreeView Items
  PageControlTreeView.Items[0].Text:=DMMain.GetTranslatedMessage('General Options', 251);
  PageControlTreeView.Items[1].Text:=DMMain.GetTranslatedMessage('Editing Options', 255);
  PageControlTreeView.Items[2].Text:=DMMain.GetTranslatedMessage('Database Options', 253);
  PageControlTreeView.Items[3].Text:=DMMain.GetTranslatedMessage('Plugin Data', 256);

  FontCBox.Items.Assign(Screen.Fonts);

  PageControl.ActivePage:=GeneralSheet;

  PluginRecordsStringGrid.ColWidths[0]:=120;
  PluginRecordsStringGrid.ColWidths[1]:=40;

  PageControlTreeView.FullExpand;
  PageControl.ActivePageIndex:=0;
  PageControlTreeView.Selected:=PageControlTreeView.Items[0];

  PageControlTitleLbl.Font.Style:=[fsBold];
end;

procedure TOptionsModelForm.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  if(Not(DiscardChanges))then
    ApplyChanges;
end;

procedure TOptionsModelForm.ApplyChanges;
var i, newWidth, newHeight: integer;
begin
  if(ModelNameEd.Text<>'')then
    EERModel.SetModelName(ModelNameEd.Text);

  if(VersionEd.Text<>'')then
    EERModel.VersionStr:=VersionEd.Text;

  EERModel.ModelComments:=ModelCommentsMemo.Text;

  EERModel.TablePrefix.Assign(TablePrefixCLBox.Items);

  for i:=0 to TablePrefixCLBox.Items.Count-1 do
    if(TablePrefixCLBox.Checked[i])then
      EERModel.DefaultTablePrefix:=i;

  EERModel.DefaultDataType:=TEERDatatype(EERModel.Datatypes[DefDatatypeCBox.ItemIndex]).id;

  EERModel.RegionColors.Text:=RegionColorsMemo.Text;

  if(FontCBox.ItemIndex>=0)then
    EERModel.DefModelFont:=FontCBox.Items[FontCBox.ItemIndex];
  EERModel.RefreshFont;

  EERModel.UsePositionGrid:=UsePosGridCBox.Checked;
  try
    EERModel.PositionGrid.X:=StrToInt(GridXEd.Text);
    EERModel.PositionGrid.Y:=StrToInt(GridYEd.Text);
  except
    EERModel.PositionGrid.X:=20;
    EERModel.PositionGrid.Y:=20;
  end;

  //Canvas size was changed
  try
    newWidth:=StrToInt(CanvasWidthEd.Text);
    newHeight:=StrToInt(CanvasHeightEd.Text);
  except
    newWidth:=4096;
    newHeight:=2842;
  end;

  if(newWidth<>EERModel.EERModel_Width)or
    (newHeight<>EERModel.EERModel_Height)then
  begin
    EERModel.EERModel_Width:=newWidth;
    EERModel.EERModel_Height:=newHeight;

    EERModel.SetZoomFac(EERModel.GetZoomFac);
    sendCLXEvent(Application.MainForm.Handle, QCustomEvent_create(QEventType_RefreshNavPalette, EERModel));
  end;


  EERModel.TableNameInRefs:=TableNameInRefsCBox.Checked;
  EERModel.DefaultTableType:=DefaultTableTypeCBox.ItemIndex;
  EERModel.ActivateRefDefForNewRelations:=ActivateRefDefForNewRelationsCBox.Checked;

  EERModel.FKPrefix:=FKPrefixEd.Text;
  EERModel.FKPostfix:=FKPostfixEd.Text;

⌨️ 快捷键说明

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