From 5de3fc1d57c29bfecc2c7c1fe218d26cd6f7b66c Mon Sep 17 00:00:00 2001 From: Ansgar Becker Date: Wed, 17 Feb 2010 23:16:26 +0000 Subject: [PATCH] Display parameters of stored routines in "Cols" tab of query helpers when a procedure or function is selected. Fixes issue #1702. --- source/const.inc | 2 +- source/main.pas | 33 ++++++++++++++++++++++----------- source/routine_editor.pas | 5 +---- 3 files changed, 24 insertions(+), 16 deletions(-) diff --git a/source/const.inc b/source/const.inc index 4e35a038..8d3eda80 100644 --- a/source/const.inc +++ b/source/const.inc @@ -24,7 +24,7 @@ const REGPATH = '\Software\' + APPNAME + '\'; REGKEY_SESSIONS = 'Servers\'; // Some unique char, used to separate e.g. selected columns in registry - REGDELIM = '|'; + DELIM = '|'; STATUS_MSG_READY = 'Ready.'; STR_NOTSUPPORTED = 'Not supported by this server'; diff --git a/source/main.pas b/source/main.pas index 6c989e0d..80b8e0f6 100644 --- a/source/main.pas +++ b/source/main.pas @@ -5087,6 +5087,7 @@ var SnippetsAccessible : Boolean; Files: TStringList; Col: TTableColumn; + Param: String; begin ActiveQueryHelpers.Items.BeginUpdate; ActiveQueryHelpers.Items.Clear; @@ -5108,12 +5109,22 @@ begin begin // Keep native order of columns ActiveQueryHelpers.Sorted := False; - menuQueryHelpersGenerateInsert.Enabled := True; - menuQueryHelpersGenerateUpdate.Enabled := True; - menuQueryHelpersGenerateDelete.Enabled := True; - for i:=0 to SelectedTableColumns.Count-1 do begin - Col := TTableColumn(SelectedTableColumns[i]); - ActiveQueryHelpers.Items.Add(Col.Name); + case SelectedTable.NodeType of + lntTable: begin + menuQueryHelpersGenerateInsert.Enabled := True; + menuQueryHelpersGenerateUpdate.Enabled := True; + menuQueryHelpersGenerateDelete.Enabled := True; + for i:=0 to SelectedTableColumns.Count-1 do begin + Col := TTableColumn(SelectedTableColumns[i]); + ActiveQueryHelpers.Items.Add(Col.Name); + end; + end; + lntFunction, lntProcedure: if Assigned(RoutineEditor) then begin + for i:=0 to RoutineEditor.Parameters.Count-1 do begin + Param := Copy(RoutineEditor.Parameters[i], 1, Pos(DELIM, RoutineEditor.Parameters[i])-1); + ActiveQueryHelpers.Items.Add(Param); + end; + end; end; end; @@ -7637,7 +7648,7 @@ begin end else begin // Save current attributes if grid gets refreshed HiddenCols := TStringList.Create; - HiddenCols.Delimiter := REGDELIM; + HiddenCols.Delimiter := DELIM; HiddenCols.StrictDelimiter := True; if FDataGridSelect.Count > 0 then for i:=0 to SelectedTableColumns.Count-1 do begin Col := TTableColumn(SelectedTableColumns[i]); @@ -7656,7 +7667,7 @@ begin MainReg.DeleteValue(REGNAME_FILTER); for i := 0 to High(FDataGridSort) do - Sort := Sort + IntToStr(FDataGridSort[i].SortDirection) + '_' + FDataGridSort[i].ColumnName + REGDELIM; + Sort := Sort + IntToStr(FDataGridSort[i].SortDirection) + '_' + FDataGridSort[i].ColumnName + DELIM; if Sort <> '' then MainReg.WriteString(REGNAME_SORT, Sort) else if MainReg.ValueExists(REGNAME_SORT) then @@ -7683,7 +7694,7 @@ begin // Columns if MainReg.ValueExists(REGNAME_HIDDENCOLUMNS) then begin HiddenCols := TStringList.Create; - HiddenCols.Delimiter := REGDELIM; + HiddenCols.Delimiter := DELIM; HiddenCols.StrictDelimiter := True; HiddenCols.DelimitedText := MainReg.ReadString(REGNAME_HIDDENCOLUMNS); FDataGridSelect.Clear; @@ -7706,7 +7717,7 @@ begin if MainReg.ValueExists(REGNAME_SORT) then begin SetLength(FDataGridSort, 0); rx := TRegExpr.Create; - rx.Expression := '\b(\d)_(.+)\'+REGDELIM; + rx.Expression := '\b(\d)_(.+)\'+DELIM; rx.ModifierG := False; if rx.Exec(MainReg.ReadString(REGNAME_SORT)) then while true do begin idx := Length(FDataGridSort); @@ -7732,7 +7743,7 @@ function TMainForm.GetRegKeyTable: String; begin // Return the slightly complex registry path to \Servers\ThisServer\curdb|curtable Result := REGPATH + REGKEY_SESSIONS + SessionName + '\' + - ActiveDatabase + REGDELIM + SelectedTable.Name; + ActiveDatabase + DELIM + SelectedTable.Name; end; diff --git a/source/routine_editor.pas b/source/routine_editor.pas index 56b31426..2c2950ee 100644 --- a/source/routine_editor.pas +++ b/source/routine_editor.pas @@ -67,10 +67,10 @@ type procedure btnDiscardClick(Sender: TObject); private { Private declarations } - Parameters: TStringList; FAlterRoutineType: String; public { Public declarations } + Parameters: TStringList; constructor Create(AOwner: TComponent); override; destructor Destroy; override; procedure Init(ObjectName: String=''; ObjectType: TListNodeType=lntNone); override; @@ -84,9 +84,6 @@ uses main, mysql_structures, grideditlinks; {$R *.dfm} -const - DELIM = '|'; - constructor TfrmRoutineEditor.Create(AOwner: TComponent); var