Unify Init() method of database object editors.

This commit is contained in:
Ansgar Becker
2009-12-13 07:32:46 +00:00
parent 2dcf02feb3
commit 3aef5bb5e5
7 changed files with 52 additions and 73 deletions

View File

@@ -148,6 +148,7 @@ type
FModified: Boolean;
procedure SetModified(Value: Boolean);
public
procedure Init(ObjectName: WideString=''; ObjectType: TListNodeType=lntNone); Virtual; Abstract;
property Modified: Boolean read FModified write SetModified;
end;

View File

@@ -1849,7 +1849,7 @@ object MainForm: TMainForm
Enabled = False
Hint = 'Create view ...'
ImageIndex = 81
OnExecute = actCreateViewExecute
OnExecute = actCreateDBObjectExecute
end
object actDataFirst: TAction
Category = 'Data'
@@ -1909,7 +1909,7 @@ object MainForm: TMainForm
Enabled = False
Hint = 'Create new table in selected database'
ImageIndex = 14
OnExecute = actCreateTableExecute
OnExecute = actCreateDBObjectExecute
end
object actEmptyTables: TAction
Category = 'Database'
@@ -2201,7 +2201,7 @@ object MainForm: TMainForm
Caption = 'Stored routine'
Hint = 'Create stored routine|Create stored procedure or function'
ImageIndex = 119
OnExecute = actCreateRoutineExecute
OnExecute = actCreateDBObjectExecute
end
object actEditObject: TAction
Category = 'Database'
@@ -2246,7 +2246,7 @@ object MainForm: TMainForm
Caption = 'Trigger'
Hint = 'Create a trigger'
ImageIndex = 137
OnExecute = actCreateTriggerExecute
OnExecute = actCreateDBObjectExecute
end
end
object SaveDialog2: TSaveDialog

View File

