Issue #2130: add table tools dialog

This commit is contained in:
Ansgar Becker
2025-04-19 13:42:12 +02:00
parent 45bc29e9e3
commit d78cb647c6
6 changed files with 3309 additions and 16 deletions

View File

@ -314,6 +314,13 @@
<HasResources Value="True"/>
<ResourceBaseClass Value="Frame"/>
</Unit>
<Unit>
<Filename Value="source\tabletools.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="frmTableTools"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
</Unit>
</Units>
</ProjectOptions>
<CompilerOptions>

View File

@ -21,7 +21,7 @@ uses
exportgrid, usermanager, selectdbobject, reformatter, searchreplace,
connections, jsonregistry, sqlhelp, updatecheck, insertfiles, texteditor,
customize_highlighter, preferences, table_editor, view, routine_editor,
trigger_editor, event_editor;
trigger_editor, event_editor, tabletools;
{$R *.res}
{.$R resources.rc}

View File

@ -164,9 +164,9 @@ type
procedure LogFromThread(Msg: String; Category: TDBLogCategory);
end;
{TSqlTranspiler = class(TObject)
TSqlTranspiler = class(TObject)
class function CreateTable(SQL: String; SourceDb, TargetDb: TDBConnection): String;
end;}
end;
TClipboardHelper = class helper for TClipboard
private
@ -434,7 +434,7 @@ type
function GetExecutableBits: Byte;
procedure Help(Sender: TObject; Anchor: String);
//function PortOpen(Port: Word): Boolean;
//function IsValidFilePath(FilePath: String): Boolean;
function IsValidFilePath(FilePath: String): Boolean;
//function FileIsWritable(FilePath: String): Boolean;
//function GetProductInfo(dwOSMajorVersion, dwOSMinorVersion, dwSpMajorVersion, dwSpMinorVersion: DWORD; out pdwReturnedProductType: DWORD): BOOL stdcall; external kernel32 delayed;
//function GetCurrentPackageFullName(out Len: Cardinal; Name: PWideChar): Integer; stdcall; external kernel32 delayed;
@ -2739,7 +2739,7 @@ begin
end;}
{function IsValidFilePath(FilePath: String): Boolean;
function IsValidFilePath(FilePath: String): Boolean;
var
Pieces: TStringList;
i: Integer;
@ -2748,11 +2748,12 @@ begin
Result := True;
Pieces := TStringList.Create;
SplitRegExpr('[\\\/]', FilePath, Pieces);
for i:=1 to Pieces.Count-1 do begin
// Todo: implement cross platformic
{for i:=1 to Pieces.Count-1 do begin
Result := Result and TPath.HasValidFileNameChars(Pieces[i], False);
end;
end;}
Pieces.Free;
end;}
end;
{function FileIsWritable(FilePath: String): Boolean;
@ -3398,7 +3399,7 @@ end;
{ TSqlTranspiler }
{class function TSqlTranspiler.CreateTable(SQL: String; SourceDb, TargetDb: TDBConnection): String;
class function TSqlTranspiler.CreateTable(SQL: String; SourceDb, TargetDb: TDBConnection): String;
begin
Result := SQL;
@ -3408,7 +3409,7 @@ begin
Result := ReplaceRegExpr('\sCOLLATE\s\w+(\s+GENERATED\s)', Result, '$1', [rroModifierI, rroUseSubstitution]);
end;
end;}
end;
{ TClipboardHelper }

View File

@ -14,7 +14,7 @@ uses
Generics.Defaults, opensslsockets, StdActns, Clipbrd, Types, LCLType, EditBtn,
FileUtil, LMessages, jsonconf, dbconnection, dbstructures, dbstructures.mysql,
generic_types, apphelpers, extra_controls, createdatabase,
SynEditMarkupSpecialLine, searchreplace, ImgList, IniFiles, LazFileUtils;
SynEditMarkupSpecialLine, searchreplace, ImgList, IniFiles, LazFileUtils, tabletools;
type
@ -1236,7 +1236,7 @@ type
FDBObjectsMaxRows: Int64;
FSearchReplaceDialog: TfrmSearchReplace;
FCreateDatabaseDialog: TCreateDatabaseForm;
//FTableToolsDialog: TfrmTableTools;
FTableToolsDialog: TfrmTableTools;
FGridEditFunctionMode: Boolean;
FClipboardHasNull: Boolean;
FTimeZoneOffset: Integer;
@ -2967,7 +2967,7 @@ var
DBObj: PDBObject;
begin
// Show table tools dialog
{FTableToolsDialog := TfrmTableTools.Create(Self);
FTableToolsDialog := TfrmTableTools.Create(Self);
FTableToolsDialog.PreSelectObjects.Clear;
if DBTreeClicked(Sender) then
FTableToolsDialog.PreSelectObjects.Add(ActiveDbObj)
@ -2990,7 +2990,7 @@ begin
else if Sender = actGenerateData then
FTableToolsDialog.ToolMode := tmGenerateData;
FTableToolsDialog.ShowModal;
FreeAndNil(FTableToolsDialog);}
FreeAndNil(FTableToolsDialog);
end;
@ -13323,8 +13323,8 @@ begin
Editors.Add(SqlHelpDialog.memoDescription);
Editors.Add(SqlHelpDialog.MemoExample);
end;
{if Assigned(FTableToolsDialog) then
Editors.Add(FTableToolsDialog.SynMemoFindText);}
if Assigned(FTableToolsDialog) then
Editors.Add(FTableToolsDialog.SynMemoFindText);
if Assigned(frmCsvDetector) then
Editors.Add(frmCsvDetector.SynMemoCreateTable);

846
source/tabletools.lfm Normal file
View File

@ -0,0 +1,846 @@
object frmTableTools: TfrmTableTools
Left = 734
Height = 479
Top = 126
Width = 955
BorderIcons = [biSystemMenu, biHelp]
Caption = 'Table tools'
ClientHeight = 479
ClientWidth = 955
Color = clBtnFace
DesignTimePPI = 120
OnClose = FormClose
OnCreate = FormCreate
OnShow = FormShow
Position = poMainFormCenter
object lblCheckedSize: TLabel
Left = 10
Height = 20
Top = 441
Width = 100
Anchors = [akLeft, akBottom]
Caption = 'lblCheckedSize'
end
object btnCloseOrCancel: TButton
Left = 826
Height = 31
Top = 438
Width = 119
Anchors = [akRight, akBottom]
Caption = 'Close'
ModalResult = 2
TabOrder = 3
OnClick = btnCloseOrCancelClick
end
object pnlTop: TPanel
Left = 0
Height = 440
Top = 0
Width = 955
Align = alTop
Anchors = [akTop, akLeft, akRight, akBottom]
BevelOuter = bvNone
ClientHeight = 440
ClientWidth = 955
ParentBackground = False
TabOrder = 0
object spltHorizontally: TSplitter
Cursor = crSizeWE
Left = 231
Height = 440
Top = 0
Width = 5
OnMoved = spltHorizontallyMoved
end
object pnlRight: TPanel
Left = 236
Height = 440
Top = 0
Width = 719
Align = alClient
BevelOuter = bvNone
ClientHeight = 440
ClientWidth = 719
ParentBackground = False
TabOrder = 0
object ResultGrid: TLazVirtualStringTree
Left = 0
Height = 199
Top = 241
Width = 719
Align = alClient
Header.AutoSizeIndex = -1
Header.Columns = <>
Header.Height = 25
Header.MainColumn = -1
Header.Options = [hoColumnResize, hoDblClickResize, hoDrag, hoHotTrack, hoShowSortGlyphs, hoVisible, hoDisableAnimatedResize]
Header.PopupMenu = MainForm.popupListHeader
IncrementalSearch = isAll
TabOrder = 0
TreeOptions.MiscOptions = [toAcceptOLEDrop, toFullRepaintOnResize, toGridExtensions, toInitOnSave, toToggleOnDblClick, toWheelPanning, toEditOnClick]
TreeOptions.PaintOptions = [toHotTrack, toShowButtons, toShowDropmark, toShowHorzGridLines, toShowTreeLines, toShowVertGridLines, toThemeAware, toUseBlendedImages, toUseExplorerTheme]
TreeOptions.SelectionOptions = [toExtendedFocus, toFullRowSelect]
OnCompareNodes = ResultGridCompareNodes
OnGetText = ResultGridGetText
OnPaintText = ResultGridPaintText
OnGetNodeDataSize = ResultGridGetNodeDataSize
OnHeaderClick = ResultGridHeaderClick
OnInitNode = ResultGridInitNode
end
object tabsTools: TPageControl
Left = 0
Height = 241
Top = 0
Width = 719
ActivePage = tabSQLexport
Align = alTop
TabIndex = 2
TabOrder = 1
OnChange = ValidateControls
object tabMaintenance: TTabSheet
Caption = 'Maintenance'
ClientHeight = 208
ClientWidth = 711
ImageIndex = 39
object lblOperation: TLabel
Left = 4
Height = 20
Top = 18
Width = 70
Caption = 'Operation:'
end
object lblOptions: TLabel
Left = 4
Height = 20
Top = 49
Width = 55
Caption = 'Options:'
end
object comboOperation: TComboBox
Left = 100
Height = 28
Top = 14
Width = 584
Anchors = [akTop, akLeft, akRight]
ItemHeight = 20
Style = csDropDownList
TabOrder = 0
OnChange = ValidateControls
end
object chkQuick: TCheckBox
Left = 101
Height = 24
Top = 48
Width = 58
Caption = 'Quick'
TabOrder = 1
OnClick = ValidateControls
end
object chkFast: TCheckBox
Left = 101
Height = 24
Top = 71
Width = 47
Caption = 'Fast'
TabOrder = 2
OnClick = ValidateControls
end
object chkMedium: TCheckBox
Left = 101
Height = 24
Top = 95
Width = 76
Caption = 'Medium'
TabOrder = 3
OnClick = ValidateControls
end
object chkExtended: TCheckBox
Left = 230
Height = 24
Top = 48
Width = 83
Caption = 'Extended'
TabOrder = 4
OnClick = ValidateControls
end
object chkChanged: TCheckBox
Left = 230
Height = 24
Top = 71
Width = 80
Caption = 'Changed'
TabOrder = 5
OnClick = ValidateControls
end
object chkUseFrm: TCheckBox
Left = 230
Height = 24
Top = 95
Width = 103
Caption = 'Use FRM file'
TabOrder = 6
OnClick = ValidateControls
end
object btnHelpMaintenance: TButton
Left = 591
Height = 31
Top = 48
Width = 94
Anchors = [akTop, akRight]
Caption = 'Help'
TabOrder = 7
OnClick = btnHelpMaintenanceClick
end
object chkForUpgrade: TCheckBox
Left = 101
Height = 24
Top = 120
Width = 104
Caption = 'For Upgrade'
TabOrder = 8
OnClick = ValidateControls
end
end
object tabFind: TTabSheet
Caption = 'Find text'
ClientHeight = 208
ClientWidth = 711
ImageIndex = 30
object lblFindText: TLabel
Left = 4
Height = 20
Top = 34
Width = 78
Caption = 'Text to find:'
end
object lblDataTypes: TLabel
Left = 4
Height = 20
Top = 110
Width = 155
Anchors = [akLeft, akBottom]
Caption = 'Search in column types:'
end
object lblMatchType: TLabel
Left = 4
Height = 20
Top = 172
Width = 77
Anchors = [akLeft, akBottom]
Caption = 'Match type:'
end
object comboDataTypes: TComboBox
Left = 260
Height = 28
Top = 108
Width = 425
Anchors = [akLeft, akRight, akBottom]
ItemHeight = 20
Style = csDropDownList
TabOrder = 0
end
object chkCaseSensitive: TCheckBox
Left = 260
Height = 24
Top = 140
Width = 425
Anchors = [akLeft, akRight, akBottom]
Caption = 'Case sensitive'
TabOrder = 1
end
object comboMatchType: TComboBox
Left = 260
Height = 28
Top = 171
Width = 425
Anchors = [akLeft, akRight, akBottom]
ItemHeight = 20
ItemIndex = 0
Items.Strings = (
'Left and right wildcard'
'Exact match'
'Left wildcard'
'Right wildcard'
'Regular expression'
)
Style = csDropDownList
TabOrder = 2
Text = 'Left and right wildcard'
end
object tabsTextType: TPageControl
Left = 260
Height = 97
Top = 4
Width = 425
ActivePage = tabSimpleText
Anchors = [akTop, akLeft, akRight, akBottom]
TabIndex = 0
TabOrder = 3
OnChange = ValidateControls
object tabSimpleText: TTabSheet
Caption = 'Simple text'
ClientHeight = 64
ClientWidth = 417
object memoFindText: TMemo
Left = 0
Height = 64
Top = 0
Width = 417
Align = alClient
ScrollBars = ssVertical
TabOrder = 0
OnChange = ValidateControls
end
end
object tabSQL: TTabSheet
Caption = 'SQL'
ClientHeight = 64
ClientWidth = 417
ImageIndex = 1
inline SynMemoFindText: TSynEdit
Left = 0
Height = 64
Top = 0
Width = 417
Align = alClient
Font.Height = -16
Font.Name = 'Courier New'
Font.Pitch = fpFixed
Font.Quality = fqNonAntialiased
ParentColor = False
ParentFont = False
TabOrder = 0
Gutter.Width = 72
Gutter.MouseActions = <>
RightGutter.Width = 0
RightGutter.MouseActions = <>
Highlighter = MainForm.SynSQLSynUsed
Keystrokes = <>
MouseActions = <>
MouseTextActions = <>
MouseSelActions = <>
Lines.Strings = (
'> NOW()'
)
Options = [eoAutoIndent, eoGroupUndo, eoShowScrollHint, eoSmartTabs, eoTabsToSpaces, eoDragDropEditing]
MouseOptions = [emDragDropEditing]
VisibleSpecialChars = [vscSpace, vscTabAtLast]
SelectedColor.BackPriority = 50
SelectedColor.ForePriority = 50
SelectedColor.FramePriority = 50
SelectedColor.BoldPriority = 50
SelectedColor.ItalicPriority = 50
SelectedColor.UnderlinePriority = 50
SelectedColor.StrikeOutPriority = 50
BracketHighlightStyle = sbhsBoth
BracketMatchColor.Background = clNone
BracketMatchColor.Foreground = clNone
BracketMatchColor.Style = [fsBold]
FoldedCodeColor.Background = clNone
FoldedCodeColor.Foreground = clGray
FoldedCodeColor.FrameColor = clGray
MouseLinkColor.Background = clNone
MouseLinkColor.Foreground = clBlue
LineHighlightColor.Background = clNone
LineHighlightColor.Foreground = clNone
inline SynLeftGutterPartList1: TSynGutterPartList
object SynGutterMarks1: TSynGutterMarks
Width = 30
MouseActions = <>
end
object SynGutterLineNumber1: TSynGutterLineNumber
Width = 21
MouseActions = <>
MarkupInfo.Background = clBtnFace
MarkupInfo.Foreground = clNone
DigitCount = 2
ShowOnlyLineNumbersMultiplesOf = 1
ZeroStart = False
LeadingZeros = False
end
object SynGutterChanges1: TSynGutterChanges
Width = 5
MouseActions = <>
ModifiedColor = 59900
SavedColor = clGreen
end
object SynGutterSeparator1: TSynGutterSeparator
Width = 3
MouseActions = <>
MarkupInfo.Background = clWhite
MarkupInfo.Foreground = clGray
end
object SynGutterCodeFolding1: TSynGutterCodeFolding
Width = 13
MouseActions = <>
MarkupInfo.Background = clNone
MarkupInfo.Foreground = clGray
MouseActionsExpanded = <>
MouseActionsCollapsed = <>
end
end
end
end
end
end
object tabSQLexport: TTabSheet
Caption = 'SQL export'
ClientHeight = 208
ClientWidth = 711
ImageIndex = 9
object lblExportData: TLabel
Left = 4
Height = 20
Top = 62
Width = 35
Caption = 'Data:'
end
object lblExportOutputType: TLabel
Left = 4
Height = 20
Top = 130
Width = 49
Caption = 'Output:'
end
object lblExportDatabases: TLabel
Left = 4
Height = 20
Top = 5
Width = 82
Caption = 'Database(s):'
end
object lblExportTables: TLabel
Left = 4
Height = 20
Top = 31
Width = 54
Caption = 'Table(s):'
end
object lblExportOutputTarget: TLabel
Left = 2
Height = 20
Top = 162
Width = 63
Caption = 'Filename:'
end
object lblInsertSize: TLabel
Left = 4
Height = 20
Top = 96
Width = 111
Caption = 'Max INSERT size:'
end
object lblInsertSizeUnit: TLabel
Left = 302
Height = 20
Top = 96
Width = 155
Caption = 'KB (0 = Single INSERTs)'
end
object btnExportOutputTargetSelect: TSpeedButton
Left = 656
Height = 26
Hint = 'Browse filesystem'
Top = 159
Width = 29
Anchors = [akTop, akRight]
ImageIndex = 51
OnClick = btnExportOutputTargetSelectClick
end
object chkExportDatabasesCreate: TCheckBox
Left = 240
Height = 24
Top = 4
Width = 64
Caption = 'Create'
TabOrder = 0
OnClick = chkExportOptionClick
end
object chkExportDatabasesDrop: TCheckBox
Left = 125
Height = 24
Top = 4
Width = 55
Caption = 'Drop'
TabOrder = 1
OnClick = chkExportOptionClick
end
object chkExportTablesDrop: TCheckBox
Left = 125
Height = 24
Top = 30
Width = 55
Caption = 'Drop'
TabOrder = 2
OnClick = chkExportOptionClick
end
object chkExportTablesCreate: TCheckBox
Left = 240
Height = 24
Top = 30
Width = 64
Caption = 'Create'
TabOrder = 3
OnClick = chkExportOptionClick
end
object comboExportData: TComboBox
Left = 125
Height = 28
Top = 59
Width = 560
Anchors = [akTop, akLeft, akRight]
ItemHeight = 20
Style = csDropDownList
TabOrder = 4
OnChange = ValidateControls
end
object comboExportOutputType: TComboBox
Left = 125
Height = 28
Top = 126
Width = 560
Anchors = [akTop, akLeft, akRight]
DropDownCount = 16
ItemHeight = 20
Style = csDropDownList
TabOrder = 6
OnChange = comboExportOutputTypeChange
end
object comboExportOutputTarget: TComboBox
Left = 125
Height = 28
Top = 159
Width = 527
Anchors = [akTop, akLeft, akRight]
DropDownCount = 16
ItemHeight = 20
ParentShowHint = False
ShowHint = True
TabOrder = 8
Text = 'comboExportOutputTarget'
OnChange = comboExportOutputTargetChange
end
object editInsertSize: TEdit
Left = 125
Height = 28
Top = 92
Width = 150
NumbersOnly = True
TabOrder = 5
Text = '0'
end
object btnExportOptions: TButton
Left = 529
Height = 31
Top = 90
Width = 156
Anchors = [akTop, akRight]
Caption = 'Options'
TabOrder = 7
OnClick = btnExportOptionsClick
end
end
object tabBulkTableEdit: TTabSheet
Caption = 'Bulk table editor'
ClientHeight = 208
ClientWidth = 711
ImageIndex = 19
object chkBulkTableEditDatabase: TCheckBox
Left = 4
Height = 24
Top = 6
Width = 144
Caption = 'Move to database:'
TabOrder = 0
OnClick = chkBulkTableEditCheckComboClick
end
object comboBulkTableEditDatabase: TComboBox
Left = 260
Height = 28
Top = 4
Width = 424
Anchors = [akTop, akLeft, akRight]
Enabled = False
ItemHeight = 20
Style = csDropDownList
TabOrder = 1
end
object chkBulkTableEditResetAutoinc: TCheckBox
Left = 4
Height = 24
Top = 121
Width = 200
Caption = 'Reset auto increment value'
TabOrder = 2
OnClick = ValidateControls
end
object chkBulkTableEditCollation: TCheckBox
Left = 4
Height = 24
Top = 64
Width = 187
Caption = 'Change default collation:'
TabOrder = 3
OnClick = chkBulkTableEditCheckComboClick
end
object comboBulkTableEditCollation: TComboBox
Left = 260
Height = 28
Top = 61
Width = 424
Anchors = [akTop, akLeft, akRight]
DropDownCount = 16
Enabled = False
ItemHeight = 20
Sorted = True
Style = csDropDownList
TabOrder = 4
end
object chkBulkTableEditEngine: TCheckBox
Left = 4
Height = 24
Top = 35
Width = 161
Caption = 'Change table engine:'
TabOrder = 5
OnClick = chkBulkTableEditCheckComboClick
end
object comboBulkTableEditEngine: TComboBox
Left = 260
Height = 28
Top = 32
Width = 424
Anchors = [akTop, akLeft, akRight]
Enabled = False
ItemHeight = 20
Style = csDropDownList
TabOrder = 6
end
object chkBulkTableEditCharset: TCheckBox
Left = 4
Height = 24
Top = 92
Width = 144
Caption = 'Convert to charset:'
TabOrder = 7
OnClick = chkBulkTableEditCheckComboClick
end
object comboBulkTableEditCharset: TComboBox
Left = 260
Height = 28
Top = 90
Width = 424
Anchors = [akTop, akLeft, akRight]
DropDownCount = 16
Enabled = False
ItemHeight = 20
Style = csDropDownList
TabOrder = 8
end
end
object tabGenerateData: TTabSheet
Caption = 'Generate data'
ClientHeight = 208
ClientWidth = 711
ImageIndex = 130
object lblGenerateDataNumRows: TLabel
Left = 4
Height = 20
Top = 8
Width = 110
Caption = 'Number of rows:'
end
object lblGenerateDataNullAmount: TLabel
Left = 2
Height = 20
Top = 42
Width = 183
Caption = 'Amount of NULLs [percent]:'
end
object editGenerateDataNumRows: TEdit
Left = 250
Height = 28
Top = 4
Width = 151
NumbersOnly = True
TabOrder = 0
Text = '1.000'
end
object editGenerateDataNullAmount: TEdit
Left = 250
Height = 28
Top = 39
Width = 151
NumbersOnly = True
TabOrder = 1
Text = '10'
end
end
end
end
object pnlLeft: TPanel
Left = 0
Height = 440
Top = 0
Width = 231
Align = alLeft
BevelOuter = bvNone
Caption = 'pnlLeft'
ClientHeight = 440
ClientWidth = 231
ParentBackground = False
TabOrder = 1
object pnlLeftTop: TPanel
Left = 0
Height = 36
Top = 0
Width = 231
Align = alTop
BevelOuter = bvNone
Caption = 'pnlLeftTop'
ClientHeight = 36
ClientWidth = 231
ParentBackground = False
TabOrder = 0
object editDatabaseFilter: TEditButton
Left = 5
Height = 28
Hint = 'Database filter|A list of databases, separated by semicolon. Can contain regular expressions, e.g. "mydb;test.*;project\d+".'
Top = 0
Width = 61
ButtonWidth = 29
ImageIndex = 193
MaxLength = 0
NumGlyphs = 1
OnButtonClick = editDatabaseTableFilterRightButtonClick
OnChange = editDatabaseTableFilterChange
OnKeyPress = editDatabaseTableFilterKeyPress
PasswordChar = #0
TabOrder = 0
Text = 'editDatabaseFilter'
TextHint = 'Database filter'
end
object editTableFilter: TEditButton
Left = 74
Height = 28
Hint = 'Table filter|Can contain regular expressions, e.g. "phpbb_\d"'
Top = 0
Width = 85
ButtonWidth = 29
ImageIndex = 193
MaxLength = 0
NumGlyphs = 1
OnButtonClick = editDatabaseTableFilterRightButtonClick
OnChange = editDatabaseTableFilterChange
OnKeyPress = editDatabaseTableFilterKeyPress
PasswordChar = #0
TabOrder = 1
Text = 'editTableFilter'
TextHint = 'Table filter'
end
end
object TreeObjects: TLazVirtualStringTree
Left = 0
Height = 404
Top = 36
Width = 231
Align = alClient
Header.AutoSizeIndex = 0
Header.Columns = <
item
Position = 0
Text = 'Dummy, keeps compatibility to mainform.dbtree'
Width = 164
end
item
Alignment = taRightJustify
Position = 1
Text = 'Size'
end>
Header.Height = 32
Header.Options = [hoAutoResize, hoColumnResize, hoDrag, hoShowSortGlyphs]
IncrementalSearch = isInitializedOnly
PopupMenu = popupTree
TabOrder = 1
TreeOptions.MiscOptions = [toAcceptOLEDrop, toCheckSupport, toFullRepaintOnResize, toInitOnSave, toToggleOnDblClick, toWheelPanning, toEditOnClick]
TreeOptions.PaintOptions = [toHotTrack, toShowButtons, toShowDropmark, toShowRoot, toShowTreeLines, toThemeAware, toUseBlendedImages, toGhostedIfUnfocused, toUseExplorerTheme, toHideTreeLinesIfThemed]
TreeOptions.SelectionOptions = [toFullRowSelect, toRightClickSelect]
OnBeforeCellPaint = TreeObjectsBeforeCellPaint
OnChange = TreeObjectsChange
OnChecked = TreeObjectsChecked
OnChecking = TreeObjectsChecking
OnExpanded = TreeObjectsExpanded
OnGetText = TreeObjectsGetText
OnPaintText = TreeObjectsPaintText
OnGetImageIndex = TreeObjectsGetImageIndex
OnGetNodeDataSize = TreeObjectsGetNodeDataSize
OnInitChildren = TreeObjectsInitChildren
OnInitNode = TreeObjectsInitNode
end
end
end
object btnExecute: TButton
Left = 700
Height = 31
Top = 438
Width = 119
Anchors = [akRight, akBottom]
Caption = 'Execute'
TabOrder = 2
OnClick = Execute
end
object btnSeeResults: TButton
Left = 545
Height = 31
Top = 438
Width = 148
Anchors = [akRight, akBottom]
Caption = 'See results'
ModalResult = 1
TabOrder = 1
Visible = False
OnClick = btnSeeResultsClick
end
object popupTree: TPopupMenu
Left = 180
Top = 440
object menuCheckNone: TMenuItem
Caption = 'Check none'
OnClick = CheckAllClick
end
object menuCheckAll: TMenuItem
Caption = 'Check all'
OnClick = CheckAllClick
end
object menuCheckByType: TMenuItem
Caption = 'Check ...'
end
end
object popupExportOptions: TPopupMenu
Left = 220
Top = 440
object menuExportAddComments: TMenuItem
AutoCheck = True
Caption = 'Add comments'
end
object menuExportRemoveAutoIncrement: TMenuItem
AutoCheck = True
Caption = 'Remove AUTO_INCREMENT clauses'
end
object menuExportRemoveDefiner: TMenuItem
AutoCheck = True
Caption = 'Remove DEFINER clauses'
end
object menuCopyMysqldumpCommand: TMenuItem
Caption = 'Copy mysqldump command'
OnClick = menuCopyMysqldumpCommandClick
end
end
object timerCalcSize: TTimer
Enabled = False
Interval = 200
OnTimer = timerCalcSizeTimer
Left = 330
Top = 440
end
end

2439
source/tabletools.pas Normal file

File diff suppressed because it is too large Load Diff