📄 main.pas
字号:
SpaceDown: Boolean;
keycounter: integer;
//The EditorQueryForm which is docked to the QueryPnl
DockedEditorQueryForm: TForm;
end;
var
MainForm: TMainForm;
implementation
{$R *.xfm}
uses MainDM, ZoomSel, EER,
PaletteTools, PaletteModel, PaletteDatatypes, OptionsModel, Options,
EERPageSetup, PaletteNav, EERExportSQLScript, DBConnSelect,
EERReverseEngineering, EERSynchronisation, EERStoreInDatabase, Splash,
EERDM, EditorTable, EditorRelation, EditorRegion, EditorNote,
EditorImage, GUIDM, DBDM, EditorQuery, EditorQueryDragTarget,
Tips, EERPlaceModel, DBEERDM, EERExportImportDM;
procedure TMainForm.FormCreate(Sender: TObject);
begin
Application.OnEvent:=DoApplicationEvent;
//Get Version string, defined in DBDesigner4.dpr
Version:=SplashForm.VersionLbl.Caption;
//Initialize DMMain and DMGUI
DMMain:=TDMMain.Create(self);
DMGUI:=TDMGUI.Create(self);
//Initialize Language Translation
DMMain.LoadLanguageFromIniFile;
DMMain.LoadTranslatedMessages;
//Initialize DMDB and DMEER
DMDB:=TDMDB.Create(self);
DMEER:=TDMEER.Create(self);
DMEERExportImport:=TDMEERExportImport.Create(self);
DMMain.InitForm(self);
//Create the QueryDragTarget for all models
EditorQueryDragTargetForm:=TEditorQueryDragTargetForm.Create(self);
SetMenuItemChecks;
KeyWasUp:=True;
SpaceDown:=False;
Application.ShowMainForm:=True;
//WindowState:=wsMaximized;
Application.OnRestore:=ApplicationRestore;
//List for Tab key to hide palettes
TabHidePalettes:=TList.Create;
TabHasBeenPressed:=False;
TabHasBeenPressedBeforeInactive:=False;
PluginList:=TStringList.Create;
//Restore original size of ToolsPnls
DesignToolsPnl.Height:=487;
QueryToolsPnl.Height:=254;
{$IFDEF LINUX}
CheckLinuxDesktopFile;
{$ENDIF}
ActivateDeactivateCounter:=0;
ApplicationIsDeactivated:=False;
//Enable Timer for Palettes and Model load
ShowPalettesTmr.Enabled:=True;
{$IFNDEF USE_IXMLDBMODELType}
ImportERwin41XMLModelMI.Enabled:=False;
{$ENDIF}
end;
procedure TMainForm.FormDestroy(Sender: TObject);
begin
TabHidePalettes.Free;
PluginList.Free;
DMMain.SaveWinPos(self, True);
EditorQueryDragTargetForm.Free;
end;
procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//Clear tmpindices
DMMain.DelFilesFromDir(DMMain.SettingsPath, 'tmpindex*.*');
TEditorQueryForm(DockedEditorQueryForm).StoreLayout(DMGUI.DockedQueryPnlMode);
end;
procedure TMainForm.ZoomLblClick(Sender: TObject);
begin
if(ActiveMDIChild<>nil)then
begin
if(ActiveMDIChild.Classname='TEERForm')then
begin
ZoomSelForm:=TZoomSelForm.Create(self);
try
ZoomSelForm.Left:=Left+6;
ZoomSelForm.Top:=Top+Height-ZoomSelForm.Height+15;
ZoomSelForm.FocusZoom(TEERForm(ActiveMDIChild).EERModel.GetZoomFac);
if(ZoomSelForm.ShowModal=mrOK)then
TEERForm(ActiveMDIChild).EERModel.SetZoomFac(ZoomSelForm.ZoomFac);
finally
ZoomSelForm.Free;
end;
SetFocus;
end;
end;
end;
procedure TMainForm.ExitMIClick(Sender: TObject);
begin
Close;
end;
procedure TMainForm.AboutMIClick(Sender: TObject);
begin
SplashForm:=TSplashForm.Create(self);
try
SplashForm.VersionLbl.Caption:=Version;
SplashForm.ShowModal;
finally
//SplashForm.Free;
end;
end;
procedure TMainForm.FormShow(Sender: TObject);
begin
//WindowState:=wsMaximized;
DMMain.RestoreWinPos(self, True);
end;
procedure TMainForm.SaveAsMIClick(Sender: TObject);
begin
if(ActiveMDIChild<>nil)then
if(ActiveMDIChild.Classname='TEERForm')then
begin
TEERForm(ActiveMDIChild).SaveAs;
end;
end;
procedure TMainForm.SaveMIClick(Sender: TObject);
begin
if(ActiveMDIChild<>nil)then
if(ActiveMDIChild.Classname='TEERForm')then
begin
if(TEERForm(ActiveMDIChild).EERModel.ModelFilename='')or(CompareText(Copy(TEERForm(ActiveMDIChild).EERModel.ModelFilename, 1, Length('Noname')), 'Noname')=0)then
SaveAsMIClick(self)
else
begin
TEERForm(ActiveMDIChild).EERModel.SaveToFile(TEERForm(ActiveMDIChild).EERModel.ModelFilename);
TEERForm(ActiveMDIChild).EERModel.IsChanged:=False;
DisableSaveImgs;
DMGUI.SetStatusCaption(DMMain.GetTranslatedMessage('The model was successfully saved to %s.', 198, TEERForm(ActiveMDIChild).EERModel.ModelFilename));
end;
end;
end;
procedure TMainForm.OpenFile(fname: string; AppendModel: Boolean);
var theEERForm: TEERForm;
theModelStr: TStringList;
begin
if(Not(FileExists(fname)))then
raise EInOutError.Create(DMMain.GetTranslatedMessage('File not found:', 11)+#13#10+
fname);
if(AppendModel)and(ActiveMDIChild<>nil)then
begin
theEERForm:=TEERForm(ActiveMDIChild);
//Get new IDs for objects in the file
theModelStr:=TStringList.Create;
try
theModelStr.LoadFromFile(fname);
theModelStr.Text:=DMEER.AssignNewIDsToEERObjects(theModelStr.Text);
//Create temp file
fname:=DMMain.SettingsPath+'plugin_tmp.xml';
DeleteFile(fname);
theModelStr.SaveToFile(fname);
finally
theModelStr.Free;
end;
end
else
begin
theEERForm:=nil;
if(ActiveMDIChild<>nil)then
if(ActiveMDIChild.Classname='TEERForm')then
if(CompareText(Copy(TEERForm(ActiveMDIChild).EERModel.ModelFilename, 1, 6), 'Noname')=0)and
(Not(TEERForm(ActiveMDIChild).EERModel.IsChanged))then
theEERForm:=TEERForm(ActiveMDIChild);
if(theEERForm=nil)then
theEERForm:=TEERForm(NewEERModel);
end;
theEERForm.EERModel.LoadFromFile(fname, Not(((AppendModel)and(ActiveMDIChild<>nil))), ((AppendModel)and(ActiveMDIChild<>nil)),
Not(((AppendModel)and(ActiveMDIChild<>nil))), ((AppendModel)and(ActiveMDIChild<>nil)));
//Add file to recentopenfiles list
if(Not((AppendModel)and(ActiveMDIChild<>nil)))then
begin
DMGUI.AddFileToRecentFilesList(fname);
end;
//Delete temp file if the model was appended
if(AppendModel)and(ActiveMDIChild<>nil)then
DeleteFile(fname);
theEERForm.WindowState:=wsMaximized;
//Because of Delphi Bug -> MainMenu is aligned right
//Refresh Menu (because of CLX bug)
{Menu:=nil;
Menu:=MainMenu;}
end;
procedure TMainForm.DisplayEntityLevelMIClick(Sender: TObject);
begin
TMenuItem(Sender).Checked:=True;
DMEER.DisplayMode:=TMenuItem(Sender).Tag;
if(ActiveMDIChild<>nil)then
if(ActiveMDIChild.Classname='TEERForm')then
TEERForm(ActiveMDIChild).EERModel.Refresh;
end;
procedure TMainForm.PhysicalSchemaLevelMIClick(Sender: TObject);
begin
TMenuItem(Sender).Checked:=Not(TMenuItem(Sender).Checked);
DMEER.DisplayPhysicalSchema:=TMenuItem(Sender).Checked;
if(ActiveMDIChild<>nil)then
if(ActiveMDIChild.Classname='TEERForm')then
TEERForm(ActiveMDIChild).EERModel.Refresh;
end;
procedure TMainForm.NewMIClick(Sender: TObject);
var theForm: TForm;
begin
theForm:=NewEERModel;
theForm.WindowState:=wsMaximized;
end;
function TMainForm.NewEERModel: TForm;
var theEERForm: TEERForm;
begin
theEERForm:=TEERForm.Create(self);
//theEERForm.WindowState:=wsMaximized;
AddToMDIWindowMenu(theEERForm);
NewEERModel:=theEERForm;
end;
procedure TMainForm.AddToMDIWindowMenu(theForm: TForm);
var theMenuItem: TMenuItem;
i: integer;
begin
//Create the ChildForms MenuItem in the Window Menu
for i:=0 to WindowsMI.Count-1 do
if(WindowsMI.Items[i].GroupIndex=59)then
WindowsMI.Items[i].Checked:=False;
theMenuItem:=TMenuItem.Create(self);
theMenuItem.Name:=theForm.Name+'MI';
theMenuItem.Caption:=TEERForm(theForm).EERModel.GetModelName;
theMenuItem.GroupIndex:=59;
theMenuItem.RadioItem:=True;
theMenuItem.Checked:=True;
theMenuItem.OnClick:=MDIWindowMIClick;
TEERForm(theForm).theFormMenuItem:=theMenuItem;
WindowsMI.Add(theMenuItem);
end;
procedure TMainForm.MDIWindowMIClick(Sender: TObject);
var i: integer;
begin
//Set Focus to selected ChildForm
for i:=0 to WindowsMI.Count-1 do
if(WindowsMI.Items[i].GroupIndex=59)then
WindowsMI.Items[i].Checked:=False;
for i:=0 to MDIChildCount-1 do
if(TEERForm(MDIChildren[I]).theFormMenuItem=Sender)then
TEERForm(MDIChildren[I]).SetFocus;
TMenuItem(Sender).Checked:=True;
end;
procedure TMainForm.CascadeMIClick(Sender: TObject);
begin
Cascade;
end;
procedure TMainForm.TileMIClick(Sender: TObject);
begin
Tile;
end;
procedure TMainForm.ToolsMIClick(Sender: TObject);
begin
ToolsMI.Checked:=Not(ToolsMI.Checked);
PaletteToolsForm.Visible:=ToolsMI.Checked;
end;
procedure TMainForm.ToolsdockedMIClick(Sender: TObject);
begin
ToolsdockedMI.Checked:=Not(ToolsdockedMI.Checked);
ToolsPnl.Visible:=ToolsdockedMI.Checked;
end;
procedure TMainForm.DatatypesMIClick(Sender: TObject);
begin
DatatypesMI.Checked:=Not(DatatypesMI.Checked);
PaletteDataTypesForm.Visible:=DatatypesMI.Checked;
end;
procedure TMainForm.DBModelMIClick(Sender: TObject);
begin
DBModelMI.Checked:=Not(DBModelMI.Checked);
PaletteModelFrom.Visible:=DBModelMI.Checked;
end;
procedure TMainForm.CloseMIClick(Sender: TObject);
begin
if(ActiveMDIChild<>nil)then
if(ActiveMDIChild.Classname='TEERForm')then
ActiveMDIChild.Close;
end;
procedure TMainForm.EERModelOptionsMIClick(Sender: TObject);
begin
if(ActiveMDIChild<>nil)then
if(ActiveMDIChild.Classname='TEERForm')then
begin
OptionsModelForm:=TOptionsModelForm.Create(self);
try
OptionsModelForm.SetModel(TEERForm(ActiveMDIChild).EERModel);
OptionsModelForm.ShowModal;
finally
OptionsModelForm.Free;
end;
end;
end;
procedure TMainForm.DeleteMIClick(Sender: TObject);
var ObjectList: TList;
i, j: integer;
s: string;
begin
if(ActiveMDIChild<>nil)then
if(ActiveMDIChild.Classname='TEERForm')then
begin
ObjectList:=TList.Create;
try
TEERForm(ActiveMDIChild).EERModel.GetEERObjectList([EERAllObjects], ObjectList, True);
//Add ALL relations from tables
for i:=0 to ObjectList.Count-1 do
if(TEERObj(ObjectList[i]) is TEERTable)then
begin
//Add starting Relations
for j:=0 to TEERTable(ObjectList[i]).RelStart.Count-1 do
if(ObjectList.IndexOf(TEERTable(ObjectList[i]).RelStart[j])=-1)then
ObjectList.Add(TEERTable(ObjectList[i]).RelStart[j]);
//Add ending Relations
for j:=0 to TEERTable(ObjectList[i]).RelEnd.Count-1 do
if(ObjectList.IndexOf(TEERTable(ObjectList[i]).RelEnd[j])=-1)then
ObjectList.Add(TEERTable(ObjectList[i]).RelEnd[j]);
end;
TEERForm(ActiveMDIChild).EERModel.SortEERObjectListByObjName(ObjectList);
s:='';
for i:=0 to ObjectList.Count-1 do
s:=s+TEERObj(ObjectList[i]).ObjName+', ';
s:=Copy(s, 1, Length(s)-2);
if(MessageDlg('Are you sure you want to delete the selected Objects?'+#13#10+
'The following Objects will be deleted:'+#13#10#13#10+
s, mtConfirmation, [mbYes, mbNo], 0)=mrYes)then
TEERForm(ActiveMDIChild).EERModel.DeleteSelectedObjs;
finally
ObjectList.Free;
end;
end;
end;
procedure TMainForm.DeleteMIShow(Sender: TObject);
begin
TMenuItem(Sender).Enabled:=False;
if(ActiveMDIChild<>nil)then
if(ActiveMDIChild.Classname='TEERForm')then
if(TEERForm(ActiveMDIChild).EERModel.GetSelectedObjsCount>0)then
TMenuItem(Sender).Enabled:=True;
end;
procedure TMainForm.NotationStandardMIClick(Sender: TObject);
begin
TMenuItem(Sender).Checked:=Not(TMenuItem(Sender).Checked);
DMEER.Notation:=TMenuItem(Sender).Tag;
if(ActiveMDIChild<>nil)then
if(ActiveMDIChild.Classname='TEERForm')then
begin
TEERForm(ActiveMDIChild).EERModel.SetZoomFac(TEERForm(ActiveMDIChild).EERModel.GetZoomFac);
TEERForm(ActiveMDIChild).EERModel.Refresh;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -