mirror of
https://github.com/HeidiSQL/HeidiSQL.git
synced 2025-08-26 11:17:57 +08:00
Refactor Maintenance dialog to fullfill reasonable user wishes in bug #1865477 :
- Rename components with reasonable names - Use caching mechanism from Childwin.FetchDBTableList to fill tables listbox - Make form resizable, store and restore customized dimensions - Keep form instance alive and recycle that instance as long as Mainform lives - Fix confusion with action item (wasn't really used in both menuitems) - Add documentation
This commit is contained in:
@ -155,6 +155,8 @@ const
|
|||||||
REGNAME_UPDATECHECK_INTERVAL = 'UpdatecheckInterval';
|
REGNAME_UPDATECHECK_INTERVAL = 'UpdatecheckInterval';
|
||||||
DEFAULT_UPDATECHECK_INTERVAL = 3;
|
DEFAULT_UPDATECHECK_INTERVAL = 3;
|
||||||
REGNAME_LAST_UPDATECHECK = 'UpdatecheckLastrun';
|
REGNAME_LAST_UPDATECHECK = 'UpdatecheckLastrun';
|
||||||
|
REGNAME_MAINTWINWIDTH = 'Maintenance_WindowWidth';
|
||||||
|
REGNAME_MAINTWINHEIGHT = 'Maintenance_WindowHeight';
|
||||||
|
|
||||||
REGPREFIX_COLWIDTHS = 'ColWidths_';
|
REGPREFIX_COLWIDTHS = 'ColWidths_';
|
||||||
REGPREFIX_COLSVISIBLE = 'ColsVisible_';
|
REGPREFIX_COLSVISIBLE = 'ColsVisible_';
|
||||||
|
@ -1817,9 +1817,7 @@ object MDIChild: TMDIChild
|
|||||||
OnClick = MenuRenameTableClick
|
OnClick = MenuRenameTableClick
|
||||||
end
|
end
|
||||||
object menuMaintenance: TMenuItem
|
object menuMaintenance: TMenuItem
|
||||||
Caption = 'Maintenance'
|
Action = MainForm.actMaintenance
|
||||||
ImageIndex = 39
|
|
||||||
OnClick = menuMaintenanceClick
|
|
||||||
end
|
end
|
||||||
object N18: TMenuItem
|
object N18: TMenuItem
|
||||||
Caption = '-'
|
Caption = '-'
|
||||||
|
@ -408,7 +408,6 @@ type
|
|||||||
procedure EditQuery1Click(Sender: TObject);
|
procedure EditQuery1Click(Sender: TObject);
|
||||||
procedure Markall3Click(Sender: TObject);
|
procedure Markall3Click(Sender: TObject);
|
||||||
procedure ReadWindowOptions;
|
procedure ReadWindowOptions;
|
||||||
procedure menuMaintenanceClick(Sender: TObject);
|
|
||||||
procedure ListTablesDblClick(Sender: TObject);
|
procedure ListTablesDblClick(Sender: TObject);
|
||||||
procedure TimerConnectErrorCloseWindowTimer(Sender: TObject);
|
procedure TimerConnectErrorCloseWindowTimer(Sender: TObject);
|
||||||
procedure gridDataTitleClick(Column: TColumn);
|
procedure gridDataTitleClick(Column: TColumn);
|
||||||
@ -664,7 +663,7 @@ implementation
|
|||||||
|
|
||||||
uses
|
uses
|
||||||
Main, fieldeditor,
|
Main, fieldeditor,
|
||||||
optimizetables, copytable, sqlhelp, printlist,
|
copytable, sqlhelp, printlist,
|
||||||
column_selection, data_sorting, runsqlfile, mysql_structures,
|
column_selection, data_sorting, runsqlfile, mysql_structures,
|
||||||
Registry;
|
Registry;
|
||||||
|
|
||||||
@ -2490,7 +2489,7 @@ begin
|
|||||||
MenuFlushTableswithreadlock.Enabled := FrmIsFocussed;
|
MenuFlushTableswithreadlock.Enabled := FrmIsFocussed;
|
||||||
MenuFlushStatus.Enabled := FrmIsFocussed;
|
MenuFlushStatus.Enabled := FrmIsFocussed;
|
||||||
UserManager.Enabled := FrmIsFocussed;
|
UserManager.Enabled := FrmIsFocussed;
|
||||||
Diagnostics.Enabled := FrmIsFocussed;
|
actMaintenance.Enabled := FrmIsFocussed;
|
||||||
InsertFiles.Enabled := FrmIsFocussed;
|
InsertFiles.Enabled := FrmIsFocussed;
|
||||||
{***
|
{***
|
||||||
Activate export-options if we're on Data- or Query-tab
|
Activate export-options if we're on Data- or Query-tab
|
||||||
@ -3581,12 +3580,6 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure TMDIChild.menuMaintenanceClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
TableDiagnosticsWindow(Self);
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
{**
|
{**
|
||||||
Clear Query memo
|
Clear Query memo
|
||||||
}
|
}
|
||||||
|
@ -482,8 +482,7 @@ object MainForm: TMainForm
|
|||||||
Action = UserManager
|
Action = UserManager
|
||||||
end
|
end
|
||||||
object menuMaintenance: TMenuItem
|
object menuMaintenance: TMenuItem
|
||||||
Action = Diagnostics
|
Action = actMaintenance
|
||||||
Caption = 'Maintenance'
|
|
||||||
end
|
end
|
||||||
object N7: TMenuItem
|
object N7: TMenuItem
|
||||||
Caption = '-'
|
Caption = '-'
|
||||||
@ -659,13 +658,13 @@ object MainForm: TMainForm
|
|||||||
Hint = 'About MySQL-Front'
|
Hint = 'About MySQL-Front'
|
||||||
OnExecute = ShowAboutBoxExecute
|
OnExecute = ShowAboutBoxExecute
|
||||||
end
|
end
|
||||||
object Diagnostics: TAction
|
object actMaintenance: TAction
|
||||||
Tag = 35
|
Tag = 35
|
||||||
Caption = 'Table-Diagnostics'
|
Caption = 'Maintenance'
|
||||||
Enabled = False
|
Enabled = False
|
||||||
Hint = 'Optimize, repair and analyse tables'
|
Hint = 'Optimize, repair and analyse tables'
|
||||||
ImageIndex = 39
|
ImageIndex = 39
|
||||||
OnExecute = DiagnosticsExecute
|
OnExecute = actMaintenanceExecute
|
||||||
end
|
end
|
||||||
object CopyHTMLtable: TAction
|
object CopyHTMLtable: TAction
|
||||||
Tag = 49
|
Tag = 49
|
||||||
|
@ -17,7 +17,7 @@ uses
|
|||||||
ActnList, ImgList, Registry, ShellApi, ToolWin, Clipbrd, db, DBCtrls,
|
ActnList, ImgList, Registry, ShellApi, ToolWin, Clipbrd, db, DBCtrls,
|
||||||
SynMemo, synedit, SynEditTypes, ZDataSet, ZSqlProcessor,
|
SynMemo, synedit, SynEditTypes, ZDataSet, ZSqlProcessor,
|
||||||
HeidiComp, sqlhelp, MysqlQueryThread, Childwin, VirtualTrees, TntDBGrids,
|
HeidiComp, sqlhelp, MysqlQueryThread, Childwin, VirtualTrees, TntDBGrids,
|
||||||
StrUtils, DateUtils, PngImageList;
|
StrUtils, DateUtils, PngImageList, OptimizeTables;
|
||||||
|
|
||||||
type
|
type
|
||||||
TMainForm = class(TForm)
|
TMainForm = class(TForm)
|
||||||
@ -66,7 +66,7 @@ type
|
|||||||
menuReadme: TMenuItem;
|
menuReadme: TMenuItem;
|
||||||
UserManager: TAction;
|
UserManager: TAction;
|
||||||
ShowAboutBox: TAction;
|
ShowAboutBox: TAction;
|
||||||
Diagnostics: TAction;
|
actMaintenance: TAction;
|
||||||
menuMaintenance: TMenuItem;
|
menuMaintenance: TMenuItem;
|
||||||
ImExport1: TMenuItem;
|
ImExport1: TMenuItem;
|
||||||
CopyContentsasHTMLTable1: TMenuItem;
|
CopyContentsasHTMLTable1: TMenuItem;
|
||||||
@ -163,7 +163,7 @@ type
|
|||||||
procedure FormResize(Sender: TObject);
|
procedure FormResize(Sender: TObject);
|
||||||
procedure UserManagerExecute(Sender: TObject);
|
procedure UserManagerExecute(Sender: TObject);
|
||||||
procedure ShowAboutBoxExecute(Sender: TObject);
|
procedure ShowAboutBoxExecute(Sender: TObject);
|
||||||
procedure DiagnosticsExecute(Sender: TObject);
|
procedure actMaintenanceExecute(Sender: TObject);
|
||||||
procedure CopyHTMLtableExecute(Sender: TObject);
|
procedure CopyHTMLtableExecute(Sender: TObject);
|
||||||
procedure Copy2CSVExecute(Sender: TObject);
|
procedure Copy2CSVExecute(Sender: TObject);
|
||||||
procedure PrintListExecute(Sender: TObject);
|
procedure PrintListExecute(Sender: TObject);
|
||||||
@ -203,6 +203,7 @@ type
|
|||||||
function GetParamValue(const paramChar: Char; const paramName:
|
function GetParamValue(const paramChar: Char; const paramName:
|
||||||
string; var curIdx: Byte; out paramValue: string): Boolean;
|
string; var curIdx: Byte; out paramValue: string): Boolean;
|
||||||
public
|
public
|
||||||
|
MaintenanceForm: TOptimize;
|
||||||
procedure OpenRegistry(Session: String = '');
|
procedure OpenRegistry(Session: String = '');
|
||||||
function GetRegValue( valueName: String; defaultValue: Integer; Session: String = '' ) : Integer; Overload;
|
function GetRegValue( valueName: String; defaultValue: Integer; Session: String = '' ) : Integer; Overload;
|
||||||
function GetRegValue( valueName: String; defaultValue: Boolean; Session: String = '' ) : Boolean; Overload;
|
function GetRegValue( valueName: String; defaultValue: Boolean; Session: String = '' ) : Boolean; Overload;
|
||||||
@ -251,7 +252,6 @@ uses
|
|||||||
loaddata,
|
loaddata,
|
||||||
usermanager,
|
usermanager,
|
||||||
options,
|
options,
|
||||||
optimizetables,
|
|
||||||
printlist,
|
printlist,
|
||||||
copytable,
|
copytable,
|
||||||
insertfiles,
|
insertfiles,
|
||||||
@ -711,10 +711,12 @@ begin
|
|||||||
AboutWindow (Self);
|
AboutWindow (Self);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainForm.DiagnosticsExecute(Sender: TObject);
|
procedure TMainForm.actMaintenanceExecute(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
// optimize / repair... tables
|
// optimize / repair... tables
|
||||||
TableDiagnosticsWindow (Self);
|
if MaintenanceForm = nil then
|
||||||
|
MaintenanceForm := TOptimize.Create(Self);
|
||||||
|
MaintenanceForm.ShowModal;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
object optimize: Toptimize
|
object optimize: Toptimize
|
||||||
Left = 734
|
Left = 734
|
||||||
Top = 126
|
Top = 126
|
||||||
BorderStyle = bsDialog
|
BorderIcons = [biSystemMenu, biMaximize]
|
||||||
Caption = 'Table-Diagnostics'
|
Caption = 'Maintenance'
|
||||||
ClientHeight = 386
|
ClientHeight = 409
|
||||||
ClientWidth = 433
|
ClientWidth = 431
|
||||||
Color = clBtnFace
|
Color = clBtnFace
|
||||||
Font.Charset = DEFAULT_CHARSET
|
Font.Charset = DEFAULT_CHARSET
|
||||||
Font.Color = clWindowText
|
Font.Color = clWindowText
|
||||||
@ -13,111 +13,126 @@ object optimize: Toptimize
|
|||||||
Font.Style = []
|
Font.Style = []
|
||||||
OldCreateOrder = False
|
OldCreateOrder = False
|
||||||
Position = poMainFormCenter
|
Position = poMainFormCenter
|
||||||
|
OnCreate = FormCreate
|
||||||
|
OnDestroy = FormDestroy
|
||||||
OnShow = FormShow
|
OnShow = FormShow
|
||||||
|
DesignSize = (
|
||||||
|
431
|
||||||
|
409)
|
||||||
PixelsPerInch = 96
|
PixelsPerInch = 96
|
||||||
TextHeight = 13
|
TextHeight = 13
|
||||||
object Label1: TLabel
|
object lblSelect: TLabel
|
||||||
Left = 16
|
Left = 8
|
||||||
Top = 16
|
Top = 8
|
||||||
Width = 145
|
Width = 145
|
||||||
Height = 13
|
Height = 13
|
||||||
Caption = 'Select Database and Table(s):'
|
Caption = 'Select Database and Table(s):'
|
||||||
end
|
end
|
||||||
object Label3: TLabel
|
object lblResults: TLabel
|
||||||
Left = 16
|
Left = 8
|
||||||
Top = 224
|
Top = 211
|
||||||
Width = 39
|
Width = 39
|
||||||
Height = 13
|
Height = 13
|
||||||
Caption = 'Results:'
|
Caption = 'Results:'
|
||||||
end
|
end
|
||||||
object TablesCheckListBox: TCheckListBox
|
object TablesCheckListBox: TCheckListBox
|
||||||
Left = 16
|
Left = 8
|
||||||
Top = 56
|
Top = 50
|
||||||
Width = 218
|
Width = 239
|
||||||
Height = 145
|
Height = 155
|
||||||
OnClickCheck = TablesCheckListBoxClickCheck
|
OnClickCheck = TablesCheckListBoxClickCheck
|
||||||
|
Anchors = [akLeft, akTop, akRight]
|
||||||
Columns = 2
|
Columns = 2
|
||||||
ItemHeight = 13
|
ItemHeight = 13
|
||||||
TabOrder = 2
|
TabOrder = 2
|
||||||
end
|
end
|
||||||
object DBComboBox: TComboBox
|
object DBComboBox: TComboBox
|
||||||
Left = 62
|
Left = 54
|
||||||
Top = 32
|
Top = 26
|
||||||
Width = 171
|
Width = 193
|
||||||
Height = 21
|
Height = 21
|
||||||
Style = csDropDownList
|
Style = csDropDownList
|
||||||
|
Anchors = [akLeft, akTop, akRight]
|
||||||
ItemHeight = 13
|
ItemHeight = 13
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
OnChange = DBComboBoxChange
|
OnChange = DBComboBoxChange
|
||||||
end
|
end
|
||||||
object Button3: TButton
|
object btnClose: TButton
|
||||||
Left = 328
|
Left = 326
|
||||||
Top = 360
|
Top = 378
|
||||||
Width = 99
|
Width = 99
|
||||||
Height = 25
|
Height = 25
|
||||||
|
Anchors = [akRight, akBottom]
|
||||||
Cancel = True
|
Cancel = True
|
||||||
Caption = 'Close'
|
Caption = 'Close'
|
||||||
Default = True
|
Default = True
|
||||||
ModalResult = 2
|
ModalResult = 2
|
||||||
TabOrder = 12
|
TabOrder = 12
|
||||||
end
|
end
|
||||||
object CheckBoxQuickRepair: TCheckBox
|
object cbxQuickRepair: TCheckBox
|
||||||
Left = 360
|
Left = 358
|
||||||
Top = 168
|
Top = 170
|
||||||
Width = 57
|
Width = 57
|
||||||
Height = 17
|
Height = 17
|
||||||
|
Anchors = [akTop, akRight]
|
||||||
Caption = 'Quick'
|
Caption = 'Quick'
|
||||||
TabOrder = 9
|
TabOrder = 9
|
||||||
end
|
end
|
||||||
object CheckBoxQuickCheck: TCheckBox
|
object cbxQuickCheck: TCheckBox
|
||||||
Left = 360
|
Left = 358
|
||||||
Top = 88
|
Top = 90
|
||||||
Width = 57
|
Width = 57
|
||||||
Height = 17
|
Height = 17
|
||||||
|
Anchors = [akTop, akRight]
|
||||||
Caption = 'Quick'
|
Caption = 'Quick'
|
||||||
TabOrder = 5
|
TabOrder = 5
|
||||||
end
|
end
|
||||||
object btnOptimize: TButton
|
object btnOptimize: TButton
|
||||||
Left = 248
|
Left = 253
|
||||||
Top = 56
|
Top = 50
|
||||||
Width = 99
|
Width = 99
|
||||||
Height = 25
|
Height = 25
|
||||||
Caption = 'Optimze'
|
Anchors = [akTop, akRight]
|
||||||
|
Caption = 'Optimize'
|
||||||
TabOrder = 3
|
TabOrder = 3
|
||||||
OnClick = Optimze
|
OnClick = Optimize
|
||||||
end
|
end
|
||||||
object btnCheck: TButton
|
object btnCheck: TButton
|
||||||
Left = 248
|
Left = 253
|
||||||
Top = 96
|
Top = 90
|
||||||
Width = 99
|
Width = 99
|
||||||
Height = 25
|
Height = 25
|
||||||
|
Anchors = [akTop, akRight]
|
||||||
Caption = 'Check'
|
Caption = 'Check'
|
||||||
TabOrder = 4
|
TabOrder = 4
|
||||||
OnClick = Check
|
OnClick = Check
|
||||||
end
|
end
|
||||||
object btnAnalyze: TButton
|
object btnAnalyze: TButton
|
||||||
Left = 248
|
Left = 253
|
||||||
Top = 136
|
Top = 130
|
||||||
Width = 99
|
Width = 99
|
||||||
Height = 25
|
Height = 25
|
||||||
|
Anchors = [akTop, akRight]
|
||||||
Caption = 'Analyze'
|
Caption = 'Analyze'
|
||||||
TabOrder = 7
|
TabOrder = 7
|
||||||
OnClick = Analyze
|
OnClick = Analyze
|
||||||
end
|
end
|
||||||
object btnRepair: TButton
|
object btnRepair: TButton
|
||||||
Left = 248
|
Left = 253
|
||||||
Top = 176
|
Top = 170
|
||||||
Width = 99
|
Width = 99
|
||||||
Height = 25
|
Height = 25
|
||||||
|
Anchors = [akTop, akRight]
|
||||||
Caption = 'Repair'
|
Caption = 'Repair'
|
||||||
TabOrder = 8
|
TabOrder = 8
|
||||||
OnClick = Repair
|
OnClick = Repair
|
||||||
end
|
end
|
||||||
object ListViewResults: TListView
|
object ListResults: TListView
|
||||||
Left = 16
|
Left = 8
|
||||||
Top = 240
|
Top = 230
|
||||||
Width = 409
|
Width = 417
|
||||||
Height = 105
|
Height = 142
|
||||||
|
Anchors = [akLeft, akTop, akRight, akBottom]
|
||||||
Columns = <>
|
Columns = <>
|
||||||
ColumnClick = False
|
ColumnClick = False
|
||||||
MultiSelect = True
|
MultiSelect = True
|
||||||
@ -126,36 +141,36 @@ object optimize: Toptimize
|
|||||||
TabOrder = 11
|
TabOrder = 11
|
||||||
ViewStyle = vsReport
|
ViewStyle = vsReport
|
||||||
end
|
end
|
||||||
object ToolBar1: TToolBar
|
object tlbCheckToggle: TToolBar
|
||||||
Left = 16
|
Left = 8
|
||||||
Top = 32
|
Top = 26
|
||||||
Width = 46
|
Width = 46
|
||||||
Height = 22
|
Height = 22
|
||||||
Align = alNone
|
Align = alNone
|
||||||
AutoSize = True
|
AutoSize = True
|
||||||
Caption = 'ToolBar1'
|
Caption = 'tlbCheckToggle'
|
||||||
EdgeInner = esNone
|
EdgeInner = esNone
|
||||||
EdgeOuter = esNone
|
EdgeOuter = esNone
|
||||||
Images = MainForm.PngImageListMain
|
Images = MainForm.PngImageListMain
|
||||||
ParentShowHint = False
|
ParentShowHint = False
|
||||||
ShowHint = True
|
ShowHint = True
|
||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
object ToolButton1: TToolButton
|
object tlbCheckNone: TToolButton
|
||||||
Left = 0
|
Left = 0
|
||||||
Top = 0
|
Top = 0
|
||||||
Hint = 'Check none'
|
Hint = 'Check none'
|
||||||
Caption = 'ToolButton1'
|
Caption = 'tlbCheckNone'
|
||||||
ImageIndex = 65
|
ImageIndex = 65
|
||||||
ParentShowHint = False
|
ParentShowHint = False
|
||||||
ShowHint = True
|
ShowHint = True
|
||||||
OnClick = CheckListToggle
|
OnClick = CheckListToggle
|
||||||
end
|
end
|
||||||
object ToolButton2: TToolButton
|
object tlbCheckAll: TToolButton
|
||||||
Tag = 1
|
Tag = 1
|
||||||
Left = 23
|
Left = 23
|
||||||
Top = 0
|
Top = 0
|
||||||
Hint = 'Check all'
|
Hint = 'Check all'
|
||||||
Caption = 'ToolButton2'
|
Caption = 'tlbCheckAll'
|
||||||
ImageIndex = 64
|
ImageIndex = 64
|
||||||
ParentShowHint = False
|
ParentShowHint = False
|
||||||
ShowHint = True
|
ShowHint = True
|
||||||
@ -163,18 +178,20 @@ object optimize: Toptimize
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
object cbxExtendedCheck: TCheckBox
|
object cbxExtendedCheck: TCheckBox
|
||||||
Left = 360
|
Left = 358
|
||||||
Top = 111
|
Top = 108
|
||||||
Width = 70
|
Width = 70
|
||||||
Height = 17
|
Height = 17
|
||||||
|
Anchors = [akTop, akRight]
|
||||||
Caption = 'Extended'
|
Caption = 'Extended'
|
||||||
TabOrder = 6
|
TabOrder = 6
|
||||||
end
|
end
|
||||||
object cbxExtendedRepair: TCheckBox
|
object cbxExtendedRepair: TCheckBox
|
||||||
Left = 360
|
Left = 358
|
||||||
Top = 191
|
Top = 188
|
||||||
Width = 70
|
Width = 70
|
||||||
Height = 17
|
Height = 17
|
||||||
|
Anchors = [akTop, akRight]
|
||||||
Caption = 'Extended'
|
Caption = 'Extended'
|
||||||
TabOrder = 10
|
TabOrder = 10
|
||||||
end
|
end
|
||||||
|
@ -10,31 +10,33 @@ interface
|
|||||||
|
|
||||||
uses
|
uses
|
||||||
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
||||||
ExtCtrls, StdCtrls, CheckLst, comctrls, Buttons, ToolWin, Db;
|
ExtCtrls, StdCtrls, CheckLst, comctrls, Buttons, ToolWin, Db, Registry;
|
||||||
|
|
||||||
type
|
type
|
||||||
Toptimize = class(TForm)
|
Toptimize = class(TForm)
|
||||||
TablesCheckListBox: TCheckListBox;
|
TablesCheckListBox: TCheckListBox;
|
||||||
DBComboBox: TComboBox;
|
DBComboBox: TComboBox;
|
||||||
Label1: TLabel;
|
lblSelect: TLabel;
|
||||||
Button3: TButton;
|
btnClose: TButton;
|
||||||
CheckBoxQuickRepair: TCheckBox;
|
cbxQuickRepair: TCheckBox;
|
||||||
CheckBoxQuickCheck: TCheckBox;
|
cbxQuickCheck: TCheckBox;
|
||||||
btnOptimize: TButton;
|
btnOptimize: TButton;
|
||||||
btnCheck: TButton;
|
btnCheck: TButton;
|
||||||
btnAnalyze: TButton;
|
btnAnalyze: TButton;
|
||||||
btnRepair: TButton;
|
btnRepair: TButton;
|
||||||
Label3: TLabel;
|
lblResults: TLabel;
|
||||||
ListViewResults: TListView;
|
ListResults: TListView;
|
||||||
ToolBar1: TToolBar;
|
tlbCheckToggle: TToolBar;
|
||||||
ToolButton1: TToolButton;
|
tlbCheckNone: TToolButton;
|
||||||
ToolButton2: TToolButton;
|
tlbCheckAll: TToolButton;
|
||||||
cbxExtendedCheck: TCheckBox;
|
cbxExtendedCheck: TCheckBox;
|
||||||
cbxExtendedRepair: TCheckBox;
|
cbxExtendedRepair: TCheckBox;
|
||||||
|
procedure FormDestroy(Sender: TObject);
|
||||||
|
procedure FormCreate(Sender: TObject);
|
||||||
procedure FormShow(Sender: TObject);
|
procedure FormShow(Sender: TObject);
|
||||||
procedure DBComboBoxChange(Sender: TObject);
|
procedure DBComboBoxChange(Sender: TObject);
|
||||||
procedure CheckListToggle(Sender: TObject);
|
procedure CheckListToggle(Sender: TObject);
|
||||||
procedure Optimze(Sender: TObject);
|
procedure Optimize(Sender: TObject);
|
||||||
procedure Check(Sender: TObject);
|
procedure Check(Sender: TObject);
|
||||||
procedure Analyze(Sender: TObject);
|
procedure Analyze(Sender: TObject);
|
||||||
procedure Repair(Sender: TObject);
|
procedure Repair(Sender: TObject);
|
||||||
@ -49,23 +51,45 @@ type
|
|||||||
{ Public declarations }
|
{ Public declarations }
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TableDiagnosticsWindow (AOwner : TComponent; Flags : String = '') : Boolean;
|
|
||||||
|
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
uses childwin, helpers, main;
|
uses childwin, helpers, main;
|
||||||
|
|
||||||
{$R *.DFM}
|
{$R *.DFM}
|
||||||
|
|
||||||
function TableDiagnosticsWindow (AOwner : TComponent; Flags : String = '') : Boolean;
|
|
||||||
var
|
{**
|
||||||
f : Toptimize;
|
FormCreate: Restore GUI setup
|
||||||
|
}
|
||||||
|
procedure Toptimize.FormCreate(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
f := Toptimize.Create(AOwner);
|
Width := Mainform.GetRegValue(REGNAME_MAINTWINWIDTH, Width);
|
||||||
f.ShowModal;
|
Height := Mainform.GetRegValue(REGNAME_MAINTWINHEIGHT, Height);
|
||||||
Result := True;
|
|
||||||
FreeAndNil (f);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
{**
|
||||||
|
FormDestroy: Save GUI setup
|
||||||
|
}
|
||||||
|
procedure Toptimize.FormDestroy(Sender: TObject);
|
||||||
|
var
|
||||||
|
reg : TRegistry;
|
||||||
|
begin
|
||||||
|
reg := TRegistry.Create;
|
||||||
|
if reg.OpenKey(REGPATH, False) then begin
|
||||||
|
reg.WriteInteger( REGNAME_MAINTWINWIDTH, Width );
|
||||||
|
reg.WriteInteger( REGNAME_MAINTWINHEIGHT, Height );
|
||||||
|
reg.CloseKey;
|
||||||
|
end;
|
||||||
|
reg.Free;
|
||||||
|
Close;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
{**
|
||||||
|
FormShow: Fill DB combobox and tables list
|
||||||
|
}
|
||||||
procedure Toptimize.FormShow(Sender: TObject);
|
procedure Toptimize.FormShow(Sender: TObject);
|
||||||
var
|
var
|
||||||
i : Integer;
|
i : Integer;
|
||||||
@ -98,10 +122,21 @@ begin
|
|||||||
ToggleCheckListBox(TablesCheckListBox, True);
|
ToggleCheckListBox(TablesCheckListBox, True);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
{**
|
||||||
|
DB selected in pulldown
|
||||||
|
}
|
||||||
procedure Toptimize.DBComboBoxChange(Sender: TObject);
|
procedure Toptimize.DBComboBoxChange(Sender: TObject);
|
||||||
|
var
|
||||||
|
ds: TDataset;
|
||||||
begin
|
begin
|
||||||
// read tables from db
|
// read tables from db
|
||||||
TablesCheckListBox.Items := Mainform.ChildWin.GetCol( 'SHOW TABLES FROM ' + MainForm.mask(DBComboBox.Text) );
|
ds := Mainform.ChildWin.FetchDbTableList(DBComboBox.Text);
|
||||||
|
TablesCheckListBox.Items.Clear;
|
||||||
|
while not ds.Eof do begin
|
||||||
|
TablesCheckListBox.Items.Add(ds.Fields[0].AsString);
|
||||||
|
ds.Next;
|
||||||
|
end;
|
||||||
// Check all
|
// Check all
|
||||||
ToggleCheckListBox( TablesCheckListBox, True );
|
ToggleCheckListBox( TablesCheckListBox, True );
|
||||||
// Enable controls if there are tables in the database.
|
// Enable controls if there are tables in the database.
|
||||||
@ -109,6 +144,9 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
{**
|
||||||
|
Check all/none
|
||||||
|
}
|
||||||
procedure Toptimize.CheckListToggle(Sender: TObject);
|
procedure Toptimize.CheckListToggle(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
// select all/none
|
// select all/none
|
||||||
@ -116,6 +154,10 @@ begin
|
|||||||
TablesCheckListBox.OnClickCheck(self);
|
TablesCheckListBox.OnClickCheck(self);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
{**
|
||||||
|
Parse and run SQL template for all maintenance actions
|
||||||
|
}
|
||||||
procedure Toptimize.RunIterated(pseudoSql: string);
|
procedure Toptimize.RunIterated(pseudoSql: string);
|
||||||
var
|
var
|
||||||
i: integer;
|
i: integer;
|
||||||
@ -143,50 +185,74 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure Toptimize.Optimze(Sender: TObject);
|
|
||||||
|
{**
|
||||||
|
Optimize tables
|
||||||
|
}
|
||||||
|
procedure Toptimize.Optimize(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
RunIterated('OPTIMIZE TABLE $table');
|
RunIterated('OPTIMIZE TABLE $table');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
{**
|
||||||
|
Check tables
|
||||||
|
}
|
||||||
procedure Toptimize.Check(Sender: TObject);
|
procedure Toptimize.Check(Sender: TObject);
|
||||||
var
|
var
|
||||||
querystr : String;
|
querystr : String;
|
||||||
begin
|
begin
|
||||||
querystr := 'CHECK TABLE $table';
|
querystr := 'CHECK TABLE $table';
|
||||||
if CheckBoxQuickCheck.Checked then
|
if cbxQuickCheck.Checked then
|
||||||
querystr := querystr + ' QUICK';
|
querystr := querystr + ' QUICK';
|
||||||
if cbxExtendedCheck.Checked then
|
if cbxExtendedCheck.Checked then
|
||||||
querystr := querystr + ' EXTENDED';
|
querystr := querystr + ' EXTENDED';
|
||||||
RunIterated(querystr);
|
RunIterated(querystr);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
{**
|
||||||
|
Analyze tables
|
||||||
|
}
|
||||||
procedure Toptimize.Analyze(Sender: TObject);
|
procedure Toptimize.Analyze(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
RunIterated('ANALYZE TABLE $table');
|
RunIterated('ANALYZE TABLE $table');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
{**
|
||||||
|
Repair tables
|
||||||
|
}
|
||||||
procedure Toptimize.Repair(Sender: TObject);
|
procedure Toptimize.Repair(Sender: TObject);
|
||||||
var
|
var
|
||||||
querystr : String;
|
querystr : String;
|
||||||
begin
|
begin
|
||||||
querystr := 'REPAIR TABLE $table';
|
querystr := 'REPAIR TABLE $table';
|
||||||
if CheckBoxQuickRepair.Checked then
|
if cbxQuickRepair.Checked then
|
||||||
querystr := querystr + ' QUICK';
|
querystr := querystr + ' QUICK';
|
||||||
if cbxExtendedRepair.Checked then
|
if cbxExtendedRepair.Checked then
|
||||||
querystr := querystr + ' EXTENDED';
|
querystr := querystr + ' EXTENDED';
|
||||||
RunIterated(querystr);
|
RunIterated(querystr);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
{**
|
||||||
|
Clear ListResults
|
||||||
|
}
|
||||||
procedure Toptimize.ClearResults;
|
procedure Toptimize.ClearResults;
|
||||||
begin
|
begin
|
||||||
ListViewResults.Columns.BeginUpdate();
|
ListResults.Columns.BeginUpdate;
|
||||||
ListViewResults.Columns.Clear;
|
ListResults.Columns.Clear;
|
||||||
ListViewResults.Items.BeginUpdate();
|
ListResults.Items.BeginUpdate;
|
||||||
ListViewResults.Items.Clear;
|
ListResults.Items.Clear;
|
||||||
ListViewResults.Columns.EndUpdate();
|
ListResults.Columns.EndUpdate;
|
||||||
ListViewResults.Items.EndUpdate();
|
ListResults.Items.EndUpdate;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
{**
|
||||||
|
Add results from maintenance action
|
||||||
|
}
|
||||||
procedure Toptimize.AddResults(ds: TDataSet);
|
procedure Toptimize.AddResults(ds: TDataSet);
|
||||||
var
|
var
|
||||||
i,j,fieldcount : Integer;
|
i,j,fieldcount : Integer;
|
||||||
@ -194,37 +260,45 @@ var
|
|||||||
lc : TListColumn;
|
lc : TListColumn;
|
||||||
begin
|
begin
|
||||||
fieldcount := ds.FieldCount;
|
fieldcount := ds.FieldCount;
|
||||||
if fieldcount > ListViewResults.Columns.Count then begin
|
if fieldcount > ListResults.Columns.Count then begin
|
||||||
ListViewResults.Columns.BeginUpdate();
|
ListResults.Columns.BeginUpdate();
|
||||||
for i := ListViewResults.Columns.Count to fieldcount - 1 do begin
|
for i := ListResults.Columns.Count to fieldcount - 1 do begin
|
||||||
lc := ListViewResults.Columns.Add;
|
lc := ListResults.Columns.Add;
|
||||||
lc.Caption := ds.Fields[i].Fieldname;
|
lc.Caption := ds.Fields[i].Fieldname;
|
||||||
end;
|
end;
|
||||||
ListViewResults.Columns.EndUpdate();
|
ListResults.Columns.EndUpdate;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
ListViewResults.Items.BeginUpdate();
|
ListResults.Items.BeginUpdate;
|
||||||
for i:=1 to ds.RecordCount do
|
for i:=1 to ds.RecordCount do
|
||||||
begin
|
begin
|
||||||
li := ListViewResults.Items.Add;
|
li := ListResults.Items.Add;
|
||||||
li.Caption := ds.Fields[0].AsString;
|
li.Caption := ds.Fields[0].AsString;
|
||||||
for j := 1 to fieldcount -1 do // fill cells
|
for j := 1 to fieldcount -1 do // fill cells
|
||||||
li.SubItems.Add(ds.Fields[j].AsString);
|
li.SubItems.Add(ds.Fields[j].AsString);
|
||||||
ds.Next;
|
ds.Next;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
for i := 0 to ListViewResults.Columns.Count-1 do
|
for i := 0 to ListResults.Columns.Count-1 do
|
||||||
ListViewResults.Columns[i].Width := -2;
|
ListResults.Columns[i].Width := -2;
|
||||||
|
|
||||||
ListViewResults.Items[ListViewResults.Items.Count - 1].MakeVisible(false);
|
ListResults.Items[ListResults.Items.Count - 1].MakeVisible(false);
|
||||||
ListViewResults.Items.EndUpdate();
|
ListResults.Items.EndUpdate;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
{**
|
||||||
|
Table was (un-)checked: ensure correct state of buttons
|
||||||
|
}
|
||||||
procedure Toptimize.TablesCheckListBoxClickCheck(Sender: TObject);
|
procedure Toptimize.TablesCheckListBoxClickCheck(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
ValidateControls;
|
ValidateControls;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
{**
|
||||||
|
Check if at least one table is checked and dis/enable the buttons
|
||||||
|
}
|
||||||
procedure Toptimize.ValidateControls;
|
procedure Toptimize.ValidateControls;
|
||||||
var
|
var
|
||||||
i : Integer;
|
i : Integer;
|
||||||
@ -244,4 +318,5 @@ begin
|
|||||||
btnRepair.Enabled := somechecked;
|
btnRepair.Enabled := somechecked;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
Reference in New Issue
Block a user