From 484fcdbd46cb124e2ef195010228bb1c029db764 Mon Sep 17 00:00:00 2001 From: Ansgar Becker Date: Mon, 22 Feb 2010 08:56:13 +0000 Subject: [PATCH] Place a "EXPLAIN" link label to the process viewer, which creates a new query tab and executes "EXPLAIN [selected process query]". --- source/main.dfm | 16 ++++++++++++++++ source/main.pas | 19 +++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/source/main.dfm b/source/main.dfm index 013be81e..2ac6afa9 100644 --- a/source/main.dfm +++ b/source/main.dfm @@ -723,6 +723,22 @@ object MainForm: TMainForm BevelOuter = bvNone Caption = 'Process SQL:' TabOrder = 0 + object lblExplainProcess: TLabel + Left = 87 + Top = 1 + Width = 41 + Height = 13 + Cursor = crHandPoint + Hint = 'Analyze this query' + Caption = 'EXPLAIN' + Font.Charset = DEFAULT_CHARSET + Font.Color = clBlue + Font.Height = -11 + Font.Name = 'Default' + Font.Style = [] + ParentFont = False + OnClick = lblExplainProcessClick + end end object SynMemoProcessView: TSynMemo Left = 0 diff --git a/source/main.pas b/source/main.pas index 64355ade..00d1159e 100644 --- a/source/main.pas +++ b/source/main.pas @@ -458,6 +458,7 @@ type Findtext1: TMenuItem; actQueryFindAgain1: TMenuItem; Replacetext1: TMenuItem; + lblExplainProcess: TLabel; procedure refreshMonitorConfig; procedure loadWindowConfig; procedure saveWindowConfig; @@ -728,6 +729,7 @@ type TransientType: TTransientType); procedure actQueryFindAgainExecute(Sender: TObject); procedure vstScroll(Sender: TBaseVirtualTree; DeltaX, DeltaY: Integer); + procedure lblExplainProcessClick(Sender: TObject); private ReachedEOT: Boolean; FDelimiter: String; @@ -1244,6 +1246,9 @@ begin InheritFont(Font); InheritFont(tabsetQueryHelpers.Font); InheritFont(SynCompletionProposal.Font); + // Simulated link label, has non inherited blue font color + InheritFont(lblExplainProcess.Font); + StatusBar.Height := GetTextHeight(StatusBar.Font)+4; // Upscale panels in non-96-DPI mode DpiScaleFactor := Screen.PixelsPerInch / FORMS_DPI; @@ -5898,6 +5903,7 @@ begin enableSQLView := Assigned(Node); SynMemoProcessView.Enabled := enableSQLView; pnlProcessView.Enabled := enableSQLView; + lblExplainProcess.Enabled := enableSQLView; if enableSQLView then begin NodeData := ListProcesses.GetNodeData(Node); SynMemoProcessView.Highlighter := SynSQLSyn1; @@ -9342,5 +9348,18 @@ begin end; +procedure TMainForm.lblExplainProcessClick(Sender: TObject); +var + Tab: TQueryTab; +begin + // Click on "Explain" link label, in process viewer + actNewQueryTabExecute(Sender); + Tab := QueryTabs[QueryTabs.Count-1]; + Tab.Memo.Text := 'EXPLAIN'+CRLF+SynMemoProcessView.Text; + Tab.TabSheet.Show; + actExecuteQueryExecute(Sender); +end; + + end.