mirror of
https://github.com/HeidiSQL/HeidiSQL.git
synced 2025-08-14 18:12:05 +08:00
Add combobox containing recent filters to above filter memo. rfe #637: Reintroduce filter history drop down.
This commit is contained in:
@ -1195,6 +1195,13 @@ object MainForm: TMainForm
|
|||||||
Anchors = [akTop, akRight]
|
Anchors = [akTop, akRight]
|
||||||
Caption = 'Create table wide filter:'
|
Caption = 'Create table wide filter:'
|
||||||
end
|
end
|
||||||
|
object lblRecentFilters: TLabel
|
||||||
|
Left = 1
|
||||||
|
Top = 3
|
||||||
|
Width = 68
|
||||||
|
Height = 13
|
||||||
|
Caption = 'Recent filters:'
|
||||||
|
end
|
||||||
object btnFilterApply: TButton
|
object btnFilterApply: TButton
|
||||||
Left = 339
|
Left = 339
|
||||||
Top = 41
|
Top = 41
|
||||||
@ -1215,9 +1222,9 @@ object MainForm: TMainForm
|
|||||||
end
|
end
|
||||||
object SynMemoFilter: TSynMemo
|
object SynMemoFilter: TSynMemo
|
||||||
Left = 0
|
Left = 0
|
||||||
Top = 0
|
Top = 21
|
||||||
Width = 335
|
Width = 336
|
||||||
Height = 63
|
Height = 42
|
||||||
SingleLineMode = False
|
SingleLineMode = False
|
||||||
Anchors = [akLeft, akTop, akRight, akBottom]
|
Anchors = [akLeft, akTop, akRight, akBottom]
|
||||||
Font.Charset = DEFAULT_CHARSET
|
Font.Charset = DEFAULT_CHARSET
|
||||||
@ -1274,6 +1281,17 @@ object MainForm: TMainForm
|
|||||||
OnEnter = editFilterSearchEnter
|
OnEnter = editFilterSearchEnter
|
||||||
OnExit = editFilterSearchExit
|
OnExit = editFilterSearchExit
|
||||||
end
|
end
|
||||||
|
object comboRecentFilters: TTntComboBox
|
||||||
|
Left = 75
|
||||||
|
Top = 0
|
||||||
|
Width = 261
|
||||||
|
Height = 21
|
||||||
|
Style = csDropDownList
|
||||||
|
Anchors = [akLeft, akTop, akRight]
|
||||||
|
ItemHeight = 13
|
||||||
|
TabOrder = 4
|
||||||
|
OnSelect = LoadRecentFilter
|
||||||
|
end
|
||||||
end
|
end
|
||||||
object DataGrid: TVirtualStringTree
|
object DataGrid: TVirtualStringTree
|
||||||
Left = 0
|
Left = 0
|
||||||
@ -6483,7 +6501,6 @@ object MainForm: TMainForm
|
|||||||
end
|
end
|
||||||
object popupFilter: TPopupMenu
|
object popupFilter: TPopupMenu
|
||||||
Images = PngImageListMain
|
Images = PngImageListMain
|
||||||
OnPopup = popupFilterPopup
|
|
||||||
Left = 72
|
Left = 72
|
||||||
Top = 128
|
Top = 128
|
||||||
object menuFilterCopy: TMenuItem
|
object menuFilterCopy: TMenuItem
|
||||||
|
@ -453,6 +453,8 @@ type
|
|||||||
N13: TMenuItem;
|
N13: TMenuItem;
|
||||||
ProgressBarStatus: TProgressBar;
|
ProgressBarStatus: TProgressBar;
|
||||||
menuRecentFilters: TMenuItem;
|
menuRecentFilters: TMenuItem;
|
||||||
|
comboRecentFilters: TTntComboBox;
|
||||||
|
lblRecentFilters: TLabel;
|
||||||
procedure refreshMonitorConfig;
|
procedure refreshMonitorConfig;
|
||||||
procedure loadWindowConfig;
|
procedure loadWindowConfig;
|
||||||
procedure saveWindowConfig;
|
procedure saveWindowConfig;
|
||||||
@ -723,7 +725,7 @@ type
|
|||||||
procedure actCopyOrCutExecute(Sender: TObject);
|
procedure actCopyOrCutExecute(Sender: TObject);
|
||||||
procedure actPasteExecute(Sender: TObject);
|
procedure actPasteExecute(Sender: TObject);
|
||||||
procedure actSelectAllExecute(Sender: TObject);
|
procedure actSelectAllExecute(Sender: TObject);
|
||||||
procedure popupFilterPopup(Sender: TObject);
|
procedure EnumerateRecentFilters;
|
||||||
procedure LoadRecentFilter(Sender: TObject);
|
procedure LoadRecentFilter(Sender: TObject);
|
||||||
private
|
private
|
||||||
FDelimiter: String;
|
FDelimiter: String;
|
||||||
@ -3140,7 +3142,6 @@ var
|
|||||||
OldNumbers, Filters: TStringList;
|
OldNumbers, Filters: TStringList;
|
||||||
val: String;
|
val: String;
|
||||||
begin
|
begin
|
||||||
viewdata(Sender);
|
|
||||||
// Recreate recent filters list
|
// Recreate recent filters list
|
||||||
Filters := TStringList.Create;
|
Filters := TStringList.Create;
|
||||||
OldNumbers := TStringList.Create;
|
OldNumbers := TStringList.Create;
|
||||||
@ -3164,6 +3165,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
FreeAndNil(OldNumbers);
|
FreeAndNil(OldNumbers);
|
||||||
FreeAndNil(Filters);
|
FreeAndNil(Filters);
|
||||||
|
viewdata(Sender);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -3690,6 +3692,7 @@ begin
|
|||||||
FreeAndNil(sl_query);
|
FreeAndNil(sl_query);
|
||||||
AutoCalcColWidths(DataGrid, PrevTableColWidths);
|
AutoCalcColWidths(DataGrid, PrevTableColWidths);
|
||||||
viewingdata := false;
|
viewingdata := false;
|
||||||
|
EnumerateRecentFilters;
|
||||||
Screen.Cursor := crDefault;
|
Screen.Cursor := crDefault;
|
||||||
end;
|
end;
|
||||||
DataGridDB := ActiveDatabase;
|
DataGridDB := ActiveDatabase;
|
||||||
@ -8863,7 +8866,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure TMainForm.popupFilterPopup(Sender: TObject);
|
procedure TMainForm.EnumerateRecentFilters;
|
||||||
var
|
var
|
||||||
flt: TStringList;
|
flt: TStringList;
|
||||||
i: Integer;
|
i: Integer;
|
||||||
@ -8871,10 +8874,11 @@ var
|
|||||||
rx: TRegExpr;
|
rx: TRegExpr;
|
||||||
capt: String;
|
capt: String;
|
||||||
begin
|
begin
|
||||||
// Reset menu items
|
// Reset menu and combobox
|
||||||
menuRecentFilters.Enabled := False;
|
menuRecentFilters.Enabled := False;
|
||||||
for i := menuRecentFilters.Count - 1 downto 0 do
|
for i := menuRecentFilters.Count - 1 downto 0 do
|
||||||
menuRecentFilters.Delete(i);
|
menuRecentFilters.Delete(i);
|
||||||
|
comboRecentFilters.Items.Clear;
|
||||||
// Enumerate recent filters from registry
|
// Enumerate recent filters from registry
|
||||||
if MainReg.OpenKey(GetRegKeyTable+'\'+REGNAME_FILTERS, False) then begin
|
if MainReg.OpenKey(GetRegKeyTable+'\'+REGNAME_FILTERS, False) then begin
|
||||||
flt := TStringList.Create;
|
flt := TStringList.Create;
|
||||||
@ -8890,24 +8894,39 @@ begin
|
|||||||
item.Tag := MakeInt(flt[i]);
|
item.Tag := MakeInt(flt[i]);
|
||||||
item.OnClick := LoadRecentFilter;
|
item.OnClick := LoadRecentFilter;
|
||||||
menuRecentFilters.Add(item);
|
menuRecentFilters.Add(item);
|
||||||
|
capt := Utf8Decode(capt);
|
||||||
|
comboRecentFilters.Items.Add(sstr(capt, 100));
|
||||||
end;
|
end;
|
||||||
FreeAndNil(rx);
|
FreeAndNil(rx);
|
||||||
FreeAndNil(flt);
|
FreeAndNil(flt);
|
||||||
menuRecentFilters.Enabled := menuRecentFilters.Count > 0;
|
menuRecentFilters.Enabled := menuRecentFilters.Count > 0;
|
||||||
end;
|
end;
|
||||||
|
comboRecentFilters.Visible := comboRecentFilters.Items.Count > 0;
|
||||||
|
lblRecentFilters.Visible := comboRecentFilters.Visible;
|
||||||
|
SynMemoFilter.Height := pnlFilter.Height - 3;
|
||||||
|
SynMemoFilter.Top := comboRecentFilters.Top;
|
||||||
|
if comboRecentFilters.Visible then begin
|
||||||
|
SynMemoFilter.Height := SynMemoFilter.Height - comboRecentFilters.Height;
|
||||||
|
SynMemoFilter.Top := SynMemoFilter.Top + comboRecentFilters.Height;
|
||||||
|
comboRecentFilters.ItemIndex := 0;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure TMainForm.LoadRecentFilter(Sender: TObject);
|
procedure TMainForm.LoadRecentFilter(Sender: TObject);
|
||||||
var
|
var
|
||||||
key: String;
|
key: Integer;
|
||||||
begin
|
begin
|
||||||
|
// Event handler for both dynamic popup menu items and filter combobox
|
||||||
|
if Sender is TMenuItem then
|
||||||
|
key := (Sender as TMenuItem).Tag
|
||||||
|
else
|
||||||
|
key := (Sender as TTNTComboBox).ItemIndex+1;
|
||||||
if MainReg.OpenKey(GetRegKeyTable+'\'+REGNAME_FILTERS, False) then begin
|
if MainReg.OpenKey(GetRegKeyTable+'\'+REGNAME_FILTERS, False) then begin
|
||||||
key := IntToStr((Sender as TMenuItem).Tag);
|
|
||||||
SynMemoFilter.UndoList.AddGroupBreak;
|
SynMemoFilter.UndoList.AddGroupBreak;
|
||||||
SynMemoFilter.BeginUpdate;
|
SynMemoFilter.BeginUpdate;
|
||||||
SynMemoFilter.SelectAll;
|
SynMemoFilter.SelectAll;
|
||||||
SynMemoFilter.SelText := Utf8Decode( MainReg.ReadString(key) );
|
SynMemoFilter.SelText := Utf8Decode( MainReg.ReadString(IntToStr(key)) );
|
||||||
SynMemoFilter.EndUpdate;
|
SynMemoFilter.EndUpdate;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
Reference in New Issue
Block a user