@@ -450,8 +450,7 @@ type
procedure loadWindowConfig;
procedure saveWindowConfig;
procedure setDefaultWindowConfig;
procedure actCreateTableExecute(Sender: TObject);
procedure actCreateViewExecute(Sender: TObject);
procedure actCreateDBObjectExecute(Sender: TObject);
procedure menuConnectionsPopup(Sender: TObject);
procedure actExitApplicationExecute(Sender: TObject);
procedure DisplayChange(var msg: TMessage); message WM_DISPLAYCHANGE;
@@ -671,7 +670,6 @@ type
procedure actSelectAllExecute(Sender: TObject);
procedure EnumerateRecentFilters;
procedure LoadRecentFilter(Sender: TObject);
procedure actCreateRoutineExecute(Sender: TObject);
procedure DataGridScroll(Sender: TBaseVirtualTree; DeltaX, DeltaY: Integer);
procedure ListTablesEditing(Sender: TBaseVirtualTree; Node: PVirtualNode;
Column: TColumnIndex; var Allowed: Boolean);
@@ -705,7 +703,6 @@ type
procedure TimerFilterVTTimer(Sender: TObject);
procedure PageControlMainContextPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean);
procedure menuQueryHelpersGenerateStatementClick(Sender: TObject);
procedure actCreateTriggerExecute(Sender: TObject);
private
ReachedEOT : Boolean;
FDelimiter: String;
@@ -738,7 +735,7 @@ type
procedure SetVisibleListColumns( List: TVirtualStringTree; Columns: TWideStringList );
procedure ToggleFilterPanel(ForceVisible: Boolean = False);
procedure AutoCalcColWidths(Tree: TVirtualStringTree; PrevLayout: TWideStringlist = nil);
procedure PlaceObjectEditor(Which: TListNodeType);
function PlaceObjectEditor(Which: TListNodeType): TDBObjectEditor;
procedure SetTabCaption(PageIndex: Integer; Text: WideString);
function ConfirmTabClose(PageIndex: Integer): Boolean;
procedure SaveQueryMemo(Tab: TQueryTab; Filename: String; OnlySelection: Boolean);
@@ -852,7 +849,7 @@ type
function GetRegKeyTable: String;
procedure SaveListSetup( List: TVirtualStringTree );
procedure RestoreListSetup( List: TVirtualStringTree );
procedure SetEditorTabCaption(Editor: TFrame; ObjName: WideString);
procedure SetEditorTabCaption(Editor: TDBObjectEditor; ObjName: WideString);
procedure SetWindowCaption;
procedure OnMessageHandler(var Msg: TMsg; var Handled: Boolean);
function MaskMulti(str: WideString): WideString;
@@ -1820,18 +1817,6 @@ begin
end;
{**
Create a view
}
procedure TMainForm.actCreateViewExecute(Sender: TObject);
begin
tabEditor.TabVisible := True;
PagecontrolMain.ActivePage := tabEditor;
PlaceObjectEditor(lntView);
ViewEditor.Init;
end;
{**
Edit view
}
@@ -2456,12 +2441,23 @@ begin
end;
procedure TMainForm.actCreateTableExecute(Sender: TObject);
procedure TMainForm.actCreateDBObjectExecute(Sender: TObject);
var
Editor: TDBObjectEditor;
ObjType: TListNodeType;
a: TAction;
begin
// Create a new table, view, etc.
tabEditor.TabVisible := True;
PagecontrolMain.ActivePage := tabEditor;
PlaceObjectEditor(lntTable);
TableEditor.Init;
a := Sender as TAction;
ObjType := lntNone;
if a = actCreateTable then ObjType := lntTable
else if a = actCreateView then ObjType := lntView
else if a = actCreateRoutine then ObjType := lntProcedure
else if a = actCreateTrigger then ObjType := lntTrigger;
Editor := PlaceObjectEditor(ObjType);
Editor.Init;
end;
@@ -8077,24 +8073,6 @@ begin
end;
procedure TMainForm.actCreateRoutineExecute(Sender: TObject);
begin
tabEditor.TabVisible := True;
PagecontrolMain.ActivePage := tabEditor;
PlaceObjectEditor(lntProcedure);
RoutineEditor.Init;
end;
procedure TMainForm.actCreateTriggerExecute(Sender: TObject);
begin
tabEditor.TabVisible := True;
PagecontrolMain.ActivePage := tabEditor;
PlaceObjectEditor(lntTrigger);
TriggerEditor.Init;
end;
procedure TMainForm.DataGridScroll(Sender: TBaseVirtualTree; DeltaX, DeltaY: Integer);
var
query: String;
@@ -8152,11 +8130,10 @@ begin
end;
procedure TMainForm.PlaceObjectEditor(Which: TListNodeType);
var
frm: TFrame;
function TMainForm.PlaceObjectEditor(Which: TListNodeType): TDBObjectEditor;
begin
// Place the relevant editor frame onto the editor tab, hide all others
Result := nil;
if (not (Which in [lntTable, lntCrashedTable])) and Assigned(TableEditor) then
FreeAndNil(TableEditor);
if (Which <> lntView) and Assigned(ViewEditor) then
@@ -8168,26 +8145,26 @@ begin
if Which in [lntTable, lntCrashedTable] then begin
if not Assigned(TableEditor) then
TableEditor := TfrmTableEditor.Create(tabEditor);
frm := TableEditor;
Result := TableEditor;
end else if Which = lntView then begin
if not Assigned(ViewEditor) then
ViewEditor := TfrmView.Create(tabEditor);
frm := ViewEditor;
Result := ViewEditor;
end else if Which in [lntProcedure, lntFunction] then begin
if not Assigned(RoutineEditor) then
RoutineEditor := TfrmRoutineEditor.Create(tabEditor);
frm := RoutineEditor;
Result := RoutineEditor;
end else if Which = lntTrigger then begin
if not Assigned(TriggerEditor) then
TriggerEditor := TfrmTriggerEditor.Create(tabEditor);
frm := TriggerEditor;
Result := TriggerEditor;
end else
Exit;
frm.Parent := tabEditor;
Result.Parent := tabEditor;
end;
procedure TMainForm.SetEditorTabCaption(Editor: TFrame; ObjName: WideString);
procedure TMainForm.SetEditorTabCaption(Editor: TDBObjectEditor; ObjName: WideString);
var
ObjType, Cap: WideString;
IconIndex: Integer;
@@ -8219,7 +8196,7 @@ end;
procedure TMainForm.actEditObjectExecute(Sender: TObject);
var
NodeData: PVTreeData;
RoutineType: String;
RoutineType: TListNodeType;
db: WideString;
begin
debug('actEditObjectExecute()');
@@ -8260,11 +8237,7 @@ begin
lntFunction, lntProcedure: begin
PlaceObjectEditor(SelectedTable.NodeType);
if SelectedTable.NodeType = lntFunction then
RoutineType := 'FUNCTION'
else
RoutineType := 'PROCEDURE';
RoutineEditor.Init(SelectedTable.Text, RoutineType);
RoutineEditor.Init(SelectedTable.Text, SelectedTable.NodeType);
end;
lntTrigger: begin

