mirror of
https://github.com/HeidiSQL/HeidiSQL.git
synced 2025-08-26 11:17:57 +08:00
Convert the myriad of redundant menuitems and buttons on the main controlbar + important toolbars in the tabsheets to use TActions. This moves
a) some hundred lines of code from childwin.pas to main.pas b) redundant hints/captions/shortcuts/events for similar buttons/menuitems to their corresponding TAction in main.dfm . This change a) avoids several inconsistent captions like described in issue #595 b) makes it easier to have toolbars on the mainform which are controlled by childform.
This commit is contained in:
@ -1579,9 +1579,8 @@ object AboutBox: TAboutBox
|
||||
Top = 36
|
||||
Width = 122
|
||||
Height = 22
|
||||
Caption = 'Check for updates ...'
|
||||
Action = MainForm.actUpdateCheck
|
||||
TabOrder = 2
|
||||
OnClick = btnUpdateCheckClick
|
||||
end
|
||||
end
|
||||
object ButtonBoard: TButton
|
||||
|
@ -31,7 +31,6 @@ type
|
||||
MemoAuthors: TMemo;
|
||||
ImageDonate: TImage;
|
||||
btnUpdateCheck: TButton;
|
||||
procedure btnUpdateCheckClick(Sender: TObject);
|
||||
procedure OpenURL(Sender: TObject);
|
||||
procedure MouseOver(Sender: TObject; Shift: TShiftState; X, Y: Integer);
|
||||
procedure FormShow(Sender: TObject);
|
||||
@ -67,11 +66,6 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
procedure TAboutBox.btnUpdateCheckClick(Sender: TObject);
|
||||
begin
|
||||
Mainform.menuUpdateCheckClick(Sender);
|
||||
end;
|
||||
|
||||
procedure TAboutBox.OpenURL(Sender: TObject);
|
||||
begin
|
||||
ShellExec( TControl(Sender).Hint );
|
||||
|
@ -711,7 +711,7 @@ object MDIChild: TMDIChild
|
||||
TreeOptions.SelectionOptions = [toFullRowSelect, toMultiSelect, toRightClickSelect]
|
||||
OnBeforePaint = vstBeforePaint
|
||||
OnCompareNodes = vstCompareNodes
|
||||
OnDblClick = UpdateField
|
||||
OnDblClick = ListColumnsDblClick
|
||||
OnFreeNode = vstFreeNode
|
||||
OnGetText = vstGetText
|
||||
OnGetImageIndex = vstGetImageIndex
|
||||
@ -934,72 +934,49 @@ object MDIChild: TMDIChild
|
||||
object btnQueryRun: TToolButton
|
||||
Left = 0
|
||||
Top = 0
|
||||
Action = MainForm.ExecuteQuery
|
||||
Action = MainForm.actExecuteQuery
|
||||
end
|
||||
object btnQueryRunSelected: TToolButton
|
||||
Left = 23
|
||||
Top = 0
|
||||
Action = MainForm.ExecuteSelection
|
||||
Action = MainForm.actExecuteSelection
|
||||
end
|
||||
object btnQueryLoad: TToolButton
|
||||
Left = 46
|
||||
Top = 0
|
||||
Hint = 'Load SQL from Textfile'
|
||||
Caption = 'Load SQL...'
|
||||
Action = MainForm.actLoadSQL
|
||||
DropdownMenu = popupQueryLoad
|
||||
ImageIndex = 52
|
||||
Style = tbsDropDown
|
||||
OnClick = btnQueryLoadClick
|
||||
end
|
||||
object btnQuerySave: TToolButton
|
||||
Left = 82
|
||||
Top = 0
|
||||
Hint = 'Save SQL to Textfile'
|
||||
Caption = 'Save SQL...'
|
||||
Enabled = False
|
||||
ImageIndex = 10
|
||||
OnClick = btnQuerySaveClick
|
||||
Action = MainForm.actSaveSQL
|
||||
end
|
||||
object btnQuerySaveSnippet: TToolButton
|
||||
Left = 105
|
||||
Top = 0
|
||||
Hint = 'Save SQL as snippet...'
|
||||
Caption = 'btnQuerySaveSnippet'
|
||||
ImageIndex = 54
|
||||
OnClick = btnQuerySaveSnippetClick
|
||||
Action = MainForm.actSaveSQLSnippet
|
||||
end
|
||||
object btnQueryFind: TToolButton
|
||||
Left = 128
|
||||
Top = 0
|
||||
Hint = 'Find Text...'
|
||||
Caption = 'Find...'
|
||||
ImageIndex = 30
|
||||
OnClick = btnQueryFindClick
|
||||
Action = MainForm.actQueryFind
|
||||
end
|
||||
object btnQueryReplace: TToolButton
|
||||
Left = 151
|
||||
Top = 0
|
||||
Hint = 'Search and replace...'
|
||||
Caption = 'Replace ...'
|
||||
ImageIndex = 59
|
||||
OnClick = btnQueryReplaceClick
|
||||
Action = MainForm.actQueryReplace
|
||||
end
|
||||
object btnQueryStopOnErrors: TToolButton
|
||||
Left = 174
|
||||
Top = 0
|
||||
Hint = 'Stop on MySQL-errors in batch-mode'
|
||||
Caption = 'btnQueryStopOnErrors'
|
||||
Down = True
|
||||
ImageIndex = 63
|
||||
OnClick = btnQueryStopOnErrorsClick
|
||||
Action = MainForm.actQueryStopOnErrors
|
||||
end
|
||||
object btnQueryWordWrap: TToolButton
|
||||
Left = 197
|
||||
Top = 0
|
||||
Hint = 'Wrap long lines'
|
||||
Caption = 'Wrap long lines'
|
||||
ImageIndex = 62
|
||||
OnClick = btnQueryWordWrapClick
|
||||
Action = MainForm.actQueryWordWrap
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -1332,7 +1309,7 @@ object MDIChild: TMDIChild
|
||||
object btnBlobViewAsHtml: TToolButton
|
||||
Left = 0
|
||||
Top = 88
|
||||
Action = MainForm.HTMLview
|
||||
Action = MainForm.actHTMLview
|
||||
Wrap = True
|
||||
end
|
||||
object btnBlobCopy: TToolButton
|
||||
@ -1546,20 +1523,13 @@ object MDIChild: TMDIChild
|
||||
Left = 8
|
||||
Top = 16
|
||||
object NewDatabase1: TMenuItem
|
||||
Caption = 'Create database...'
|
||||
ImageIndex = 6
|
||||
OnClick = CreateDatabase
|
||||
Action = MainForm.actCreateDatabase
|
||||
end
|
||||
object menuAlterdatabase: TMenuItem
|
||||
Caption = 'Alter database ...'
|
||||
Enabled = False
|
||||
ImageIndex = 8
|
||||
OnClick = menuAlterdatabaseClick
|
||||
Action = MainForm.actEditDatabase
|
||||
end
|
||||
object PopupmenuDropDatabase: TMenuItem
|
||||
Caption = 'Drop database...'
|
||||
ImageIndex = 7
|
||||
OnClick = DropDB
|
||||
Action = MainForm.actDropDatabase
|
||||
end
|
||||
object N17: TMenuItem
|
||||
Caption = '-'
|
||||
@ -1568,7 +1538,7 @@ object MDIChild: TMDIChild
|
||||
Action = MainForm.actCreateTable
|
||||
end
|
||||
object menuTreeAlterTable: TMenuItem
|
||||
Action = MainForm.actAlterTable
|
||||
Action = MainForm.actEditTableProperties
|
||||
end
|
||||
object menuTreeCreateView: TMenuItem
|
||||
Action = MainForm.actCreateView
|
||||
@ -1608,11 +1578,11 @@ object MDIChild: TMDIChild
|
||||
Left = 72
|
||||
Top = 16
|
||||
object menuproperties: TMenuItem
|
||||
Action = MainForm.actTableProperties
|
||||
Action = MainForm.actEditTableFields
|
||||
Default = True
|
||||
end
|
||||
object menuAlterTable: TMenuItem
|
||||
Action = MainForm.actAlterTable
|
||||
Action = MainForm.actEditTableProperties
|
||||
end
|
||||
object actView1: TMenuItem
|
||||
Action = MainForm.actEditView
|
||||
@ -1757,24 +1727,14 @@ object MDIChild: TMDIChild
|
||||
Left = 104
|
||||
Top = 16
|
||||
object MenuEditField: TMenuItem
|
||||
Caption = 'Properties'
|
||||
Action = MainForm.actEditField
|
||||
Default = True
|
||||
ImageIndex = 44
|
||||
ShortCut = 32781
|
||||
OnClick = UpdateField
|
||||
end
|
||||
object MenuAddField: TMenuItem
|
||||
Caption = 'Add Field...'
|
||||
ImageIndex = 45
|
||||
ShortCut = 16449
|
||||
OnClick = MenuAddFieldClick
|
||||
Action = MainForm.actCreateField
|
||||
end
|
||||
object DropField1: TMenuItem
|
||||
Caption = 'Drop Field(s)...'
|
||||
Hint = 'Delete Field(s) from Table'
|
||||
ImageIndex = 46
|
||||
ShortCut = 16430
|
||||
OnClick = DropField
|
||||
Action = MainForm.actDropFields
|
||||
end
|
||||
object menuRenameColumn: TMenuItem
|
||||
Caption = 'Rename Field'
|
||||
@ -1786,9 +1746,7 @@ object MDIChild: TMDIChild
|
||||
Caption = '-'
|
||||
end
|
||||
object ManageIndexes1: TMenuItem
|
||||
Caption = '&Manage Indexes...'
|
||||
ImageIndex = 13
|
||||
OnClick = ManageIndexes1Click
|
||||
Action = MainForm.actEditIndexes
|
||||
end
|
||||
object N3: TMenuItem
|
||||
Caption = '-'
|
||||
@ -1815,10 +1773,10 @@ object MDIChild: TMDIChild
|
||||
Left = 8
|
||||
Top = 48
|
||||
object Copy3: TMenuItem
|
||||
Action = MainForm.EditCopy1
|
||||
Action = MainForm.actCopy
|
||||
end
|
||||
object Paste2: TMenuItem
|
||||
Action = MainForm.EditPaste1
|
||||
Action = MainForm.actPaste
|
||||
end
|
||||
object setNULL1: TMenuItem
|
||||
Caption = 'Set NULL'
|
||||
@ -1829,10 +1787,7 @@ object MDIChild: TMDIChild
|
||||
Caption = '-'
|
||||
end
|
||||
object Delete1: TMenuItem
|
||||
Caption = 'Delete record(s)'
|
||||
ImageIndex = 26
|
||||
ShortCut = 16430
|
||||
OnClick = Delete1Click
|
||||
Action = MainForm.actDataSetDelete
|
||||
end
|
||||
object N6: TMenuItem
|
||||
Caption = '-'
|
||||
@ -1950,7 +1905,7 @@ object MDIChild: TMDIChild
|
||||
OnClick = Filter1Click
|
||||
end
|
||||
object Find1: TMenuItem
|
||||
Action = MainForm.DataSearch
|
||||
Action = MainForm.actDataSearch
|
||||
end
|
||||
object N9: TMenuItem
|
||||
Caption = '-'
|
||||
@ -1960,18 +1915,18 @@ object MDIChild: TMDIChild
|
||||
Caption = 'Copy data'
|
||||
object CopyasCSVData1: TMenuItem
|
||||
Tag = 48
|
||||
Action = MainForm.Copy2CSV
|
||||
Action = MainForm.actCopyAsCSV
|
||||
end
|
||||
object CopycontentsasHTML1: TMenuItem
|
||||
Tag = 49
|
||||
Action = MainForm.CopyHTMLtable
|
||||
Action = MainForm.actCopyAsHTML
|
||||
end
|
||||
object CopyasXMLdata1: TMenuItem
|
||||
Action = MainForm.Copy2XML
|
||||
Action = MainForm.actCopyAsXML
|
||||
end
|
||||
end
|
||||
object Exportdata2: TMenuItem
|
||||
Action = MainForm.ExportData
|
||||
Action = MainForm.actExportData
|
||||
end
|
||||
object N12: TMenuItem
|
||||
Caption = '-'
|
||||
@ -2011,7 +1966,7 @@ object MDIChild: TMDIChild
|
||||
end
|
||||
end
|
||||
object ViewasHTML1: TMenuItem
|
||||
Action = MainForm.HTMLview
|
||||
Action = MainForm.actHTMLview
|
||||
end
|
||||
object InsertfilesintoBLOBfields3: TMenuItem
|
||||
Action = MainForm.actInsertFiles
|
||||
@ -2020,10 +1975,7 @@ object MDIChild: TMDIChild
|
||||
Caption = '-'
|
||||
end
|
||||
object menuSQLhelpData: TMenuItem
|
||||
Caption = 'Lookup field datatype in SQL help ...'
|
||||
ImageIndex = 31
|
||||
ShortCut = 112
|
||||
OnClick = menuSQLhelpClick
|
||||
Action = MainForm.actSQLhelp
|
||||
end
|
||||
object Refresh3: TMenuItem
|
||||
Tag = 28
|
||||
@ -2039,27 +1991,27 @@ object MDIChild: TMDIChild
|
||||
Left = 40
|
||||
Top = 48
|
||||
object Copy4: TMenuItem
|
||||
Action = MainForm.EditCopy1
|
||||
Action = MainForm.actCopy
|
||||
end
|
||||
object HTMLview1: TMenuItem
|
||||
Action = MainForm.HTMLview
|
||||
Action = MainForm.actHTMLview
|
||||
end
|
||||
object N14: TMenuItem
|
||||
Caption = '-'
|
||||
end
|
||||
object Copyrecords1: TMenuItem
|
||||
Tag = 48
|
||||
Action = MainForm.Copy2CSV
|
||||
Action = MainForm.actCopyAsCSV
|
||||
end
|
||||
object CopycontentsasHTML2: TMenuItem
|
||||
Tag = 49
|
||||
Action = MainForm.CopyHTMLtable
|
||||
Action = MainForm.actCopyAsHTML
|
||||
end
|
||||
object CopyasXMLdata2: TMenuItem
|
||||
Action = MainForm.Copy2XML
|
||||
Action = MainForm.actCopyAsXML
|
||||
end
|
||||
object Exportdata1: TMenuItem
|
||||
Action = MainForm.ExportData
|
||||
Action = MainForm.actExportData
|
||||
end
|
||||
end
|
||||
object TimerConnected: TTimer
|
||||
@ -2073,7 +2025,7 @@ object MDIChild: TMDIChild
|
||||
Left = 72
|
||||
Top = 48
|
||||
object Copy1: TMenuItem
|
||||
Action = MainForm.EditCopy1
|
||||
Action = MainForm.actCopy
|
||||
end
|
||||
object Clear2: TMenuItem
|
||||
Caption = 'Clear'
|
||||
@ -2224,113 +2176,70 @@ object MDIChild: TMDIChild
|
||||
Left = 104
|
||||
Top = 120
|
||||
end
|
||||
object FindDialogQuery: TFindDialog
|
||||
OnFind = FindDialogQueryFind
|
||||
Left = 8
|
||||
Top = 224
|
||||
end
|
||||
object SynEditSearch1: TSynEditSearch
|
||||
Left = 72
|
||||
Top = 192
|
||||
end
|
||||
object ReplaceDialogQuery: TReplaceDialog
|
||||
OnFind = ReplaceDialogQueryFind
|
||||
OnReplace = ReplaceDialogQueryReplace
|
||||
Left = 40
|
||||
Top = 224
|
||||
end
|
||||
object popupQuery: TPopupMenu
|
||||
Images = MainForm.PngImageListMain
|
||||
OnPopup = popupQueryPopup
|
||||
Left = 40
|
||||
Top = 80
|
||||
object MenuRun: TMenuItem
|
||||
Action = MainForm.ExecuteQuery
|
||||
Action = MainForm.actExecuteQuery
|
||||
end
|
||||
object MenuRunSelection: TMenuItem
|
||||
Action = MainForm.ExecuteSelection
|
||||
Action = MainForm.actExecuteSelection
|
||||
end
|
||||
object MenuRunLine: TMenuItem
|
||||
Action = MainForm.ExecuteLine
|
||||
Action = MainForm.actExecuteLine
|
||||
end
|
||||
object MenuItem1: TMenuItem
|
||||
Caption = '-'
|
||||
end
|
||||
object menucopy: TMenuItem
|
||||
Action = MainForm.EditCopy1
|
||||
Action = MainForm.actCopy
|
||||
end
|
||||
object menupaste: TMenuItem
|
||||
Action = MainForm.EditPaste1
|
||||
Action = MainForm.actPaste
|
||||
end
|
||||
object menuclear: TMenuItem
|
||||
Caption = 'Clear'
|
||||
ImageIndex = 58
|
||||
ShortCut = 16471
|
||||
OnClick = menuclearClick
|
||||
Action = MainForm.actClearQueryEditor
|
||||
end
|
||||
object N22: TMenuItem
|
||||
Caption = '-'
|
||||
end
|
||||
object MenuFind: TMenuItem
|
||||
Caption = 'Find...'
|
||||
ImageIndex = 30
|
||||
ShortCut = 16454
|
||||
OnClick = btnQueryFindClick
|
||||
Action = MainForm.actQueryFind
|
||||
end
|
||||
object MenuReplace: TMenuItem
|
||||
Caption = 'Replace ...'
|
||||
Hint = 'Search and replace...'
|
||||
ImageIndex = 59
|
||||
ShortCut = 16466
|
||||
OnClick = btnQueryReplaceClick
|
||||
Action = MainForm.actQueryReplace
|
||||
end
|
||||
object MenuItem2: TMenuItem
|
||||
Caption = '-'
|
||||
end
|
||||
object menuload: TMenuItem
|
||||
Caption = 'Load from file ...'
|
||||
ImageIndex = 52
|
||||
ShortCut = 16463
|
||||
OnClick = btnQueryLoadClick
|
||||
end
|
||||
object menuInsertFileAtCursor: TMenuItem
|
||||
Caption = 'Insert file at cursor ...'
|
||||
ImageIndex = 52
|
||||
ShortCut = 24655
|
||||
OnClick = menuInsertFileAtCursorClick
|
||||
Action = MainForm.actLoadSQL
|
||||
end
|
||||
object menusave: TMenuItem
|
||||
Caption = 'Save to file ...'
|
||||
ImageIndex = 10
|
||||
ShortCut = 16467
|
||||
OnClick = btnQuerySaveClick
|
||||
Action = MainForm.actSaveSQL
|
||||
end
|
||||
object menuSaveSelectionToFile: TMenuItem
|
||||
Tag = 1
|
||||
Caption = 'Save selection to file ...'
|
||||
ImageIndex = 10
|
||||
ShortCut = 24659
|
||||
OnClick = btnQuerySaveClick
|
||||
Action = MainForm.actSaveSQLselection
|
||||
end
|
||||
object menuSaveAsSnippet: TMenuItem
|
||||
Caption = 'Save as snippet ...'
|
||||
ImageIndex = 54
|
||||
OnClick = btnQuerySaveSnippetClick
|
||||
Action = MainForm.actSaveSQLSnippet
|
||||
end
|
||||
object menuSaveSelectionAsSnippet: TMenuItem
|
||||
Tag = 1
|
||||
Caption = 'Save selection as snippet ...'
|
||||
ImageIndex = 54
|
||||
OnClick = btnQuerySaveSnippetClick
|
||||
Action = MainForm.actSaveSQLSelectionSnippet
|
||||
end
|
||||
object N23: TMenuItem
|
||||
Caption = '-'
|
||||
end
|
||||
object menuSQLhelp: TMenuItem
|
||||
Caption = 'Lookup in SQL help ...'
|
||||
ImageIndex = 31
|
||||
ShortCut = 112
|
||||
OnClick = menuSQLhelpClick
|
||||
Action = MainForm.actSQLhelp
|
||||
end
|
||||
object N24: TMenuItem
|
||||
Caption = '-'
|
||||
@ -2367,10 +2276,7 @@ object MDIChild: TMDIChild
|
||||
OnClick = menuExploreClick
|
||||
end
|
||||
object menuHelp: TMenuItem
|
||||
Caption = 'Help'
|
||||
ImageIndex = 31
|
||||
ShortCut = 112
|
||||
OnClick = CallSQLHelp
|
||||
Action = MainForm.actSQLhelp
|
||||
end
|
||||
end
|
||||
object popupFilter: TPopupMenu
|
||||
@ -2388,24 +2294,19 @@ object MDIChild: TMDIChild
|
||||
Caption = '-'
|
||||
end
|
||||
object menuFilterCopy: TMenuItem
|
||||
Action = MainForm.EditCopy1
|
||||
Action = MainForm.actCopy
|
||||
end
|
||||
object menuFilterPaste: TMenuItem
|
||||
Action = MainForm.EditPaste1
|
||||
Action = MainForm.actPaste
|
||||
end
|
||||
object menuFilterClear: TMenuItem
|
||||
Caption = 'Clear'
|
||||
ImageIndex = 58
|
||||
ShortCut = 16471
|
||||
OnClick = menuclearClick
|
||||
Action = MainForm.actClearFilterEditor
|
||||
end
|
||||
object N8: TMenuItem
|
||||
Caption = '-'
|
||||
end
|
||||
object menuFilterSQLhelp: TMenuItem
|
||||
Caption = 'Lookup in SQL help'
|
||||
ImageIndex = 31
|
||||
OnClick = menuSQLhelpClick
|
||||
Action = MainForm.actSQLhelp
|
||||
end
|
||||
object N25: TMenuItem
|
||||
Caption = '-'
|
||||
|
@ -221,9 +221,7 @@ type
|
||||
OpenDialogSQLFile: TOpenDialog;
|
||||
SaveDialogSQLFile: TSaveDialog;
|
||||
btnQuerySaveSnippet: TToolButton;
|
||||
FindDialogQuery: TFindDialog;
|
||||
SynEditSearch1: TSynEditSearch;
|
||||
ReplaceDialogQuery: TReplaceDialog;
|
||||
N16: TMenuItem;
|
||||
ManageIndexes1: TMenuItem;
|
||||
tabCommandStats: TTabSheet;
|
||||
@ -259,7 +257,6 @@ type
|
||||
menuRenameColumn: TMenuItem;
|
||||
N22: TMenuItem;
|
||||
N23: TMenuItem;
|
||||
menuInsertFileAtCursor: TMenuItem;
|
||||
menuSaveSelectionToFile: TMenuItem;
|
||||
menuSaveAsSnippet: TMenuItem;
|
||||
menuSaveSelectionAsSnippet: TMenuItem;
|
||||
@ -315,7 +312,6 @@ type
|
||||
procedure menuRenameColumnClick(Sender: TObject);
|
||||
procedure ListColumnsNewText(Sender: TBaseVirtualTree; Node: PVirtualNode;
|
||||
Column: TColumnIndex; NewText: WideString);
|
||||
procedure menuclearClick(Sender: TObject);
|
||||
procedure popupQueryPopup(Sender: TObject);
|
||||
procedure lboxQueryHelpersClick(Sender: TObject);
|
||||
procedure lboxQueryHelpersDblClick(Sender: TObject);
|
||||
@ -330,15 +326,7 @@ type
|
||||
procedure gridMouseDown(Sender: TObject; Button: TMouseButton;
|
||||
Shift: TShiftState; X, Y: Integer);
|
||||
procedure controlsKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
|
||||
procedure CallSQLHelp(Sender: TObject);
|
||||
procedure CallSQLHelpWithKeyword(keyword: String);
|
||||
procedure ManageIndexes1Click(Sender: TObject);
|
||||
procedure ZQueryGridAfterPost(DataSet: TDataSet);
|
||||
procedure btnQueryReplaceClick(Sender: TObject);
|
||||
procedure ReplaceDialogQueryReplace(Sender: TObject);
|
||||
procedure ReplaceDialogQueryFind(Sender: TObject);
|
||||
procedure FindDialogQueryFind(Sender: TObject);
|
||||
procedure btnQuerySaveSnippetClick(Sender: TObject);
|
||||
procedure SynCompletionProposal1AfterCodeCompletion(Sender: TObject;
|
||||
const Value: WideString; Shift: TShiftState; Index: Integer; EndToken: WideChar);
|
||||
procedure SynCompletionProposal1CodeCompletion(Sender: TObject;
|
||||
@ -361,21 +349,17 @@ type
|
||||
procedure viewdata(Sender: TObject);
|
||||
procedure RefreshFieldListClick(Sender: TObject);
|
||||
procedure MenuRefreshClick(Sender: TObject);
|
||||
procedure DropDB(Sender: TObject);
|
||||
procedure LogSQL(msg: WideString = ''; comment: Boolean = true );
|
||||
procedure ShowVariablesAndProcesses(Sender: TObject);
|
||||
procedure CreateDatabase(Sender: TObject);
|
||||
procedure KillProcess(Sender: TObject);
|
||||
procedure PageControlHostChange(Sender: TObject);
|
||||
procedure ExecSQLClick(Sender: TObject; Selection: Boolean = false;
|
||||
CurrentLine: Boolean=false);
|
||||
procedure DropField(Sender: TObject);
|
||||
procedure SynMemoQueryChange(Sender: TObject);
|
||||
procedure TimerHostUptimeTimer(Sender: TObject);
|
||||
procedure FormActivate(Sender: TObject);
|
||||
procedure FormDeactivate(Sender: TObject);
|
||||
procedure FormShow(Sender: TObject);
|
||||
procedure UpdateField(Sender: TObject);
|
||||
procedure ListTablesNewText(Sender: TBaseVirtualTree; Node: PVirtualNode;
|
||||
Column: TColumnIndex; NewText: WideString);
|
||||
procedure MenuRenameTableClick(Sender: TObject);
|
||||
@ -388,7 +372,6 @@ type
|
||||
procedure TimerConnectErrorCloseWindowTimer(Sender: TObject);
|
||||
procedure gridDataTitleClick(Column: TColumn);
|
||||
procedure Filter1Click(Sender: TObject);
|
||||
procedure Delete1Click(Sender: TObject);
|
||||
procedure QuickFilterClick(Sender: TObject);
|
||||
procedure btnBlobWordWrapClick(Sender: TObject);
|
||||
procedure pageCtlEditorsChange(Sender: TObject);
|
||||
@ -420,13 +403,9 @@ type
|
||||
procedure popupHostPopup(Sender: TObject);
|
||||
procedure Saveastextfile1Click(Sender: TObject);
|
||||
procedure popupTreeViewPopup(Sender: TObject);
|
||||
procedure btnQueryFindClick(Sender: TObject);
|
||||
procedure btnQuerySaveClick(Sender: TObject);
|
||||
procedure btnQueryLoadClick(Sender: TObject);
|
||||
procedure btnFilterPreviousClick(Sender: TObject);
|
||||
procedure btnFilterNextClick(Sender: TObject);
|
||||
procedure ComboBoxWhereFiltersChange(Sender: TObject);
|
||||
procedure btnQueryStopOnErrorsClick(Sender: TObject);
|
||||
procedure DBGridDblClick(Sender: TObject);
|
||||
procedure SaveDialogExportDataTypeChange(Sender: TObject);
|
||||
procedure GridDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol:
|
||||
@ -435,7 +414,6 @@ type
|
||||
procedure InsertDate(Sender: TObject);
|
||||
procedure btnBlobCopyClick(Sender: TObject);
|
||||
procedure setNULL1Click(Sender: TObject);
|
||||
procedure MenuAddFieldClick(Sender: TObject);
|
||||
procedure ZQueryGridBeforeClose(DataSet: TDataSet);
|
||||
function GetNamedVar( SQLQuery: WideString; x: String;
|
||||
HandleErrors: Boolean = false; DisplayErrors: Boolean = false ) : String;
|
||||
@ -459,7 +437,6 @@ type
|
||||
procedure QueryLoad( filename: String; ReplaceContent: Boolean = true );
|
||||
procedure AddOrRemoveFromQueryLoadHistory( filename: String;
|
||||
AddIt: Boolean = true; CheckIfFileExists: Boolean = true );
|
||||
procedure btnQueryWordWrapClick(Sender: TObject);
|
||||
procedure popupQueryLoadClick( sender: TObject );
|
||||
procedure FillPopupQueryLoad;
|
||||
procedure PopupQueryLoadRemoveAbsentFiles( sender: TObject );
|
||||
@ -469,11 +446,8 @@ type
|
||||
procedure menuDeleteSnippetClick(Sender: TObject);
|
||||
function GetCalculatedLimit( Table: String ): Int64;
|
||||
procedure menuExploreClick(Sender: TObject);
|
||||
procedure menuInsertFileAtCursorClick(Sender: TObject);
|
||||
procedure menuInsertSnippetAtCursorClick(Sender: TObject);
|
||||
procedure menuLoadSnippetClick(Sender: TObject);
|
||||
procedure menuAlterdatabaseClick(Sender: TObject);
|
||||
procedure menuSQLhelpClick(Sender: TObject);
|
||||
procedure RunAsyncPost(ds: TDeferDataSet);
|
||||
procedure vstGetNodeDataSize(Sender: TBaseVirtualTree; var
|
||||
NodeDataSize: Integer);
|
||||
@ -522,6 +496,7 @@ type
|
||||
TRect);
|
||||
procedure ListProcessesChange(Sender: TBaseVirtualTree; Node: PVirtualNode);
|
||||
procedure editFilterVTChange(Sender: TObject);
|
||||
procedure ListColumnsDblClick(Sender: TObject);
|
||||
procedure ListTablesEdited(Sender: TBaseVirtualTree; Node: PVirtualNode;
|
||||
Column: TColumnIndex);
|
||||
procedure ListVariablesDblClick(Sender: TObject);
|
||||
@ -540,7 +515,7 @@ type
|
||||
viewingdata : Boolean;
|
||||
WhereFilters : TStringList;
|
||||
WhereFiltersIndex : Integer;
|
||||
StopOnErrors, WordWrap : Boolean;
|
||||
WordWrap : Boolean;
|
||||
FMysqlConn : TMysqlConn;
|
||||
FConn : TOpenConnProf;
|
||||
QueryRunningInterlock : Integer;
|
||||
@ -549,7 +524,6 @@ type
|
||||
UserQueryFiring : Boolean;
|
||||
CachedTableLists : TStringList;
|
||||
QueryHelpersSelectedItems : Array[0..3] of Array of Integer;
|
||||
CreateDatabaseForm : TCreateDatabaseForm;
|
||||
EditVariableForm : TfrmEditVariable;
|
||||
FileNameSessionLog : String;
|
||||
FileHandleSessionLog : Textfile;
|
||||
@ -606,6 +580,7 @@ type
|
||||
prefCSVTerminator : String[10];
|
||||
prefLogToFile,
|
||||
prefPreferShowTables : Boolean;
|
||||
CreateDatabaseForm : TCreateDatabaseForm;
|
||||
CreateTableForm : TCreateTableForm;
|
||||
TablePropertiesForm : Ttbl_properties_form;
|
||||
|
||||
@ -1025,9 +1000,6 @@ begin
|
||||
ComboBoxQueryDelimiter.ItemIndex := Mainform.GetRegValue( REGNAME_DELIMITERSELECTED, 0 );
|
||||
end;
|
||||
|
||||
// Synchronize internal variables with defaults from DFM.
|
||||
StopOnErrors := btnQueryStopOnErrors.Down;
|
||||
|
||||
// Restore width of columns of all VirtualTrees
|
||||
RestoreListSetup(ListVariables);
|
||||
RestoreListSetup(ListStatus);
|
||||
@ -1635,10 +1607,9 @@ begin
|
||||
Mainform.actDatasetInsert.Enabled := inDataTab;
|
||||
Mainform.actDatasetDelete.Enabled := inDataTab;
|
||||
Mainform.actDatasetPost.Enabled := inDataTab;
|
||||
|
||||
Mainform.ExecuteQuery.Enabled := PageControlMain.ActivePage = tabQuery;
|
||||
Mainform.ExecuteSelection.Enabled := PageControlMain.ActivePage = tabQuery;
|
||||
Mainform.ExecuteLine.Enabled := PageControlMain.ActivePage = tabQuery;
|
||||
Mainform.actExecuteQuery.Enabled := PageControlMain.ActivePage = tabQuery;
|
||||
Mainform.actExecuteSelection.Enabled := PageControlMain.ActivePage = tabQuery;
|
||||
Mainform.actExecuteLine.Enabled := PageControlMain.ActivePage = tabQuery;
|
||||
if (PageControlMain.ActivePage = tabData) and (not dataselected) then
|
||||
viewdata(Sender);
|
||||
if PageControlMain.ActivePage = tabQuery then
|
||||
@ -1788,7 +1759,6 @@ var
|
||||
begin
|
||||
// DB-Properties
|
||||
Screen.Cursor := crHourGlass;
|
||||
Mainform.ButtonDropDatabase.Hint := 'Drop Database...|Drop Database ' + db + '...';
|
||||
|
||||
// Remember selected nodes
|
||||
SelectedCaptions := GetVTCaptions(ListTables, True);
|
||||
@ -2166,90 +2136,85 @@ begin
|
||||
ViewSelected := NodeData.NodeType = NODETYPE_VIEW;
|
||||
end;
|
||||
|
||||
Mainform.actTableProperties.Enabled := NodeSelected;
|
||||
Mainform.actEditTableFields.Enabled := NodeSelected;
|
||||
Mainform.actEmptyTables.Enabled := tableSelected;
|
||||
Mainform.actAlterTable.Enabled := tableSelected;
|
||||
Mainform.actEditTableProperties.Enabled := tableSelected;
|
||||
MenuRenameTable.Enabled := NodeSelected;
|
||||
Mainform.actCopyTable.Enabled := NodeSelected;
|
||||
Mainform.actEditView.Enabled := ViewSelected and (mysql_version >= 50001);
|
||||
Mainform.actCreateView.Enabled := FrmIsFocussed and (mysql_version >= 50001);
|
||||
|
||||
MainForm.ButtonDropDatabase.Enabled := (ActiveDatabase <> '') and FrmIsFocussed;
|
||||
MainForm.actCreateDatabase.Enabled := FrmIsFocussed;
|
||||
MainForm.actDropDatabase.Enabled := (ActiveDatabase <> '') and FrmIsFocussed;
|
||||
MainForm.actEditDatabase.Enabled := (ActiveDatabase <> '') and FrmIsFocussed and (mysql_version >= 50002);
|
||||
if mysql_version < 50002 then
|
||||
MainForm.actEditDatabase.Hint := STR_NOTSUPPORTED
|
||||
else
|
||||
MainForm.actEditDatabase.Hint := 'Rename and/or modify character set of database';
|
||||
MainForm.actDropTablesAndViews.Enabled := NodeSelected or ((PageControlMain.ActivePage <> tabDatabase) and (SelectedTable <> '') and FrmIsFocussed);
|
||||
MainForm.actCreateTable.Enabled := (ActiveDatabase <> '') and FrmIsFocussed;
|
||||
MainForm.ButtonImportTextFile.Enabled := (mysql_version >= 32206) and FrmIsFocussed;
|
||||
MainForm.MenuImportTextFile.Enabled := MainForm.ButtonImportTextFile.Enabled;
|
||||
MainForm.actImportCSV.Enabled := (mysql_version >= 32206) and FrmIsFocussed;
|
||||
MainForm.actExportTables.Enabled := FrmIsFocussed;
|
||||
MainForm.actRefresh.Enabled := FrmIsFocussed;
|
||||
MainForm.actLoadSQL.Enabled := FrmIsFocussed;
|
||||
MainForm.actFlushHosts.Enabled := FrmIsFocussed;
|
||||
MainForm.actFlushLogs.Enabled := FrmIsFocussed;
|
||||
MainForm.actFlushPrivileges.Enabled := FrmIsFocussed;
|
||||
MainForm.actFlushTables.Enabled := FrmIsFocussed;
|
||||
MainForm.actFlushTableswithreadlock.Enabled := FrmIsFocussed;
|
||||
MainForm.actFlushStatus.Enabled := FrmIsFocussed;
|
||||
MainForm.actUserManager.Enabled := FrmIsFocussed;
|
||||
MainForm.actMaintenance.Enabled := FrmIsFocussed;
|
||||
MainForm.actInsertFiles.Enabled := FrmIsFocussed;
|
||||
{***
|
||||
Activate export-options if we're on Data- or Query-tab
|
||||
PrintList should only be active if we're focussing one of the ListViews,
|
||||
at least as long we are not able to print DBGrids
|
||||
@see Issue 1686582
|
||||
}
|
||||
inDataOrQueryTab := FrmIsFocussed and ((PageControlMain.ActivePage = tabData) or (PageControlMain.ActivePage = tabQuery));
|
||||
MainForm.actPrintList.Enabled := (not inDataOrQueryTab) and FrmIsFocussed;
|
||||
// Both the Query and the Data grid may have a nil DataSet reference,
|
||||
// either in case the relevant grid has not been used yet, or when
|
||||
// an error has occurred.
|
||||
inDataOrQueryTabNotEmpty := inDataOrQueryTab and
|
||||
not (
|
||||
(getActiveGrid.DataSource.DataSet = nil)
|
||||
or getActiveGrid.DataSource.DataSet.IsEmpty
|
||||
);
|
||||
MainForm.actCopyAsCSV.Enabled := inDataOrQueryTabNotEmpty;
|
||||
MainForm.actCopyAsHTML.Enabled := inDataOrQueryTabNotEmpty;
|
||||
MainForm.actCopyAsXML.Enabled := inDataOrQueryTabNotEmpty;
|
||||
MainForm.actExportData.Enabled := inDataOrQueryTabNotEmpty;
|
||||
MainForm.actHTMLView.Enabled := inDataOrQueryTabNotEmpty;
|
||||
Delete1.Enabled := inDataOrQueryTabNotEmpty; // Menuitem in popupDataGrid ("Delete record(s)")
|
||||
// Hide irrelevant toolbars
|
||||
ShowDbTlb := PageControlMain.ActivePage = tabDatabase;
|
||||
if not ShowDbTlb then MainForm.ToolBarDatabase.Visible := False;
|
||||
ShowTableTlb := PageControlMain.ActivePage = tabTable;
|
||||
if not ShowTableTlb then MainForm.ToolBarTable.Visible := False;
|
||||
ShowDataTlb := (PageControlMain.ActivePage = tabData) or (PageControlMain.ActivePage = tabTable);
|
||||
if not ShowDataTlb then MainForm.ToolBarData.Visible := False;
|
||||
// Unhide relevant toolbar
|
||||
MainForm.ToolBarDatabase.Visible := ShowDbTlb;
|
||||
MainForm.ToolBarTable.Visible := ShowTableTlb;
|
||||
MainForm.ToolBarData.Visible := ShowDataTlb;
|
||||
|
||||
with MainForm do
|
||||
begin
|
||||
ButtonRefresh.Enabled := FrmIsFocussed;
|
||||
actExportTables.Enabled := FrmIsFocussed;
|
||||
ButtonCreateDatabase.Enabled := FrmIsFocussed;
|
||||
MenuRefresh.Enabled := FrmIsFocussed;
|
||||
MenuCreateDatabase.Enabled := FrmIsFocussed;
|
||||
MenuDropDatabase.Enabled := FrmIsFocussed;
|
||||
LoadSQL.Enabled := FrmIsFocussed;
|
||||
MenuFlushHosts.Enabled := FrmIsFocussed;
|
||||
MenuFlushLogs.Enabled := FrmIsFocussed;
|
||||
FlushUserPrivileges1.Enabled := FrmIsFocussed;
|
||||
MenuFlushTables.Enabled := FrmIsFocussed;
|
||||
MenuFlushTableswithreadlock.Enabled := FrmIsFocussed;
|
||||
MenuFlushStatus.Enabled := FrmIsFocussed;
|
||||
UserManager.Enabled := FrmIsFocussed;
|
||||
actMaintenance.Enabled := FrmIsFocussed;
|
||||
actInsertFiles.Enabled := FrmIsFocussed;
|
||||
{***
|
||||
Activate export-options if we're on Data- or Query-tab
|
||||
PrintList should only be active if we're focussing one of the ListViews,
|
||||
at least as long we are not able to print DBGrids
|
||||
@see Issue 1686582
|
||||
}
|
||||
inDataOrQueryTab := FrmIsFocussed and ((PageControlMain.ActivePage = tabData) or (PageControlMain.ActivePage = tabQuery));
|
||||
actPrintList.Enabled := (not inDataOrQueryTab) and FrmIsFocussed;
|
||||
// Both the Query and the Data grid may have a nil DataSet reference,
|
||||
// either in case the relevant grid has not been used yet, or when
|
||||
// an error has occurred.
|
||||
inDataOrQueryTabNotEmpty := inDataOrQueryTab and
|
||||
not (
|
||||
(getActiveGrid.DataSource.DataSet = nil)
|
||||
or getActiveGrid.DataSource.DataSet.IsEmpty
|
||||
);
|
||||
Copy2CSV.Enabled := inDataOrQueryTabNotEmpty;
|
||||
CopyHTMLtable.Enabled := inDataOrQueryTabNotEmpty;
|
||||
Copy2XML.Enabled := inDataOrQueryTabNotEmpty;
|
||||
ExportData.Enabled := inDataOrQueryTabNotEmpty;
|
||||
HTMLView.Enabled := inDataOrQueryTabNotEmpty;
|
||||
Self.Delete1.Enabled := inDataOrQueryTabNotEmpty; // Menuitem in popupDataGrid ("Delete record(s)")
|
||||
// Hide irrelevant toolbars
|
||||
ShowDbTlb := PageControlMain.ActivePage = tabDatabase;
|
||||
if not ShowDbTlb then ToolBarDatabase.Visible := False;
|
||||
ShowTableTlb := PageControlMain.ActivePage = tabTable;
|
||||
if not ShowTableTlb then ToolBarTable.Visible := False;
|
||||
ShowDataTlb := (PageControlMain.ActivePage = tabData) or (PageControlMain.ActivePage = tabTable);
|
||||
if not ShowDataTlb then ToolBarData.Visible := False;
|
||||
// Unhide relevant toolbar
|
||||
ToolBarDatabase.Visible := ShowDbTlb;
|
||||
ToolBarTable.Visible := ShowTableTlb;
|
||||
ToolBarData.Visible := ShowDataTlb;
|
||||
|
||||
if FrmIsFocussed then begin
|
||||
actDatasetFirst.DataSource := DataSource1;
|
||||
actDatasetLast.DataSource := DataSource1;
|
||||
actDatasetInsert.DataSource := DataSource1;
|
||||
actDatasetDelete.DataSource := DataSource1;
|
||||
actDatasetPost.DataSource := DataSource1;
|
||||
end;
|
||||
btnSQLHelp.Enabled := (mysql_version >= 40100) and FrmIsFocussed;
|
||||
menuSQLHelp.Enabled := btnSQLHelp.Enabled and FrmIsFocussed;
|
||||
|
||||
if not FrmIsFocussed then begin
|
||||
// Empty "connected" and "uptime"
|
||||
MainForm.showstatus('', 1);
|
||||
MainForm.showstatus('', 2);
|
||||
MainForm.showstatus('', 3);
|
||||
end;
|
||||
tabEditors.tabVisible := inDataOrQueryTab;
|
||||
if FrmIsFocussed then begin
|
||||
MainForm.actDatasetFirst.DataSource := DataSource1;
|
||||
MainForm.actDatasetLast.DataSource := DataSource1;
|
||||
MainForm.actDatasetInsert.DataSource := DataSource1;
|
||||
MainForm.actDatasetDelete.DataSource := DataSource1;
|
||||
MainForm.actDatasetPost.DataSource := DataSource1;
|
||||
end;
|
||||
MainForm.actSQLhelp.Enabled := (mysql_version >= 40100) and FrmIsFocussed;
|
||||
|
||||
if not FrmIsFocussed then begin
|
||||
// Empty "connected" and "uptime"
|
||||
MainForm.showstatus('', 1);
|
||||
MainForm.showstatus('', 2);
|
||||
MainForm.showstatus('', 3);
|
||||
end;
|
||||
tabEditors.tabVisible := inDataOrQueryTab;
|
||||
end;
|
||||
|
||||
|
||||
@ -2262,48 +2227,6 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
procedure TMDIChild.DropDB(Sender: TObject);
|
||||
var
|
||||
tndb_ : PVirtualNode;
|
||||
db: String;
|
||||
begin
|
||||
// Drop DB.
|
||||
case DBtree.GetNodeLevel(DBtree.GetFirstSelected) of
|
||||
1: tndb_ := DBtree.GetFirstSelected;
|
||||
2: tndb_ := DBtree.GetFirstSelected.Parent;
|
||||
else Exit;
|
||||
end;
|
||||
|
||||
if not Assigned(tndb_) then raise Exception.Create('Internal error: Cannot drop NIL database.');
|
||||
|
||||
db := Databases[tndb_.Index];
|
||||
|
||||
if MessageDlg('Drop Database "'+db+'"?' + crlf + crlf + 'WARNING: You will lose all tables in database '+db+'!', mtConfirmation, [mbok,mbcancel], 0) <> mrok then
|
||||
abort;
|
||||
|
||||
Screen.Cursor := crSQLWait;
|
||||
try
|
||||
ExecUpdateQuery( 'DROP DATABASE ' + mask(db) );
|
||||
if DatabasesWanted.IndexOf(db) > -1 then begin
|
||||
DatabasesWanted.Delete( DatabasesWanted.IndexOf(db) );
|
||||
with TRegistry.Create do begin
|
||||
if OpenKey(REGPATH + REGKEY_SESSIONS + FConn.Description, false) then begin
|
||||
WriteString( 'OnlyDBs', ImplodeStr( ';', DatabasesWanted ) );
|
||||
CloseKey;
|
||||
end;
|
||||
Free;
|
||||
end;
|
||||
end;
|
||||
DBtree.Selected[DBtree.GetFirst] := true;
|
||||
RefreshTree(False);
|
||||
except
|
||||
MessageDLG('Dropping failed.'+crlf+'Maybe '''+db+''' is not a valid database-name.', mtError, [mbOK], 0)
|
||||
end;
|
||||
Screen.Cursor := crDefault;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
procedure TMDIChild.ShowVariablesAndProcesses(Sender: TObject);
|
||||
|
||||
procedure addLVitem( caption: String; commandCount: Int64; totalCount: Int64 );
|
||||
@ -2583,8 +2506,8 @@ begin
|
||||
ds := nil;
|
||||
try
|
||||
MainForm.showstatus( 'Initializing SQL...' );
|
||||
Mainform.ExecuteQuery.Enabled := false;
|
||||
Mainform.ExecuteSelection.Enabled := false;
|
||||
Mainform.actExecuteQuery.Enabled := false;
|
||||
Mainform.actExecuteSelection.Enabled := false;
|
||||
|
||||
// Let EnsureActiveDatabase know that we've fired user queries.
|
||||
UserQueryFiring := true;
|
||||
@ -2632,16 +2555,12 @@ begin
|
||||
except
|
||||
on E:Exception do
|
||||
begin
|
||||
if (
|
||||
( btnQueryStopOnErrors.Down ) or
|
||||
( i = (SQL.Count - 1) )
|
||||
) then
|
||||
begin
|
||||
if Mainform.actQueryStopOnErrors.Checked or (i = SQL.Count - 1) then begin
|
||||
Screen.Cursor := crDefault;
|
||||
MessageDlg( E.Message, mtError, [mbOK], 0 );
|
||||
ProgressBarQuery.Hide();
|
||||
Mainform.ExecuteQuery.Enabled := true;
|
||||
Mainform.ExecuteSelection.Enabled := true;
|
||||
Mainform.actExecuteQuery.Enabled := true;
|
||||
Mainform.actExecuteSelection.Enabled := true;
|
||||
Break;
|
||||
end;
|
||||
end;
|
||||
@ -2662,8 +2581,8 @@ begin
|
||||
end;
|
||||
|
||||
ProgressBarQuery.Hide();
|
||||
Mainform.ExecuteQuery.Enabled := true;
|
||||
Mainform.ExecuteSelection.Enabled := true;
|
||||
Mainform.actExecuteQuery.Enabled := true;
|
||||
Mainform.actExecuteSelection.Enabled := true;
|
||||
// count chars:
|
||||
SynMemoQuery.OnChange( Self );
|
||||
|
||||
@ -2722,52 +2641,9 @@ begin
|
||||
SomeSelected := Length(Sender.GetSortedSelection(False))>0;
|
||||
|
||||
// Toggle state of menuitems and buttons
|
||||
Mainform.btnTableDropField.Enabled := SomeSelected;
|
||||
DropField1.Enabled := SomeSelected;
|
||||
MenuEditField.Enabled := OneFocused and SomeSelected;
|
||||
Mainform.btnTableEditField.enabled := OneFocused and SomeSelected;
|
||||
Mainform.actDropFields.Enabled := SomeSelected;
|
||||
Mainform.actEditField.enabled := OneFocused and SomeSelected;
|
||||
menuRenameColumn.Enabled := OneFocused and SomeSelected;
|
||||
menuEditField.Enabled := OneFocused and SomeSelected;
|
||||
end;
|
||||
|
||||
|
||||
procedure TMDIChild.DropField(Sender: TObject);
|
||||
var
|
||||
i : Integer;
|
||||
dropCmd : String;
|
||||
dropList : TStringList;
|
||||
begin
|
||||
// Drop Columns
|
||||
|
||||
// We allow the user to select and delete multiple listItems
|
||||
dropList := GetVTCaptions( ListColumns, True );
|
||||
|
||||
// User confirmation
|
||||
if MessageDlg('Drop ' + IntToStr(dropList.Count) + ' field(s): ' + ImplodeStr( ', ', dropList ) + ' ?', mtConfirmation, [mbok,mbcancel], 0) = mrok then
|
||||
try
|
||||
// Concat fields for ALTER query
|
||||
for i := 0 to dropList.Count - 1 do
|
||||
dropCmd := dropCmd + 'DROP ' + mask(dropList[i]) + ', ';
|
||||
// Remove trailing comma
|
||||
delete(dropCmd, Length(dropCmd)-1, 2);
|
||||
|
||||
// Execute field dropping
|
||||
ExecUpdateQuery( 'ALTER TABLE '+mask(SelectedTable)+' ' + dropCmd );
|
||||
|
||||
// Rely on the server respective ExecUpdateQuery has raised an exception so the
|
||||
// following code will be skipped on any error
|
||||
ListColumns.BeginUpdate;
|
||||
ListColumns.DeleteSelectedNodes;
|
||||
ListColumns.EndUpdate;
|
||||
|
||||
// Set focus on first item
|
||||
ListColumns.FocusedNode := ListColumns.GetFirstVisible;
|
||||
except
|
||||
On E : Exception do
|
||||
begin
|
||||
MessageDlg( E.Message, mtError, [mbOK], 0 );
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
@ -2957,12 +2833,16 @@ procedure TMDIChild.SynMemoQueryChange(Sender: TObject);
|
||||
var somechars : Boolean;
|
||||
begin
|
||||
PanelCharsInQueryWindow.Caption := FormatByteNumber( SynMemoQuery.GetTextLen );
|
||||
somechars := Length(SynMemoQuery.Text) > 0;
|
||||
Mainform.ExecuteQuery.Enabled := somechars;
|
||||
Mainform.ExecuteSelection.Enabled := SynMemoQuery.SelAvail;
|
||||
Mainform.ExecuteLine.Enabled := SynMemoQuery.LineText <> '';
|
||||
btnQuerySave.Enabled := somechars;
|
||||
btnQuerySaveSnippet.Enabled := somechars;
|
||||
somechars := SynMemoQuery.GetTextLen > 0;
|
||||
Mainform.actExecuteQuery.Enabled := somechars;
|
||||
Mainform.actExecuteSelection.Enabled := SynMemoQuery.SelAvail;
|
||||
Mainform.actExecuteLine.Enabled := SynMemoQuery.LineText <> '';
|
||||
Mainform.actSaveSQL.Enabled := somechars;
|
||||
// Inserting file at cursor only makes sense with content
|
||||
Mainform.actSaveSQLselection.Enabled := SynMemoQuery.SelAvail;
|
||||
Mainform.actSaveSQLSnippet.Enabled := somechars;
|
||||
Mainform.actSaveSQLSelectionSnippet.Enabled := SynMemoQuery.SelAvail;
|
||||
Mainform.actClearQueryEditor.Enabled := somechars;
|
||||
end;
|
||||
|
||||
|
||||
@ -3021,65 +2901,6 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
{ Edit field }
|
||||
procedure TMDIChild.UpdateField(Sender: TObject);
|
||||
var
|
||||
fn : String;
|
||||
fem : TFieldEditorMode;
|
||||
begin
|
||||
fn := '';
|
||||
fem := femFieldAdd;
|
||||
|
||||
if Assigned(ListColumns.FocusedNode) and (vsSelected in ListColumns.FocusedNode.States) then
|
||||
fn := ListColumns.Text[ListColumns.FocusedNode, 0];
|
||||
|
||||
if fn<>'' then
|
||||
fem := femFieldUpdate;
|
||||
|
||||
FieldEditorWindow (Self,fem,fn);
|
||||
end;
|
||||
|
||||
|
||||
{ Add new field }
|
||||
procedure TMDIChild.MenuAddFieldClick(Sender: TObject);
|
||||
begin
|
||||
FieldEditorWindow (Self,femFieldAdd);
|
||||
end;
|
||||
|
||||
|
||||
procedure TMDIChild.CreateDatabase(Sender: TObject);
|
||||
var
|
||||
newdb: String;
|
||||
begin
|
||||
// Create database:
|
||||
// Create modal form once on demand
|
||||
if CreateDatabaseForm = nil then
|
||||
CreateDatabaseForm := TCreateDatabaseForm.Create(Self);
|
||||
|
||||
// Rely on the modalresult being set correctly
|
||||
if CreateDatabaseForm.ShowModal = mrOK then
|
||||
begin
|
||||
newdb := CreateDatabaseForm.editDBName.Text;
|
||||
// Add DB to OnlyDBs-regkey if this is not empty
|
||||
if DatabasesWanted.Count > 0 then
|
||||
begin
|
||||
DatabasesWanted.Add( newdb );
|
||||
with TRegistry.Create do
|
||||
begin
|
||||
if OpenKey(REGPATH + REGKEY_SESSIONS + FConn.Description, false) then
|
||||
begin
|
||||
WriteString( 'OnlyDBs', ImplodeStr( ';', DatabasesWanted ) );
|
||||
CloseKey;
|
||||
end;
|
||||
Free;
|
||||
end;
|
||||
end;
|
||||
// reload db nodes and switch to new one
|
||||
RefreshTree(False, newdb);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
{***
|
||||
Rename table after checking the new name for invalid characters
|
||||
}
|
||||
@ -3163,11 +2984,6 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
procedure TMDIChild.ManageIndexes1Click(Sender: TObject);
|
||||
begin
|
||||
FieldEditorWindow (Self,femIndexEditor);
|
||||
end;
|
||||
|
||||
procedure TMDIChild.Markall3Click(Sender: TObject);
|
||||
begin
|
||||
// select all in history
|
||||
@ -3175,28 +2991,9 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
{**
|
||||
Clear Query memo
|
||||
}
|
||||
procedure TMDIChild.menuclearClick(Sender: TObject);
|
||||
var
|
||||
memo : TSynMemo;
|
||||
begin
|
||||
// Clear SynMemo
|
||||
if SynMemoFilter.Focused then
|
||||
memo := SynMemoFilter
|
||||
else
|
||||
memo := SynMemoQuery;
|
||||
// Make sure to add this step to SynMemo's undo history
|
||||
memo.SelectAll;
|
||||
memo.SelText := '';
|
||||
memo.SelStart := 0;
|
||||
memo.SelEnd := 0;
|
||||
end;
|
||||
|
||||
procedure TMDIChild.ListTablesDblClick(Sender: TObject);
|
||||
begin
|
||||
Mainform.actTableProperties.Execute;
|
||||
Mainform.actEditTableFields.Execute;
|
||||
end;
|
||||
|
||||
|
||||
@ -3224,7 +3021,6 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
|
||||
procedure TMDIChild.Filter1Click(Sender: TObject);
|
||||
begin
|
||||
// Set WHERE-Filter
|
||||
@ -3233,105 +3029,6 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
|
||||
// open Find-Dialog
|
||||
procedure TMDIChild.btnQueryFindClick(Sender: TObject);
|
||||
begin
|
||||
FindDialogQuery.execute;
|
||||
// if something is selected search for that text
|
||||
if SynMemoQuery.SelAvail and (SynMemoQuery.BlockBegin.Line = SynMemoQuery.BlockEnd.Line)
|
||||
then
|
||||
FindDialogQuery.FindText := SynMemoQuery.SelText
|
||||
else
|
||||
FindDialogQuery.FindText := SynMemoQuery.GetWordAtRowCol(SynMemoQuery.CaretXY);
|
||||
end;
|
||||
|
||||
// open Replace-Dialog
|
||||
procedure TMDIChild.btnQueryReplaceClick(Sender: TObject);
|
||||
begin
|
||||
ReplaceDialogQuery.execute;
|
||||
// if something is selected search for that text
|
||||
if SynMemoQuery.SelAvail and (SynMemoQuery.BlockBegin.Line = SynMemoQuery.BlockEnd.Line)
|
||||
then
|
||||
ReplaceDialogQuery.FindText := SynMemoQuery.SelText
|
||||
else
|
||||
ReplaceDialogQuery.FindText := SynMemoQuery.GetWordAtRowCol(SynMemoQuery.CaretXY);
|
||||
end;
|
||||
|
||||
// Search-Dialog is searching...
|
||||
procedure TMDIChild.FindDialogQueryFind(Sender: TObject);
|
||||
var
|
||||
Options: TSynSearchOptions;
|
||||
Search: String;
|
||||
begin
|
||||
Search := FindDialogQuery.FindText;
|
||||
Options := [];
|
||||
if Sender is TReplaceDialog then
|
||||
Include(Options, ssoEntireScope);
|
||||
if not (frDown in FindDialogQuery.Options) then
|
||||
Include(Options, ssoBackwards);
|
||||
if frMatchCase in FindDialogQuery.Options then
|
||||
Include(Options, ssoMatchCase);
|
||||
if frWholeWord in FindDialogQuery.Options then
|
||||
Include(Options, ssoWholeWord);
|
||||
if SynMemoQuery.SearchReplace(Search, '', Options) = 0 then
|
||||
begin
|
||||
MessageBeep(MB_ICONASTERISK);
|
||||
Mainform.ShowStatus( 'SearchText ''' + Search + ''' not found!', 0);
|
||||
end;
|
||||
end;
|
||||
|
||||
{ Find Text for replace-dialog }
|
||||
procedure TMDIChild.ReplaceDialogQueryFind(Sender: TObject);
|
||||
begin
|
||||
FindDialogQuery.FindText := ReplaceDialogQuery.FindText;
|
||||
FindDialogQueryFind( ReplaceDialogQuery );
|
||||
end;
|
||||
|
||||
{ Replace Text with replace-dialog }
|
||||
procedure TMDIChild.ReplaceDialogQueryReplace(Sender: TObject);
|
||||
var
|
||||
Options: TSynSearchOptions;
|
||||
Search: String;
|
||||
begin
|
||||
Search := ReplaceDialogQuery.FindText;
|
||||
Options := [ssoEntireScope]; // Do replaces always on entire scope, because the standard-dialog lacks of a down/up-option
|
||||
if frReplaceAll in ReplaceDialogQuery.Options then
|
||||
Include( Options, ssoReplaceAll );
|
||||
if not (frDown in ReplaceDialogQuery.Options) then
|
||||
Include(Options, ssoBackwards);
|
||||
if frMatchCase in ReplaceDialogQuery.Options then
|
||||
Include(Options, ssoMatchCase);
|
||||
if frWholeWord in ReplaceDialogQuery.Options then
|
||||
Include(Options, ssoWholeWord);
|
||||
if frReplace in ReplaceDialogQuery.Options then // Replace instead of ReplaceAll is pressed
|
||||
Include(Options, ssoReplace)
|
||||
else
|
||||
Include(Options, ssoReplaceAll);
|
||||
if SynMemoQuery.SearchReplace( Search, ReplaceDialogQuery.ReplaceText, Options) = 0 then
|
||||
begin
|
||||
MessageBeep(MB_ICONASTERISK);
|
||||
Mainform.ShowStatus( 'SearchText ''' + Search + ''' not found!', 0);
|
||||
if ssoBackwards in Options then
|
||||
SynMemoQuery.BlockEnd := SynMemoQuery.BlockBegin
|
||||
else
|
||||
SynMemoQuery.BlockBegin := SynMemoQuery.BlockEnd;
|
||||
SynMemoQuery.CaretXY := SynMemoQuery.BlockBegin;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMDIChild.Delete1Click(Sender: TObject);
|
||||
begin
|
||||
// Delete record(s)
|
||||
if gridData.SelectedRows.Count = 0 then begin
|
||||
if MessageDLG('Delete 1 Record(s)?', mtConfirmation, [mbOK, mbCancel], 0) = mrOK then
|
||||
GetVisualDataSet().Delete(); // unsafe ...
|
||||
end else
|
||||
if MessageDLG('Delete '+IntToStr(gridData.SelectedRows.count)+' Record(s)?', mtConfirmation, [mbOK, mbCancel], 0) = mrOK then
|
||||
gridData.SelectedRows.Delete;
|
||||
end;
|
||||
|
||||
|
||||
procedure TMDIChild.QuickFilterClick(Sender: TObject);
|
||||
var
|
||||
filter,value,column : String;
|
||||
@ -3682,22 +3379,9 @@ begin
|
||||
end;
|
||||
|
||||
procedure TMDIChild.popupQueryPopup(Sender: TObject);
|
||||
var
|
||||
somechars : Boolean;
|
||||
begin
|
||||
// Sets cursor into memo and activates TAction(s) like paste
|
||||
SynMemoQuery.SetFocus;
|
||||
somechars := SynMemoQuery.GetTextLen > 0;
|
||||
// Inserting file at cursor only makes sense with content
|
||||
MenuInsertFileAtCursor.Enabled := somechars;
|
||||
Menusave.Enabled := somechars;
|
||||
MenuSaveSelectionToFile.Enabled := SynMemoQuery.SelAvail;
|
||||
MenuSaveAsSnippet.Enabled := somechars;
|
||||
MenuSaveSelectionAsSnippet.Enabled := SynMemoQuery.SelAvail;
|
||||
MenuClear.Enabled := somechars;
|
||||
menuSQLHelp.Enabled := (mysql_version >= 40100) and (SynMemoQuery.WordAtCursor <> '');
|
||||
// Insert keyword into menuitem, so it's very clear what the menuitem does
|
||||
menuSQLHelp.Caption := 'Lookup "'+sstr(SynMemoQuery.WordAtCursor,50)+'" in SQL help ...';
|
||||
end;
|
||||
|
||||
procedure TMDIChild.popupResultGridPopup(Sender: TObject);
|
||||
@ -3743,7 +3427,7 @@ var
|
||||
begin
|
||||
// Check for F1-pressed
|
||||
if Key = VK_F1 then
|
||||
CallSQLHelp( self )
|
||||
Mainform.actSQLhelp.Execute
|
||||
|
||||
// Simulate Ctrl+A-behaviour of common editors
|
||||
else if ( Shift = [ssCtrl] ) and ( Key = Ord('A') ) then
|
||||
@ -3938,133 +3622,14 @@ begin
|
||||
L := 0
|
||||
else
|
||||
L := DBtree.GetNodeLevel(DBtree.GetFirstSelected);
|
||||
PopupMenuDropDatabase.Enabled := L = 1;
|
||||
Mainform.actCreateTable.Enabled := L in [1,2];
|
||||
Mainform.actCreateView.Enabled := (L in [1,2]) and (mysql_version >= 50001);
|
||||
menuAlterDatabase.Enabled := (L = 1) and (mysql_version >= 50002);
|
||||
if mysql_version < 50002 then
|
||||
menuAlterDatabase.Hint := STR_NOTSUPPORTED
|
||||
else
|
||||
menuAlterDatabase.Hint := 'Rename and/or modify character set of database';
|
||||
Mainform.actAlterTable.Enabled := (L = 2) and (GetSelectedNodeType = NODETYPE_TABLE);
|
||||
Mainform.actEditTableProperties.Enabled := (L = 2) and (GetSelectedNodeType = NODETYPE_TABLE);
|
||||
Mainform.actEditView.Enabled := (L = 2) and (GetSelectedNodeType = NODETYPE_VIEW);
|
||||
MainForm.actDropTablesAndViews.Enabled := (L = 2);
|
||||
end;
|
||||
|
||||
|
||||
procedure TMDIChild.btnQuerySaveSnippetClick(Sender: TObject);
|
||||
var
|
||||
snippetname : String;
|
||||
mayChange : Boolean;
|
||||
begin
|
||||
// Save snippet
|
||||
if InputQuery( 'Save snippet', 'Snippet name:', snippetname) then
|
||||
begin
|
||||
if Copy( snippetname, Length(snippetname)-4, 4 ) <> '.sql' then
|
||||
snippetname := snippetname + '.sql';
|
||||
// cleanup snippetname from special characters
|
||||
snippetname := DIRNAME_SNIPPETS + goodfilename(snippetname);
|
||||
if FileExists( snippetname ) then
|
||||
begin
|
||||
if MessageDlg( 'Overwrite existing snippet '+snippetname+'?', mtConfirmation, [mbOK, mbCancel], 0 ) <> mrOK then
|
||||
exit;
|
||||
end;
|
||||
Screen.Cursor := crHourglass;
|
||||
// Save complete content or just the selected text,
|
||||
// depending on the tag of calling control
|
||||
case (Sender as TComponent).Tag of
|
||||
0: SaveUnicodeFile(snippetname, SynMemoQuery.Text);
|
||||
1: SaveUnicodeFile(snippetname, SynMemoQuery.SelText);
|
||||
end;
|
||||
FillPopupQueryLoad;
|
||||
if tabsetQueryHelpers.TabIndex = 3 then begin
|
||||
// SQL Snippets selected in query helper, refresh list
|
||||
mayChange := True; // Unused; satisfies callee parameter collection which is probably dictated by tabset.
|
||||
tabsetQueryHelpersChange(Sender, 3, mayChange);
|
||||
end;
|
||||
Screen.Cursor := crDefault;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMDIChild.CallSQLHelp(Sender: TObject);
|
||||
var
|
||||
keyword : String;
|
||||
begin
|
||||
// Call SQL Help from various places
|
||||
if mysql_version < 40100 then
|
||||
exit;
|
||||
|
||||
keyword := '';
|
||||
// Query-Tab
|
||||
if SynMemoQuery.Focused then
|
||||
keyword := SynMemoQuery.WordAtCursor
|
||||
// LogSQL-Tab
|
||||
else if SynMemoSQLLog.Focused then
|
||||
keyword := SynMemoSQLLog.WordAtCursor
|
||||
// Filter-Tab
|
||||
else if SynMemoFilter.Focused then
|
||||
keyword := SynMemoFilter.WordAtCursor
|
||||
// Data-Tab
|
||||
else if (PageControlMain.ActivePage = tabData)
|
||||
and (-1 < gridData.SelectedField.Index)
|
||||
and (gridData.SelectedField.Index <= Length(VTRowDataListColumns)) then
|
||||
begin
|
||||
keyword := VTRowDataListColumns[gridData.SelectedField.Index].Captions[1];
|
||||
end
|
||||
// Table-Tab
|
||||
else if ListColumns.Focused and Assigned(ListColumns.FocusedNode) then
|
||||
begin
|
||||
keyword := ListColumns.Text[ListColumns.FocusedNode, 1];
|
||||
end
|
||||
else if lboxQueryHelpers.Focused then
|
||||
begin
|
||||
// Makes only sense if one of the tabs "SQL fn" or "SQL kw" was selected
|
||||
if tabsetQueryHelpers.TabIndex in [1,2] then
|
||||
begin
|
||||
keyword := lboxQueryHelpers.Items[lboxQueryHelpers.ItemIndex];
|
||||
end;
|
||||
end;
|
||||
|
||||
// Clean existing paranthesis, fx: char(64)
|
||||
if Pos( '(', keyword ) > 0 then
|
||||
begin
|
||||
keyword := Copy( keyword, 1, Pos( '(', keyword )-1 );
|
||||
end;
|
||||
|
||||
// Show the window
|
||||
CallSQLHelpWithKeyword( keyword );
|
||||
end;
|
||||
|
||||
|
||||
|
||||
{***
|
||||
Show SQL Help window directly using a keyword
|
||||
@param String SQL-keyword
|
||||
@see FieldeditForm.btnDatatypeHelp
|
||||
}
|
||||
procedure TMDIChild.CallSQLHelpWithKeyword( keyword: String );
|
||||
begin
|
||||
// Set help-keyword and show window
|
||||
SQLhelpWindow(self, keyword);
|
||||
end;
|
||||
|
||||
procedure TMDIChild.btnQuerySaveClick(Sender: TObject);
|
||||
begin
|
||||
// Save SQL
|
||||
if SaveDialogSQLFile.Execute then
|
||||
begin
|
||||
Screen.Cursor := crHourGlass;
|
||||
// Save complete content or just the selected text,
|
||||
// depending on the tag of calling control
|
||||
case (Sender as TComponent).Tag of
|
||||
0: SaveUnicodeFile( SaveDialogSQLFile.FileName, SynMemoQuery.Text );
|
||||
1: SaveUnicodeFile( SaveDialogSQLFile.FileName, SynMemoQuery.SelText );
|
||||
end;
|
||||
Screen.Cursor := crDefault;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure TMDIChild.popupQueryLoadClick( sender: TObject );
|
||||
var
|
||||
filename : String;
|
||||
@ -4086,28 +3651,6 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
procedure TMDIChild.btnQueryLoadClick(Sender: TObject);
|
||||
begin
|
||||
// Click on the btnQueryLoad
|
||||
if OpenDialogSQLfile.Execute then
|
||||
begin
|
||||
QueryLoad( OpenDialogSQLfile.FileName );
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
{**
|
||||
Insert SQL file at cursor
|
||||
}
|
||||
procedure TMDIChild.menuInsertFileAtCursorClick(Sender: TObject);
|
||||
begin
|
||||
if OpenDialogSQLfile.Execute then
|
||||
begin
|
||||
QueryLoad( OpenDialogSQLfile.FileName, False );
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure TMDIChild.AddOrRemoveFromQueryLoadHistory( filename: String; AddIt: Boolean = true; CheckIfFileExists: Boolean = true );
|
||||
var
|
||||
i : Integer;
|
||||
@ -4312,12 +3855,6 @@ begin
|
||||
SynMemoFilter.Text := ComboBoxWhereFilters.Items[ComboBoxWhereFilters.ItemIndex];
|
||||
end;
|
||||
|
||||
procedure TMDIChild.btnQueryStopOnErrorsClick(Sender: TObject);
|
||||
begin
|
||||
StopOnErrors := not StopOnErrors;
|
||||
btnQueryStopOnErrors.Down := StopOnErrors;
|
||||
end;
|
||||
|
||||
procedure TMDIChild.btnUnsafeEditClick(Sender: TObject);
|
||||
var
|
||||
confirmed: Boolean;
|
||||
@ -5747,28 +5284,6 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
{**
|
||||
Call context sensitive help from popupmenu (fx popupQuery)
|
||||
}
|
||||
procedure TMDIChild.menuSQLhelpClick(Sender: TObject);
|
||||
begin
|
||||
CallSQLHelp( Sender );
|
||||
end;
|
||||
|
||||
|
||||
{**
|
||||
Modify existing database properties
|
||||
}
|
||||
procedure TMDIChild.menuAlterdatabaseClick(Sender: TObject);
|
||||
begin
|
||||
if CreateDatabaseForm = nil then
|
||||
CreateDatabaseForm := TCreateDatabaseForm.Create(Self);
|
||||
|
||||
CreateDatabaseForm.modifyDB := ActiveDatabase;
|
||||
CreateDatabaseForm.ShowModal;
|
||||
end;
|
||||
|
||||
|
||||
{***
|
||||
Add a new query delimiter and select it
|
||||
@param term The delimiter to add and/or select
|
||||
@ -5859,7 +5374,7 @@ begin
|
||||
if ( command = 'CLIENTSQL_ERROR' ) then
|
||||
begin
|
||||
LogSQL( parameter, True );
|
||||
if ( StopOnErrors ) then
|
||||
if Mainform.actQueryStopOnErrors.Checked then
|
||||
raise Exception.Create( parameter );
|
||||
end;
|
||||
end;
|
||||
@ -6047,16 +5562,13 @@ end;
|
||||
}
|
||||
procedure TMDIChild.popupFilterPopup(Sender: TObject);
|
||||
var
|
||||
somechars : Boolean;
|
||||
somechars: Boolean;
|
||||
begin
|
||||
// Sets cursor into memo and activates TAction(s) like paste
|
||||
SynMemoFilter.SetFocus;
|
||||
somechars := SynMemoFilter.GetTextLen > 0;
|
||||
// Inserting file at cursor only makes sense with content
|
||||
MenuFilterClear.Enabled := somechars;
|
||||
menuFilterSQLHelp.Enabled := (mysql_version >= 40100) and (SynMemoFilter.WordAtCursor <> '');
|
||||
// Insert keyword into menuitem, so it's very clear what the menuitem does
|
||||
menuFilterSQLHelp.Caption := 'Lookup "'+sstr(SynMemoFilter.WordAtCursor,50)+'" in SQL help ...';
|
||||
Mainform.actClearFilterEditor.Enabled := somechars;
|
||||
end;
|
||||
|
||||
|
||||
@ -6477,16 +5989,6 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
{**
|
||||
Toggle wordwrap mode in query editor
|
||||
}
|
||||
procedure TMDIChild.btnQueryWordWrapClick(Sender: TObject);
|
||||
begin
|
||||
SynMemoQuery.WordWrap := not SynMemoQuery.WordWrap;
|
||||
btnQueryWordWrap.Down := SynMemoQuery.WordWrap;
|
||||
end;
|
||||
|
||||
|
||||
{**
|
||||
One or more files from explorer or somewhere else were dropped onto the
|
||||
filter editor - load the contents of the first file
|
||||
@ -6928,5 +6430,9 @@ begin
|
||||
Result := CachedTableLists.IndexOf(db) > -1;
|
||||
end;
|
||||
|
||||
procedure TMDIChild.ListColumnsDblClick(Sender: TObject);
|
||||
begin
|
||||
Mainform.actEditField.Execute;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
@ -1012,7 +1012,7 @@ end;
|
||||
}
|
||||
procedure TFieldEditForm.btnDatatypeHelpClick(Sender: TObject);
|
||||
begin
|
||||
Mainform.ChildWin.CallSQLHelpWithKeyword(ComboBoxType.Text);
|
||||
Mainform.CallSQLHelpWithKeyword(ComboBoxType.Text);
|
||||
end;
|
||||
|
||||
|
||||
|
591
source/main.dfm
591
source/main.dfm
File diff suppressed because it is too large
Load Diff
707
source/main.pas
707
source/main.pas
@ -35,11 +35,11 @@ type
|
||||
PasteItem: TMenuItem;
|
||||
StatusBar: TStatusBar;
|
||||
ActionList1: TActionList;
|
||||
EditCopy1: TEditCopy;
|
||||
EditPaste1: TEditPaste;
|
||||
FileNew1: TAction;
|
||||
FileExit1: TAction;
|
||||
FileClose1: TWindowClose;
|
||||
actCopy: TEditCopy;
|
||||
actPaste: TEditPaste;
|
||||
actOpenSession: TAction;
|
||||
actExitApplication: TAction;
|
||||
actCloseSession: TWindowClose;
|
||||
Extra1: TMenuItem;
|
||||
FlushUserPrivileges1: TMenuItem;
|
||||
MenuCopyCSV: TMenuItem;
|
||||
@ -51,7 +51,6 @@ type
|
||||
N4: TMenuItem;
|
||||
MenuDropDatabase: TMenuItem;
|
||||
MenuDropTable: TMenuItem;
|
||||
ResetWindowOptions1: TMenuItem;
|
||||
N5: TMenuItem;
|
||||
MenuImportTextFile: TMenuItem;
|
||||
Flush1: TMenuItem;
|
||||
@ -65,14 +64,14 @@ type
|
||||
MenuPreferences: TMenuItem;
|
||||
N7: TMenuItem;
|
||||
menuReadme: TMenuItem;
|
||||
UserManager: TAction;
|
||||
ShowAboutBox: TAction;
|
||||
actUserManager: TAction;
|
||||
actAboutBox: TAction;
|
||||
actMaintenance: TAction;
|
||||
menuMaintenance: TMenuItem;
|
||||
ImExport1: TMenuItem;
|
||||
CopyContentsasHTMLTable1: TMenuItem;
|
||||
CopyHTMLtable: TAction;
|
||||
Copy2CSV: TAction;
|
||||
actCopyAsHTML: TAction;
|
||||
actCopyAsCSV: TAction;
|
||||
menuWebsite: TMenuItem;
|
||||
N9: TMenuItem;
|
||||
N11: TMenuItem;
|
||||
@ -102,27 +101,27 @@ type
|
||||
ButtonOK: TButton;
|
||||
UpDownLimitStart: TUpDown;
|
||||
UpDownLimitEnd: TUpDown;
|
||||
EditUndo1: TEditUndo;
|
||||
actUndo: TEditUndo;
|
||||
ToolButton14: TToolButton;
|
||||
ExecuteQuery: TAction;
|
||||
ExecuteSelection: TAction;
|
||||
actExecuteQuery: TAction;
|
||||
actExecuteSelection: TAction;
|
||||
SaveDialog2: TSaveDialog;
|
||||
ExportSettings1: TMenuItem;
|
||||
Importsettings1: TMenuItem;
|
||||
OpenDialog2: TOpenDialog;
|
||||
menuSupportForum: TMenuItem;
|
||||
Copy2XML: TAction;
|
||||
ExportData: TAction;
|
||||
actCopyAsXML: TAction;
|
||||
actExportData: TAction;
|
||||
Exportdata1: TMenuItem;
|
||||
CopyasXMLdata1: TMenuItem;
|
||||
ExecuteLine: TAction;
|
||||
HTMLview: TAction;
|
||||
actExecuteLine: TAction;
|
||||
actHTMLview: TAction;
|
||||
actInsertFiles: TAction;
|
||||
InsertfilesintoBLOBfields1: TMenuItem;
|
||||
actExportTables: TAction;
|
||||
DataSearch: TAction;
|
||||
actDataSearch: TAction;
|
||||
actDropTablesAndViews: TAction;
|
||||
LoadSQL: TAction;
|
||||
actLoadSQL: TAction;
|
||||
ImportSQL1: TMenuItem;
|
||||
menuConnections: TPopupMenu;
|
||||
miNewConnection: TMenuItem;
|
||||
@ -165,70 +164,121 @@ type
|
||||
btnTableManageIndexes: TToolButton;
|
||||
actCreateTable: TAction;
|
||||
actEmptyTables: TAction;
|
||||
actTableProperties: TAction;
|
||||
actAlterTable: TAction;
|
||||
procedure actAlterTableExecute(Sender: TObject);
|
||||
actEditTableFields: TAction;
|
||||
actEditTableProperties: TAction;
|
||||
actEditField: TAction;
|
||||
actCreateField: TAction;
|
||||
actDropFields: TAction;
|
||||
actEditIndexes: TAction;
|
||||
actDropDatabase: TAction;
|
||||
actCreateDatabase: TAction;
|
||||
actEditDatabase: TAction;
|
||||
actSQLhelp: TAction;
|
||||
actRefresh: TAction;
|
||||
actImportCSV: TAction;
|
||||
actCut: TEditCut;
|
||||
actSelectAll: TEditSelectAll;
|
||||
Cut1: TMenuItem;
|
||||
actExportSettings: TAction;
|
||||
actImportSettings: TAction;
|
||||
actPreferences: TAction;
|
||||
actFlushHosts: TAction;
|
||||
actFlushLogs: TAction;
|
||||
actFlushPrivileges: TAction;
|
||||
actFlushTables: TAction;
|
||||
actFlushTableswithreadlock: TAction;
|
||||
actFlushStatus: TAction;
|
||||
actUpdateCheck: TAction;
|
||||
actWebMainsite: TAction;
|
||||
actWebDownloadpage: TAction;
|
||||
actWebForum: TAction;
|
||||
actWebBugtracker: TAction;
|
||||
actWebFeaturetracker: TAction;
|
||||
actReadme: TAction;
|
||||
actSaveSQL: TAction;
|
||||
actSaveSQLselection: TAction;
|
||||
actSaveSQLSnippet: TAction;
|
||||
actSaveSQLSelectionSnippet: TAction;
|
||||
actClearQueryEditor: TAction;
|
||||
actClearFilterEditor: TAction;
|
||||
actQueryStopOnErrors: TAction;
|
||||
actQueryWordWrap: TAction;
|
||||
actQueryFind: TAction;
|
||||
actQueryReplace: TAction;
|
||||
FindDialogQuery: TFindDialog;
|
||||
ReplaceDialogQuery: TReplaceDialog;
|
||||
procedure actCreateFieldExecute(Sender: TObject);
|
||||
procedure actEditTablePropertiesExecute(Sender: TObject);
|
||||
procedure actCreateTableExecute(Sender: TObject);
|
||||
procedure actCreateViewExecute(Sender: TObject);
|
||||
procedure btnSQLHelpClick(Sender: TObject);
|
||||
procedure menuWindowClick(Sender: TObject);
|
||||
procedure focusWindow(Sender: TObject);
|
||||
procedure menuConnectionsPopup(Sender: TObject);
|
||||
procedure ShowConnections(Sender: TObject);
|
||||
procedure FileExit1Execute(Sender: TObject);
|
||||
procedure FlushClick(Sender: TObject);
|
||||
procedure actExitApplicationExecute(Sender: TObject);
|
||||
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure FormShow(Sender: TObject);
|
||||
procedure ButtonRefreshClick(Sender: TObject);
|
||||
procedure ButtonCreateDatabaseClick(Sender: TObject);
|
||||
procedure ButtonDropDatabaseClick(Sender: TObject);
|
||||
procedure ResetWindowOptions1Click(Sender: TObject);
|
||||
procedure ButtonImportTextfileClick(Sender: TObject);
|
||||
procedure MenuPreferencesClick(Sender: TObject);
|
||||
procedure menuReadmeClick(Sender: TObject);
|
||||
procedure FormResize(Sender: TObject);
|
||||
procedure UserManagerExecute(Sender: TObject);
|
||||
procedure ShowAboutBoxExecute(Sender: TObject);
|
||||
procedure actUserManagerExecute(Sender: TObject);
|
||||
procedure actAboutBoxExecute(Sender: TObject);
|
||||
procedure actClearEditorExecute(Sender: TObject);
|
||||
procedure actMaintenanceExecute(Sender: TObject);
|
||||
procedure actEditViewExecute(Sender: TObject);
|
||||
procedure CopyHTMLtableExecute(Sender: TObject);
|
||||
procedure Copy2CSVExecute(Sender: TObject);
|
||||
procedure actCopyAsHTMLExecute(Sender: TObject);
|
||||
procedure actCopyAsCSVExecute(Sender: TObject);
|
||||
procedure actPrintListExecute(Sender: TObject);
|
||||
procedure actCopyTableExecute(Sender: TObject);
|
||||
procedure showstatus(msg: string=''; panel: Integer=4);
|
||||
procedure ButtonOKClick(Sender: TObject);
|
||||
procedure LimitPanelEnter(Sender: TObject);
|
||||
procedure LimitPanelExit(Sender: TObject);
|
||||
procedure OpenURL(Sender: TObject);
|
||||
function mask(str: String) : String;
|
||||
procedure ExportSettings1Click(Sender: TObject);
|
||||
procedure Importsettings1Click(Sender: TObject);
|
||||
procedure ExecuteQueryExecute(Sender: TObject);
|
||||
procedure ExecuteSelectionExecute(Sender: TObject);
|
||||
procedure Copy2XMLExecute(Sender: TObject);
|
||||
procedure ExportDataExecute(Sender: TObject);
|
||||
procedure ExecuteLineExecute(Sender: TObject);
|
||||
procedure HTMLviewExecute(Sender: TObject);
|
||||
procedure actExecuteQueryExecute(Sender: TObject);
|
||||
procedure actExecuteSelectionExecute(Sender: TObject);
|
||||
procedure actCopyAsXMLExecute(Sender: TObject);
|
||||
procedure actCreateDatabaseExecute(Sender: TObject);
|
||||
procedure actExportDataExecute(Sender: TObject);
|
||||
procedure actExecuteLineExecute(Sender: TObject);
|
||||
procedure actHTMLviewExecute(Sender: TObject);
|
||||
procedure actInsertFilesExecute(Sender: TObject);
|
||||
procedure actExportTablesExecute(Sender: TObject);
|
||||
procedure DataSearchExecute(Sender: TObject);
|
||||
procedure actDataSearchExecute(Sender: TObject);
|
||||
procedure actDataSetDeleteExecute(Sender: TObject);
|
||||
procedure btnTableAddFieldClick(Sender: TObject);
|
||||
procedure btnTableEditFieldClick(Sender: TObject);
|
||||
procedure actDropDatabaseExecute(Sender: TObject);
|
||||
procedure actDropFieldsExecute(Sender: TObject);
|
||||
procedure actDropTablesAndViewsExecute(Sender: TObject);
|
||||
procedure actEditDatabaseExecute(Sender: TObject);
|
||||
procedure actEditIndexesExecute(Sender: TObject);
|
||||
procedure actEmptyTablesExecute(Sender: TObject);
|
||||
procedure actTablePropertiesExecute(Sender: TObject);
|
||||
procedure LoadSQLExecute(Sender: TObject);
|
||||
procedure actEditFieldExecute(Sender: TObject);
|
||||
procedure actEditTableFieldsExecute(Sender: TObject);
|
||||
procedure actExportSettingsExecute(Sender: TObject);
|
||||
procedure actFlushExecute(Sender: TObject);
|
||||
procedure actImportCSVExecute(Sender: TObject);
|
||||
procedure actImportSettingsExecute(Sender: TObject);
|
||||
procedure actLoadSQLExecute(Sender: TObject);
|
||||
procedure actOpenSessionExecute(Sender: TObject);
|
||||
procedure actPreferencesExecute(Sender: TObject);
|
||||
procedure actQueryFindExecute(Sender: TObject);
|
||||
procedure actQueryReplaceExecute(Sender: TObject);
|
||||
procedure actQueryStopOnErrorsExecute(Sender: TObject);
|
||||
procedure actQueryWordWrapExecute(Sender: TObject);
|
||||
procedure actReadmeExecute(Sender: TObject);
|
||||
procedure actRefreshExecute(Sender: TObject);
|
||||
procedure actSaveSQLExecute(Sender: TObject);
|
||||
procedure actSaveSQLSnippetExecute(Sender: TObject);
|
||||
procedure actSQLhelpExecute(Sender: TObject);
|
||||
procedure actUpdateCheckExecute(Sender: TObject);
|
||||
procedure actWebbrowse(Sender: TObject);
|
||||
procedure EnsureConnected;
|
||||
function ExecuteRemoteQuery(sender: THandle; query: string): TDataSet;
|
||||
procedure ExecuteRemoteNonQuery(sender: THandle; query: string);
|
||||
procedure FindDialogQueryFind(Sender: TObject);
|
||||
procedure HandleWMComplete(var msg: TMessage); message WM_COMPLETED;
|
||||
procedure HandleWMCopyData(var msg: TWMCopyData); message WM_COPYDATA;
|
||||
procedure HandleWMProcessLog(var msg: TMessage); message WM_PROCESSLOG;
|
||||
procedure menuUpdateCheckClick(Sender: TObject);
|
||||
procedure btnTableDropFieldClick(Sender: TObject);
|
||||
procedure btnTableManageIndexesClick(Sender: TObject);
|
||||
procedure ReplaceDialogQueryFind(Sender: TObject);
|
||||
procedure ReplaceDialogQueryReplace(Sender: TObject);
|
||||
private
|
||||
regMain : TRegistry;
|
||||
function GetChildwin: TMDIChild;
|
||||
@ -240,6 +290,7 @@ type
|
||||
UserManagerForm: TUserManagerForm;
|
||||
SelectDBObjectForm: TfrmSelectDBObject;
|
||||
procedure OpenRegistry(Session: String = '');
|
||||
procedure CallSQLHelpWithKeyword( keyword: String );
|
||||
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: String; Session: String = '' ) : String; Overload;
|
||||
@ -295,19 +346,11 @@ uses
|
||||
MysqlConn,
|
||||
UpdateCheck,
|
||||
fieldeditor,
|
||||
createdatabase,
|
||||
createtable;
|
||||
|
||||
{$R *.DFM}
|
||||
|
||||
procedure TMainForm.ShowConnections(Sender: TObject);
|
||||
begin
|
||||
if ActiveMDIChild = nil then
|
||||
ConnectionWindow(Self)
|
||||
else begin
|
||||
debug('perf: new connection clicked.');
|
||||
ShellExec( ExtractFileName(paramstr(0)), ExtractFilePath(paramstr(0)) );
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMainForm.HandleWMComplete(var msg: TMessage);
|
||||
begin
|
||||
@ -358,22 +401,19 @@ begin
|
||||
StatusBar.Repaint;
|
||||
end;
|
||||
|
||||
procedure TMainForm.FileExit1Execute(Sender: TObject);
|
||||
procedure TMainForm.actExitApplicationExecute(Sender: TObject);
|
||||
begin
|
||||
Close;
|
||||
end;
|
||||
|
||||
procedure TMainForm.FlushClick(Sender: TObject);
|
||||
procedure TMainForm.actFlushExecute(Sender: TObject);
|
||||
var
|
||||
flushwhat : String;
|
||||
flushwhat: String;
|
||||
begin
|
||||
if sender is TMenuItem then
|
||||
flushwhat := UpperCase((sender as TMenuItem).Caption)
|
||||
else if sender is TToolButton then
|
||||
flushwhat := 'PRIVILEGES';
|
||||
flushwhat := UpperCase(TAction(Sender).Caption);
|
||||
delete(flushwhat, pos('&', flushwhat), 1);
|
||||
ChildWin.ExecUpdateQuery('FLUSH ' + flushwhat);
|
||||
if sender = MenuFlushTableswithreadlock then begin
|
||||
if Sender = actFlushTableswithreadlock then begin
|
||||
MessageDlg(
|
||||
'Tables have been flushed and read lock acquired.'#10 +
|
||||
'Perform backup or snapshot of table data files now.'#10 +
|
||||
@ -611,95 +651,61 @@ begin
|
||||
end;
|
||||
end else
|
||||
// Cannot be done in OnCreate because we need ready forms here:
|
||||
ShowConnections(self);
|
||||
actOpenSession.Execute;
|
||||
end;
|
||||
|
||||
|
||||
procedure TMainForm.ButtonRefreshClick(Sender: TObject);
|
||||
begin
|
||||
// Refresh
|
||||
// Force data tab update when appropriate.
|
||||
Childwin.dataselected := false;
|
||||
if ChildWin.PageControlMain.ActivePage = ChildWin.tabHost then
|
||||
ChildWin.ShowVariablesAndProcesses(self)
|
||||
else if ChildWin.PageControlMain.ActivePage = ChildWin.tabDatabase then
|
||||
ChildWin.MenuRefreshClick(self)
|
||||
else if ChildWin.PageControlMain.ActivePage = ChildWin.tabTable then
|
||||
ChildWin.ShowTableProperties(ChildWin.SelectedTable)
|
||||
else if ChildWin.PageControlMain.ActivePage = ChildWin.tabData then
|
||||
ChildWin.viewdata(Sender)
|
||||
else
|
||||
ChildWin.RefreshTree(True);
|
||||
end;
|
||||
|
||||
procedure TMainForm.ButtonCreateDatabaseClick(Sender: TObject);
|
||||
begin
|
||||
// create database
|
||||
ChildWin.CreateDatabase(self);
|
||||
end;
|
||||
|
||||
procedure TMainForm.ButtonDropDatabaseClick(Sender: TObject);
|
||||
begin
|
||||
// drop db
|
||||
if ChildWin.ActiveDatabase <> '' then
|
||||
ChildWin.DropDB(self);
|
||||
end;
|
||||
|
||||
procedure TMainForm.btnSQLHelpClick(Sender: TObject);
|
||||
begin
|
||||
// SQL help
|
||||
ChildWin.CallSQLHelp( Sender );
|
||||
end;
|
||||
|
||||
|
||||
procedure TMainForm.ResetWindowOptions1Click(Sender: TObject);
|
||||
procedure TMainForm.actCreateDatabaseExecute(Sender: TObject);
|
||||
var
|
||||
reg : TRegistry;
|
||||
newdb: String;
|
||||
begin
|
||||
// reset all options for window-size, height ...
|
||||
// Create database:
|
||||
// Create modal form once on demand
|
||||
if Childwin.CreateDatabaseForm = nil then
|
||||
Childwin.CreateDatabaseForm := TCreateDatabaseForm.Create(Self);
|
||||
|
||||
if ActiveMDIChild <> nil then
|
||||
// Rely on the modalresult being set correctly
|
||||
if Childwin.CreateDatabaseForm.ShowModal = mrOK then
|
||||
begin
|
||||
MessageDlg('Close all open windows before you do this.', mtError, [mbok], 0);
|
||||
exit;
|
||||
end;
|
||||
|
||||
reg := TRegistry.Create;
|
||||
with reg do
|
||||
begin
|
||||
Access := KEY_ALL_ACCESS;
|
||||
if OpenKey(REGPATH, false) then
|
||||
newdb := Childwin.CreateDatabaseForm.editDBName.Text;
|
||||
// Add DB to OnlyDBs-regkey if this is not empty
|
||||
if Childwin.DatabasesWanted.Count > 0 then
|
||||
begin
|
||||
DeleteValue(REGNAME_CHILDWINSTATE);
|
||||
DeleteValue(REGNAME_CHILDWINLEFT);
|
||||
DeleteValue(REGNAME_CHILDWINTOP);
|
||||
DeleteValue(REGNAME_CHILDWINWIDTH);
|
||||
DeleteValue(REGNAME_CHILDWINHEIGHT);
|
||||
DeleteValue(REGNAME_QUERYMEMOHEIGHT);
|
||||
DeleteValue(REGNAME_DBTREEWIDTH);
|
||||
DeleteValue(REGNAME_SQLOUTHEIGHT);
|
||||
|
||||
CloseKey;
|
||||
MessageDlg('All Window-Settings were reset to default values.', mtInformation, [mbok], 0);
|
||||
Childwin.DatabasesWanted.Add( newdb );
|
||||
with TRegistry.Create do
|
||||
begin
|
||||
if OpenKey(REGPATH + REGKEY_SESSIONS + Childwin.Conn.Description, false) then
|
||||
begin
|
||||
WriteString( 'OnlyDBs', ImplodeStr( ';', Childwin.DatabasesWanted ) );
|
||||
CloseKey;
|
||||
end;
|
||||
Free;
|
||||
end;
|
||||
end;
|
||||
Free;
|
||||
// reload db nodes and switch to new one
|
||||
Childwin.RefreshTree(False, newdb);
|
||||
end;
|
||||
|
||||
end;
|
||||
|
||||
procedure TMainForm.ButtonImportTextfileClick(Sender: TObject);
|
||||
|
||||
procedure TMainForm.actImportCSVExecute(Sender: TObject);
|
||||
begin
|
||||
// Import Textfile
|
||||
loaddataWindow(self);
|
||||
end;
|
||||
|
||||
procedure TMainForm.MenuPreferencesClick(Sender: TObject);
|
||||
procedure TMainForm.actPreferencesExecute(Sender: TObject);
|
||||
var
|
||||
f: Toptionsform;
|
||||
begin
|
||||
// Preferences
|
||||
OptionsWindow (Self);
|
||||
f := Toptionsform.Create(Self);
|
||||
f.ShowModal;
|
||||
FreeAndNil(f);
|
||||
end;
|
||||
|
||||
procedure TMainForm.menuReadmeClick(Sender: TObject);
|
||||
procedure TMainForm.actReadmeExecute(Sender: TObject);
|
||||
begin
|
||||
// show readme.txt
|
||||
ShellExec( 'readme.txt', ExtractFilePath(paramstr(0)) );
|
||||
@ -715,7 +721,7 @@ begin
|
||||
StatusBar.Panels[0].Width := Statusbar.Width - room;
|
||||
end;
|
||||
|
||||
procedure TMainForm.UserManagerExecute(Sender: TObject);
|
||||
procedure TMainForm.actUserManagerExecute(Sender: TObject);
|
||||
begin
|
||||
if UserManagerForm = nil then
|
||||
UserManagerForm := TUserManagerForm.Create(Self);
|
||||
@ -759,12 +765,26 @@ begin
|
||||
menuWindow.Delete(0);
|
||||
end;
|
||||
|
||||
procedure TMainForm.ShowAboutBoxExecute(Sender: TObject);
|
||||
procedure TMainForm.actAboutBoxExecute(Sender: TObject);
|
||||
begin
|
||||
// Info-Box
|
||||
AboutWindow (Self);
|
||||
end;
|
||||
|
||||
procedure TMainForm.actClearEditorExecute(Sender: TObject);
|
||||
var
|
||||
m: TSynMemo;
|
||||
begin
|
||||
if Sender = actClearQueryEditor then
|
||||
m := Childwin.SynMemoQuery
|
||||
else
|
||||
m := Childwin.SynMemoFilter;
|
||||
m.SelectAll;
|
||||
m.SelText := '';
|
||||
m.SelStart := 0;
|
||||
m.SelEnd := 0;
|
||||
end;
|
||||
|
||||
procedure TMainForm.actMaintenanceExecute(Sender: TObject);
|
||||
begin
|
||||
// optimize / repair... tables
|
||||
@ -815,7 +835,7 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
procedure TMainForm.Copy2CSVExecute(Sender: TObject);
|
||||
procedure TMainForm.actCopyAsCSVExecute(Sender: TObject);
|
||||
begin
|
||||
// Copy data in actual dataset as CSV
|
||||
if ChildWin.PageControlMain.ActivePage = ChildWin.tabData then
|
||||
@ -825,7 +845,7 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
procedure TMainForm.CopyHTMLtableExecute(Sender: TObject);
|
||||
procedure TMainForm.actCopyAsHTMLExecute(Sender: TObject);
|
||||
begin
|
||||
// Copy data in actual dataset as HTML
|
||||
if ChildWin.PageControlMain.ActivePage = ChildWin.tabData then
|
||||
@ -933,13 +953,11 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
procedure TMainForm.OpenURL(Sender: TObject);
|
||||
|
||||
procedure TMainForm.actWebbrowse(Sender: TObject);
|
||||
begin
|
||||
// open url (hint)
|
||||
if sender is TMenuItem then
|
||||
ShellExec( TMenuItem(Sender).Hint )
|
||||
else
|
||||
ShellExec( TControl(Sender).Hint );
|
||||
// Browse to URL (hint)
|
||||
ShellExec( TAction(Sender).Hint );
|
||||
end;
|
||||
|
||||
|
||||
@ -952,7 +970,7 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
procedure TMainForm.ExportSettings1Click(Sender: TObject);
|
||||
procedure TMainForm.actExportSettingsExecute(Sender: TObject);
|
||||
begin
|
||||
// Export settings to .reg-file
|
||||
if SaveDialog2.Execute then begin
|
||||
@ -961,7 +979,7 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMainForm.Importsettings1Click(Sender: TObject);
|
||||
procedure TMainForm.actImportSettingsExecute(Sender: TObject);
|
||||
begin
|
||||
// Import settings from .reg-file
|
||||
if OpenDialog2.Execute then begin
|
||||
@ -970,22 +988,22 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMainForm.ExecuteQueryExecute(Sender: TObject);
|
||||
procedure TMainForm.actExecuteQueryExecute(Sender: TObject);
|
||||
begin
|
||||
ChildWin.ExecSqlClick(sender, false);
|
||||
end;
|
||||
|
||||
procedure TMainForm.ExecuteSelectionExecute(Sender: TObject);
|
||||
procedure TMainForm.actExecuteSelectionExecute(Sender: TObject);
|
||||
begin
|
||||
ChildWin.ExecSqlClick(sender, true);
|
||||
end;
|
||||
|
||||
procedure TMainForm.ExecuteLineExecute(Sender: TObject);
|
||||
procedure TMainForm.actExecuteLineExecute(Sender: TObject);
|
||||
begin
|
||||
ChildWin.ExecSqlClick(sender, false, true);
|
||||
end;
|
||||
|
||||
procedure TMainForm.Copy2XMLExecute(Sender: TObject);
|
||||
procedure TMainForm.actCopyAsXMLExecute(Sender: TObject);
|
||||
begin
|
||||
// Copy data in actual dataset as XML
|
||||
if ChildWin.PageControlMain.ActivePage = ChildWin.tabData then
|
||||
@ -994,7 +1012,8 @@ begin
|
||||
dataset2xml(ChildWin.GetVisualDataset(), 'SQL-query');
|
||||
end;
|
||||
|
||||
procedure TMainForm.ExportDataExecute(Sender: TObject);
|
||||
|
||||
procedure TMainForm.actExportDataExecute(Sender: TObject);
|
||||
var
|
||||
query : TDataSet;
|
||||
begin
|
||||
@ -1047,7 +1066,7 @@ end;
|
||||
|
||||
|
||||
// view HTML
|
||||
procedure TMainForm.HTMLviewExecute(Sender: TObject);
|
||||
procedure TMainForm.actHTMLviewExecute(Sender: TObject);
|
||||
var
|
||||
g : TTntDBGrid;
|
||||
filename,extension : String;
|
||||
@ -1093,7 +1112,7 @@ begin
|
||||
ExportTablesWindow (Self);
|
||||
end;
|
||||
|
||||
procedure TMainForm.DataSearchExecute(Sender: TObject);
|
||||
procedure TMainForm.actDataSearchExecute(Sender: TObject);
|
||||
begin
|
||||
with ChildWin.EditDataSearch do
|
||||
begin
|
||||
@ -1175,10 +1194,11 @@ end;
|
||||
|
||||
|
||||
// Load SQL-file, make sure that SheetQuery is activated
|
||||
procedure TMainForm.LoadSQLExecute(Sender: TObject);
|
||||
procedure TMainForm.actLoadSQLExecute(Sender: TObject);
|
||||
begin
|
||||
ChildWin.PageControlMain.ActivePage := ChildWin.tabQuery;
|
||||
ChildWin.btnQueryLoadClick( sender );
|
||||
if ChildWin.OpenDialogSQLfile.Execute then
|
||||
ChildWin.QueryLoad( ChildWin.OpenDialogSQLfile.FileName );
|
||||
end;
|
||||
|
||||
|
||||
@ -1357,14 +1377,21 @@ begin
|
||||
ShowStatus( STATUS_MSG_READY );
|
||||
end;
|
||||
|
||||
|
||||
procedure TMainForm.actDataSetDeleteExecute(Sender: TObject);
|
||||
begin
|
||||
ChildWin.Delete1Click(sender);
|
||||
abort;
|
||||
// Delete record(s)
|
||||
if Childwin.gridData.SelectedRows.Count = 0 then begin
|
||||
if MessageDLG('Delete 1 Record(s)?', mtConfirmation, [mbOK, mbCancel], 0) = mrOK then
|
||||
Childwin.GetVisualDataSet.Delete; // unsafe ...
|
||||
end else
|
||||
if MessageDLG('Delete '+IntToStr(Childwin.gridData.SelectedRows.count)+' Record(s)?', mtConfirmation, [mbOK, mbCancel], 0) = mrOK then
|
||||
Childwin.gridData.SelectedRows.Delete;
|
||||
abort; // TOTO: is this right?
|
||||
end;
|
||||
|
||||
|
||||
procedure TMainForm.menuUpdateCheckClick(Sender: TObject);
|
||||
procedure TMainForm.actUpdateCheckExecute(Sender: TObject);
|
||||
var
|
||||
frm : TfrmUpdateCheck;
|
||||
begin
|
||||
@ -1373,26 +1400,67 @@ begin
|
||||
FreeAndNil(frm);
|
||||
end;
|
||||
|
||||
procedure TMainForm.btnTableAddFieldClick(Sender: TObject);
|
||||
|
||||
procedure TMainForm.actCreateFieldExecute(Sender: TObject);
|
||||
begin
|
||||
FieldEditorWindow(Childwin, femFieldAdd);
|
||||
end;
|
||||
|
||||
procedure TMainForm.btnTableEditFieldClick(Sender: TObject);
|
||||
|
||||
procedure TMainForm.actEditFieldExecute(Sender: TObject);
|
||||
var
|
||||
fieldname: WideString;
|
||||
fem: TFieldEditorMode;
|
||||
begin
|
||||
Childwin.UpdateField(Sender);
|
||||
fieldname := '';
|
||||
fem := femFieldAdd;
|
||||
if Assigned(Childwin.ListColumns.FocusedNode) and (vsSelected in Childwin.ListColumns.FocusedNode.States) then
|
||||
fieldname := Childwin.ListColumns.Text[Childwin.ListColumns.FocusedNode, 0];
|
||||
if fieldname <> '' then
|
||||
fem := femFieldUpdate;
|
||||
FieldEditorWindow(Childwin, fem, fieldname);
|
||||
end;
|
||||
|
||||
procedure TMainForm.btnTableDropFieldClick(Sender: TObject);
|
||||
|
||||
procedure TMainForm.actDropFieldsExecute(Sender: TObject);
|
||||
var
|
||||
i: Integer;
|
||||
dropCmd: String;
|
||||
dropList: TStringList;
|
||||
begin
|
||||
Childwin.DropField(Sender);
|
||||
// We allow the user to select and delete multiple listItems
|
||||
dropList := GetVTCaptions( Childwin.ListColumns, True );
|
||||
// User confirmation
|
||||
if MessageDlg('Delete ' + IntToStr(dropList.Count) + ' field(s): ' + ImplodeStr( ', ', dropList ) + ' ?', mtConfirmation, [mbok,mbcancel], 0) = mrok then
|
||||
try
|
||||
// Concat fields for ALTER query
|
||||
for i := 0 to dropList.Count - 1 do
|
||||
dropCmd := dropCmd + 'DROP ' + mask(dropList[i]) + ', ';
|
||||
// Remove trailing comma
|
||||
delete(dropCmd, Length(dropCmd)-1, 2);
|
||||
// Execute field dropping
|
||||
Childwin.ExecUpdateQuery( 'ALTER TABLE '+mask(Childwin.SelectedTable)+' ' + dropCmd );
|
||||
// Rely on the server respective ExecUpdateQuery has raised an exception so the
|
||||
// following code will be skipped on any error
|
||||
Childwin.ListColumns.BeginUpdate;
|
||||
Childwin.ListColumns.DeleteSelectedNodes;
|
||||
Childwin.ListColumns.EndUpdate;
|
||||
// Set focus on first item
|
||||
Childwin.ListColumns.FocusedNode := Childwin.ListColumns.GetFirstVisible;
|
||||
except
|
||||
On E : Exception do begin
|
||||
MessageDlg( E.Message, mtError, [mbOK], 0 );
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMainForm.btnTableManageIndexesClick(Sender: TObject);
|
||||
|
||||
procedure TMainForm.actEditIndexesExecute(Sender: TObject);
|
||||
begin
|
||||
FieldEditorWindow(Childwin, femIndexEditor);
|
||||
end;
|
||||
|
||||
|
||||
procedure TMainForm.actCreateTableExecute(Sender: TObject);
|
||||
begin
|
||||
if Childwin.CreateTableForm = nil then
|
||||
@ -1400,6 +1468,7 @@ begin
|
||||
Childwin.CreateTableForm.ShowModal;
|
||||
end;
|
||||
|
||||
|
||||
procedure TMainForm.actEmptyTablesExecute(Sender: TObject);
|
||||
var
|
||||
t: TStringList;
|
||||
@ -1432,7 +1501,8 @@ begin
|
||||
Screen.Cursor := crDefault;
|
||||
end;
|
||||
|
||||
procedure TMainForm.actTablePropertiesExecute(Sender: TObject);
|
||||
|
||||
procedure TMainForm.actEditTableFieldsExecute(Sender: TObject);
|
||||
var
|
||||
NodeData: PVTreeData;
|
||||
begin
|
||||
@ -1444,7 +1514,8 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMainForm.actAlterTableExecute(Sender: TObject);
|
||||
|
||||
procedure TMainForm.actEditTablePropertiesExecute(Sender: TObject);
|
||||
var
|
||||
NodeData: PVTreeData;
|
||||
caller: TComponent;
|
||||
@ -1463,4 +1534,300 @@ begin
|
||||
Childwin.TablePropertiesForm.ShowModal;
|
||||
end;
|
||||
|
||||
|
||||
procedure TMainForm.actDropDatabaseExecute(Sender: TObject);
|
||||
var
|
||||
tndb: PVirtualNode;
|
||||
db: String;
|
||||
begin
|
||||
// Drop DB.
|
||||
case Childwin.DBtree.GetNodeLevel(Childwin.DBtree.GetFirstSelected) of
|
||||
1: tndb := Childwin.DBtree.GetFirstSelected;
|
||||
2: tndb := Childwin.DBtree.GetFirstSelected.Parent;
|
||||
else Exit;
|
||||
end;
|
||||
if not Assigned(tndb) then raise Exception.Create('Internal error: Cannot drop NIL database.');
|
||||
db := Childwin.Databases[tndb.Index];
|
||||
|
||||
if MessageDlg('Drop Database "'+db+'"?' + crlf + crlf + 'WARNING: You will lose all tables in database '+db+'!', mtConfirmation, [mbok,mbcancel], 0) <> mrok then
|
||||
Abort;
|
||||
|
||||
Screen.Cursor := crHourglass;
|
||||
try
|
||||
Childwin.ExecUpdateQuery( 'DROP DATABASE ' + mask(db) );
|
||||
if Childwin.DatabasesWanted.IndexOf(db) > -1 then begin
|
||||
Childwin.DatabasesWanted.Delete( Childwin.DatabasesWanted.IndexOf(db) );
|
||||
with TRegistry.Create do begin
|
||||
if OpenKey(REGPATH + REGKEY_SESSIONS + Childwin.Conn.Description, false) then begin
|
||||
WriteString( 'OnlyDBs', ImplodeStr( ';', Childwin.DatabasesWanted ) );
|
||||
CloseKey;
|
||||
end;
|
||||
Free;
|
||||
end;
|
||||
end;
|
||||
Childwin.DBtree.Selected[Childwin.DBtree.GetFirst] := true;
|
||||
Childwin.RefreshTree(False);
|
||||
except
|
||||
MessageDLG('Dropping failed.'+crlf+'Maybe '''+db+''' is not a valid database-name.', mtError, [mbOK], 0)
|
||||
end;
|
||||
Screen.Cursor := crDefault;
|
||||
end;
|
||||
|
||||
|
||||
procedure TMainForm.actEditDatabaseExecute(Sender: TObject);
|
||||
begin
|
||||
if Childwin.CreateDatabaseForm = nil then
|
||||
Childwin.CreateDatabaseForm := TCreateDatabaseForm.Create(Self);
|
||||
Childwin.CreateDatabaseForm.modifyDB := Childwin.ActiveDatabase;
|
||||
Childwin.CreateDatabaseForm.ShowModal;
|
||||
end;
|
||||
|
||||
|
||||
procedure TMainForm.actOpenSessionExecute(Sender: TObject);
|
||||
begin
|
||||
if ActiveMDIChild = nil then
|
||||
ConnectionWindow(Self)
|
||||
else begin
|
||||
debug('perf: new connection clicked.');
|
||||
ShellExec( ExtractFileName(paramstr(0)), ExtractFilePath(paramstr(0)) );
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure TMainForm.actQueryFindExecute(Sender: TObject);
|
||||
var
|
||||
m: TSynMemo;
|
||||
begin
|
||||
FindDialogQuery.execute;
|
||||
m := Childwin.SynMemoQuery;
|
||||
// if something is selected search for that text
|
||||
if m.SelAvail and (m.BlockBegin.Line = m.BlockEnd.Line)
|
||||
then
|
||||
FindDialogQuery.FindText := m.SelText
|
||||
else
|
||||
FindDialogQuery.FindText := m.GetWordAtRowCol(m.CaretXY);
|
||||
end;
|
||||
|
||||
|
||||
procedure TMainForm.actQueryReplaceExecute(Sender: TObject);
|
||||
var
|
||||
m: TSynMemo;
|
||||
begin
|
||||
ReplaceDialogQuery.execute;
|
||||
m := Childwin.SynMemoQuery;
|
||||
// if something is selected search for that text
|
||||
if m.SelAvail and (m.BlockBegin.Line = m.BlockEnd.Line)
|
||||
then
|
||||
ReplaceDialogQuery.FindText := m.SelText
|
||||
else
|
||||
ReplaceDialogQuery.FindText := m.GetWordAtRowCol(m.CaretXY);
|
||||
end;
|
||||
|
||||
|
||||
procedure TMainForm.actRefreshExecute(Sender: TObject);
|
||||
begin
|
||||
// Refresh
|
||||
// Force data tab update when appropriate.
|
||||
Childwin.dataselected := false;
|
||||
if ChildWin.PageControlMain.ActivePage = ChildWin.tabHost then
|
||||
ChildWin.ShowVariablesAndProcesses(self)
|
||||
else if ChildWin.PageControlMain.ActivePage = ChildWin.tabDatabase then
|
||||
ChildWin.MenuRefreshClick(self)
|
||||
else if ChildWin.PageControlMain.ActivePage = ChildWin.tabTable then
|
||||
ChildWin.ShowTableProperties(ChildWin.SelectedTable)
|
||||
else if ChildWin.PageControlMain.ActivePage = ChildWin.tabData then
|
||||
ChildWin.viewdata(Sender)
|
||||
else
|
||||
ChildWin.RefreshTree(True);
|
||||
end;
|
||||
|
||||
|
||||
procedure TMainForm.actSQLhelpExecute(Sender: TObject);
|
||||
var
|
||||
keyword : String;
|
||||
begin
|
||||
// Call SQL Help from various places
|
||||
if Childwin.mysql_version < 40100 then
|
||||
exit;
|
||||
|
||||
keyword := '';
|
||||
// Query-Tab
|
||||
if Childwin.SynMemoQuery.Focused then
|
||||
keyword := Childwin.SynMemoQuery.WordAtCursor
|
||||
// LogSQL-Tab
|
||||
else if Childwin.SynMemoSQLLog.Focused then
|
||||
keyword := Childwin.SynMemoSQLLog.WordAtCursor
|
||||
// Filter-Tab
|
||||
else if Childwin.SynMemoFilter.Focused then
|
||||
keyword := Childwin.SynMemoFilter.WordAtCursor
|
||||
// Data-Tab
|
||||
else if (Childwin.PageControlMain.ActivePage = Childwin.tabData)
|
||||
and (-1 < Childwin.gridData.SelectedField.Index)
|
||||
and (Childwin.gridData.SelectedField.Index <= Length(Childwin.VTRowDataListColumns)) then
|
||||
begin
|
||||
keyword := Childwin.VTRowDataListColumns[Childwin.gridData.SelectedField.Index].Captions[1];
|
||||
end
|
||||
// Table-Tab
|
||||
else if Childwin.ListColumns.Focused and Assigned(Childwin.ListColumns.FocusedNode) then
|
||||
begin
|
||||
keyword := Childwin.ListColumns.Text[Childwin.ListColumns.FocusedNode, 1];
|
||||
end
|
||||
else if Childwin.lboxQueryHelpers.Focused then
|
||||
begin
|
||||
// Makes only sense if one of the tabs "SQL fn" or "SQL kw" was selected
|
||||
if Childwin.tabsetQueryHelpers.TabIndex in [1,2] then
|
||||
begin
|
||||
keyword := Childwin.lboxQueryHelpers.Items[Childwin.lboxQueryHelpers.ItemIndex];
|
||||
end;
|
||||
end;
|
||||
|
||||
// Clean existing paranthesis, fx: char(64)
|
||||
if Pos( '(', keyword ) > 0 then
|
||||
begin
|
||||
keyword := Copy( keyword, 1, Pos( '(', keyword )-1 );
|
||||
end;
|
||||
|
||||
// Show the window
|
||||
CallSQLHelpWithKeyword( keyword );
|
||||
end;
|
||||
|
||||
|
||||
{***
|
||||
Show SQL Help window directly using a keyword
|
||||
@param String SQL-keyword
|
||||
@see FieldeditForm.btnDatatypeHelp
|
||||
}
|
||||
procedure TMainform.CallSQLHelpWithKeyword( keyword: String );
|
||||
begin
|
||||
// Set help-keyword and show window
|
||||
SQLhelpWindow(Self, keyword);
|
||||
end;
|
||||
|
||||
|
||||
procedure TMainForm.actSaveSQLExecute(Sender: TObject);
|
||||
begin
|
||||
// Save SQL
|
||||
if Childwin.SaveDialogSQLFile.Execute then
|
||||
begin
|
||||
Screen.Cursor := crHourGlass;
|
||||
// Save complete content or just the selected text,
|
||||
// depending on the tag of calling control
|
||||
case (Sender as TAction).Tag of
|
||||
0: SaveUnicodeFile( Childwin.SaveDialogSQLFile.FileName, Childwin.SynMemoQuery.Text );
|
||||
1: SaveUnicodeFile( Childwin.SaveDialogSQLFile.FileName, Childwin.SynMemoQuery.SelText );
|
||||
end;
|
||||
Screen.Cursor := crDefault;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure TMainForm.actSaveSQLSnippetExecute(Sender: TObject);
|
||||
var
|
||||
snippetname : String;
|
||||
mayChange : Boolean;
|
||||
begin
|
||||
// Save snippet
|
||||
if InputQuery( 'Save snippet', 'Snippet name:', snippetname) then
|
||||
begin
|
||||
if Copy( snippetname, Length(snippetname)-4, 4 ) <> '.sql' then
|
||||
snippetname := snippetname + '.sql';
|
||||
// cleanup snippetname from special characters
|
||||
snippetname := DIRNAME_SNIPPETS + goodfilename(snippetname);
|
||||
if FileExists( snippetname ) then
|
||||
begin
|
||||
if MessageDlg( 'Overwrite existing snippet '+snippetname+'?', mtConfirmation, [mbOK, mbCancel], 0 ) <> mrOK then
|
||||
exit;
|
||||
end;
|
||||
Screen.Cursor := crHourglass;
|
||||
// Save complete content or just the selected text,
|
||||
// depending on the tag of calling control
|
||||
case (Sender as TComponent).Tag of
|
||||
0: SaveUnicodeFile(snippetname, Childwin.SynMemoQuery.Text);
|
||||
1: SaveUnicodeFile(snippetname, Childwin.SynMemoQuery.SelText);
|
||||
end;
|
||||
Childwin.FillPopupQueryLoad;
|
||||
if Childwin.tabsetQueryHelpers.TabIndex = 3 then begin
|
||||
// SQL Snippets selected in query helper, refresh list
|
||||
mayChange := True; // Unused; satisfies callee parameter collection which is probably dictated by tabset.
|
||||
Childwin.tabsetQueryHelpersChange(Sender, 3, mayChange);
|
||||
end;
|
||||
Screen.Cursor := crDefault;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure TMainForm.actQueryStopOnErrorsExecute(Sender: TObject);
|
||||
begin
|
||||
// Weird fix: dummy routine to avoid the sending action getting disabled
|
||||
end;
|
||||
|
||||
|
||||
procedure TMainForm.actQueryWordWrapExecute(Sender: TObject);
|
||||
begin
|
||||
Childwin.SynMemoQuery.WordWrap := TAction(Sender).Checked;
|
||||
end;
|
||||
|
||||
|
||||
procedure TMainForm.FindDialogQueryFind(Sender: TObject);
|
||||
var
|
||||
Options: TSynSearchOptions;
|
||||
Search: String;
|
||||
begin
|
||||
Search := FindDialogQuery.FindText;
|
||||
Options := [];
|
||||
if Sender is TReplaceDialog then
|
||||
Include(Options, ssoEntireScope);
|
||||
if not (frDown in FindDialogQuery.Options) then
|
||||
Include(Options, ssoBackwards);
|
||||
if frMatchCase in FindDialogQuery.Options then
|
||||
Include(Options, ssoMatchCase);
|
||||
if frWholeWord in FindDialogQuery.Options then
|
||||
Include(Options, ssoWholeWord);
|
||||
if Childwin.SynMemoQuery.SearchReplace(Search, '', Options) = 0 then
|
||||
begin
|
||||
MessageBeep(MB_ICONASTERISK);
|
||||
ShowStatus( 'SearchText ''' + Search + ''' not found!', 0);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure TMainForm.ReplaceDialogQueryFind(Sender: TObject);
|
||||
begin
|
||||
FindDialogQuery.FindText := ReplaceDialogQuery.FindText;
|
||||
FindDialogQueryFind( ReplaceDialogQuery );
|
||||
end;
|
||||
|
||||
|
||||
procedure TMainForm.ReplaceDialogQueryReplace(Sender: TObject);
|
||||
var
|
||||
Options: TSynSearchOptions;
|
||||
Search: String;
|
||||
begin
|
||||
Search := ReplaceDialogQuery.FindText;
|
||||
Options := [ssoEntireScope]; // Do replaces always on entire scope, because the standard-dialog lacks of a down/up-option
|
||||
if frReplaceAll in ReplaceDialogQuery.Options then
|
||||
Include( Options, ssoReplaceAll );
|
||||
if not (frDown in ReplaceDialogQuery.Options) then
|
||||
Include(Options, ssoBackwards);
|
||||
if frMatchCase in ReplaceDialogQuery.Options then
|
||||
Include(Options, ssoMatchCase);
|
||||
if frWholeWord in ReplaceDialogQuery.Options then
|
||||
Include(Options, ssoWholeWord);
|
||||
if frReplace in ReplaceDialogQuery.Options then // Replace instead of ReplaceAll is pressed
|
||||
Include(Options, ssoReplace)
|
||||
else
|
||||
Include(Options, ssoReplaceAll);
|
||||
if Childwin.SynMemoQuery.SearchReplace( Search, ReplaceDialogQuery.ReplaceText, Options) = 0 then
|
||||
begin
|
||||
MessageBeep(MB_ICONASTERISK);
|
||||
ShowStatus( 'SearchText ''' + Search + ''' not found!', 0);
|
||||
if ssoBackwards in Options then
|
||||
Childwin.SynMemoQuery.BlockEnd := Childwin.SynMemoQuery.BlockBegin
|
||||
else
|
||||
Childwin.SynMemoQuery.BlockBegin := Childwin.SynMemoQuery.BlockEnd;
|
||||
Childwin.SynMemoQuery.CaretXY := Childwin.SynMemoQuery.BlockBegin;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
end.
|
||||
|
@ -279,7 +279,7 @@ end;
|
||||
|
||||
procedure Toptimize.btnHelpClick(Sender: TObject);
|
||||
begin
|
||||
Mainform.Childwin.CallSQLHelpWithKeyword('OPTIMIZE');
|
||||
Mainform.CallSQLHelpWithKeyword('OPTIMIZE');
|
||||
end;
|
||||
|
||||
|
||||
|
@ -110,24 +110,12 @@ type
|
||||
{ Public declarations }
|
||||
end;
|
||||
|
||||
function OptionsWindow (AOwner : TComponent; Flags : String = '') : Boolean;
|
||||
|
||||
|
||||
implementation
|
||||
uses childwin, main, helpers;
|
||||
{$R *.DFM}
|
||||
|
||||
|
||||
function OptionsWindow (AOwner : TComponent; Flags : String = '') : Boolean;
|
||||
var
|
||||
f : Toptionsform;
|
||||
begin
|
||||
f := Toptionsform.Create(AOwner);
|
||||
Result := (f.ShowModal=mrOK);
|
||||
FreeAndNil (f);
|
||||
end;
|
||||
|
||||
|
||||
procedure Toptionsform.ButtonCancelClick(Sender: TObject);
|
||||
begin
|
||||
// Cancel
|
||||
|
@ -143,7 +143,7 @@ begin
|
||||
keyword := 'CREATE VIEW'
|
||||
else
|
||||
keyword := 'ALTER VIEW';
|
||||
Mainform.ChildWin.CallSQLHelpWithKeyword(keyword);
|
||||
Mainform.CallSQLHelpWithKeyword(keyword);
|
||||
end;
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user