View File

@@ -72,7 +72,7 @@ type
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
procedure Init(AlterRoutineName: WideString=''; AlterRoutineType: String='');
procedure Init(ObjectName: WideString=''; ObjectType: TListNodeType=lntNone); override;
end;
@@ -112,7 +112,7 @@ begin
end;
procedure TfrmRoutineEditor.Init(AlterRoutineName: WideString=''; AlterRoutineType: String='');
procedure TfrmRoutineEditor.Init(ObjectName: WideString=''; ObjectType: TListNodeType=lntNone);
var
Results: TMySQLQuery;
Create, Params: WideString;
@@ -122,8 +122,9 @@ var
i: Integer;
begin
MainForm.SetupSynEditors;
FAlterRoutineName := AlterRoutineName;
FAlterRoutineType := AlterRoutineType;
FAlterRoutineName := ObjectName;
if ObjectType = lntProcedure then FAlterRoutineType := 'PROCEDURE'
else FAlterRoutineType := 'FUNCTION';
editName.Text := FAlterRoutineName;
comboType.ItemIndex := 0;
comboReturns.Text := '';
@@ -492,8 +493,12 @@ end;
procedure TfrmRoutineEditor.btnDiscardClick(Sender: TObject);
var
t: TListNodeType;
begin
Init(FAlterRoutineName, FAlterRoutineType);
if FAlterRoutineType = 'PROCEDURE' then t := lntProcedure
else t := lntFunction;
Init(FAlterRoutineName, t);
end;

View File

@@ -188,7 +188,7 @@ type
{ Public declarations }
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure Init(AlterTableName: WideString='');
procedure Init(ObjectName: WideString=''; ObjectType: TListNodeType=lntNone); override;
end;
@@ -245,7 +245,7 @@ begin
end;
procedure TfrmTableEditor.Init(AlterTableName: WideString='');
procedure TfrmTableEditor.Init(ObjectName: WideString=''; ObjectType: TListNodeType=lntNone);
var
CreateTable, AttrName, AttrValue: WideString;
rx: TRegExpr;
@@ -254,12 +254,12 @@ begin
Screen.Cursor := crHourglass;
FLoaded := False;
// Start with "basic" tab activated when just called
if FAlterTableName <> AlterTableName then
if FAlterTableName <> ObjectName then
PageControlMain.ActivePage := tabBasic;
comboEngine.Items := Mainform.Connection.TableEngines;
comboEngine.ItemIndex := comboEngine.Items.IndexOf(Mainform.Connection.TableEngineDefault);
comboCollation.Items := Mainform.Connection.CollationList;
FAlterTableName := AlterTableName;
FAlterTableName := ObjectName;
listColumns.BeginUpdate;
FColumns.Clear;
btnClearIndexesClick(Self);

View File

@@ -34,7 +34,7 @@ type
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
procedure Init(EditTriggerName: WideString='');
procedure Init(ObjectName: WideString=''; ObjectType: TListNodeType=lntNone); override;
end;
implementation
@@ -73,12 +73,12 @@ begin
end;
procedure TfrmTriggerEditor.Init(EditTriggerName: WideString='');
procedure TfrmTriggerEditor.Init(ObjectName: WideString=''; ObjectType: TListNodeType=lntNone);
var
Definition, TableList: TMySQLQuery;
begin
Mainform.SetupSynEditors;
FEditTriggerName := EditTriggerName;
FEditTriggerName := ObjectName;
editName.Text := '';
SynMemoStatement.Text := '';
comboEvent.ItemIndex := 0;

View File

@@ -29,7 +29,7 @@ type
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
procedure Init(EditViewName: WideString='');
procedure Init(ObjectName: WideString=''; ObjectType: TListNodeType=lntNone); override;
end;
@@ -56,13 +56,13 @@ end;
{**
FormShow: Fill controls with content in edit mode
}
procedure TfrmView.Init(EditViewName: WideString='');
procedure TfrmView.Init(ObjectName: WideString=''; ObjectType: TListNodeType=lntNone);
var
Results: TMySQLQuery;
db: WideString;
rx: TRegExpr;
begin
FEditViewName := EditViewName;
FEditViewName := ObjectName;
if FEditViewName <> '' then begin
// Edit mode
editName.Text := FEditViewName;