#444: turn remaining quick filter menu items into TAction's, with customizable shortcuts only for the most important ones

This commit is contained in:
Ansgar Becker
2020-04-21 18:03:22 +02:00
parent cc161270c9
commit 114b92d27a
3 changed files with 317 additions and 202 deletions

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: HeidiSQL\n"
"POT-Creation-Date: 2012-11-05 21:40\n"
"PO-Revision-Date: 2020-04-14 17:46+0200\n"
"PO-Revision-Date: 2020-04-21 18:03+0200\n"
"Last-Translator: Ansgar Becker <anse@heidisql.com>\n"
"Language-Team: English (http://www.transifex.com/projects/p/heidisql/language/en/)\n"
"MIME-Version: 1.0\n"
@ -2512,6 +2512,66 @@ msgstr "More values ..."
msgid "Table too large (>%s), avoiding long running SELECT query"
msgstr "Table too large (>%s), avoiding long running SELECT query"
msgid "Quick filter: Column = Focused"
msgstr "Quick filter: Column = Focused"
msgid "Quick filter: Column != Focused"
msgstr "Quick filter: Column != Focused"
msgid "Quick filter: Column > Focused"
msgstr "Quick filter: Column > Focused"
msgid "Quick filter: Column < Focused"
msgstr "Quick filter: Column < Focused"
msgid "Quick filter: Column LIKE Focused%"
msgstr "Quick filter: Column LIKE Focused%"
msgid "Quick filter: Column LIKE %Focused"
msgstr "Quick filter: Column LIKE %Focused"
msgid "Quick filter: Column LIKE %Focused%"
msgstr "Quick filter: Column LIKE %Focused%"
msgid "Quick filter: Column = Prompt"
msgstr "Quick filter: Column = Prompt"
msgid "Quick filter: Column != Prompt"
msgstr "Quick filter: Column != Prompt"
msgid "Quick filter: Column > Prompt"
msgstr "Quick filter: Column > Prompt"
msgid "Quick filter: Column < Prompt"
msgstr "Quick filter: Column < Prompt"
msgid "Quick filter: Column LIKE %Prompt%"
msgstr "Quick filter: Column LIKE %Prompt%"
msgid "Quick filter: Column IS NULL"
msgstr "Quick filter: Column IS NULL"
msgid "Quick filter: Column IS NOT NULL"
msgstr "Quick filter: Column IS NOT NULL"
msgid "Quick filter: Column = Clipboard"
msgstr "Quick filter: Column = Clipboard"
msgid "Quick filter: Column != Clipboard"
msgstr "Quick filter: Column != Clipboard"
msgid "Quick filter: Column > Clipboard"
msgstr "Quick filter: Column > Clipboard"
msgid "Quick filter: Column < Clipboard"
msgstr "Quick filter: Column < Clipboard"
msgid "Quick filter: Column LIKE %Clipboard%"
msgstr "Quick filter: Column LIKE %Clipboard%"
msgid "Quick filter: Column IN (Clipboard)"
msgstr "Quick filter: Column IN (Clipboard)"
#. MainForm..popupSqlLog..Copylinetonewquerytab1..Caption
#: main.dfm:9000
msgid "Copy line to new query tab"

View File

@ -3129,53 +3129,130 @@ object MainForm: TMainForm
ShortCut = 16416
OnExecute = actSynEditCompletionProposeExecute
end
object actQuickFilterFocusedValue1: TAction
object actQuickFilterFocused1: TAction
Category = 'Data'
Caption = 'actQuickFilterFocusedValue1'
Caption = 'Quick filter: Column = Focused'
ImageIndex = 61
ShortCut = 24625
OnExecute = QuickFilterClick
end
object actQuickFilterFocusedValue2: TAction
object actQuickFilterFocused2: TAction
Category = 'Data'
Caption = 'actQuickFilterFocusedValue2'
Caption = 'Quick filter: Column != Focused'
ImageIndex = 61
ShortCut = 24626
OnExecute = QuickFilterClick
end
object actQuickFilterFocusedValue3: TAction
object actQuickFilterFocused3: TAction
Category = 'Data'
Caption = 'actQuickFilterFocusedValue3'
Caption = 'Quick filter: Column > Focused'
ImageIndex = 61
OnExecute = QuickFilterClick
end
object actQuickFilterFocused4: TAction
Category = 'Data'
Caption = 'Quick filter: Column < Focused'
ImageIndex = 61
OnExecute = QuickFilterClick
end
object actQuickFilterFocused5: TAction
Category = 'Data'
Caption = 'Quick filter: Column LIKE Focused%'
ImageIndex = 61
OnExecute = QuickFilterClick
end
object actQuickFilterFocused6: TAction
Category = 'Data'
Caption = 'Quick filter: Column LIKE %Focused'
ImageIndex = 61
OnExecute = QuickFilterClick
end
object actQuickFilterFocused7: TAction
Category = 'Data'
Caption = 'Quick filter: Column LIKE %Focused%'
ImageIndex = 61
OnExecute = QuickFilterClick
end
object actQuickFilterPrompt1: TAction
Category = 'Data'
Caption = 'Quick filter: Column = Prompt'
ImageIndex = 58
ShortCut = 24627
OnExecute = QuickFilterClick
end
object actQuickFilterFocusedValue4: TAction
object actQuickFilterPrompt2: TAction
Category = 'Data'
Caption = 'actQuickFilterFocusedValue4'
ImageIndex = 61
Caption = 'Quick filter: Column != Prompt'
ImageIndex = 58
ShortCut = 24628
OnExecute = QuickFilterClick
end
object actQuickFilterFocusedValue5: TAction
object actQuickFilterPrompt3: TAction
Category = 'Data'
Caption = 'actQuickFilterFocusedValue5'
ImageIndex = 61
Caption = 'Quick filter: Column > Prompt'
ImageIndex = 58
OnExecute = QuickFilterClick
end
object actQuickFilterPrompt4: TAction
Category = 'Data'
Caption = 'Quick filter: Column < Prompt'
ImageIndex = 58
OnExecute = QuickFilterClick
end
object actQuickFilterPrompt5: TAction
Category = 'Data'
Caption = 'Quick filter: Column LIKE %Prompt%'
ImageIndex = 58
OnExecute = QuickFilterClick
end
object actQuickFilterPrompt6: TAction
Category = 'Data'
Caption = 'Quick filter: Column IS NULL'
ImageIndex = 58
OnExecute = QuickFilterClick
end
object actQuickFilterPrompt7: TAction
Category = 'Data'
Caption = 'Quick filter: Column IS NOT NULL'
ImageIndex = 58
OnExecute = QuickFilterClick
end
object actQuickFilterClipboard1: TAction
Category = 'Data'
Caption = 'Quick filter: Column = Clipboard'
ImageIndex = 4
ShortCut = 24629
OnExecute = QuickFilterClick
end
object actQuickFilterFocusedValue6: TAction
object actQuickFilterClipboard2: TAction
Category = 'Data'
Caption = 'actQuickFilterFocusedValue6'
ImageIndex = 61
Caption = 'Quick filter: Column != Clipboard'
ImageIndex = 4
ShortCut = 24630
OnExecute = QuickFilterClick
end
object actQuickFilterFocusedValue7: TAction
object actQuickFilterClipboard3: TAction
Category = 'Data'
Caption = 'actQuickFilterFocusedValue7'
ImageIndex = 61
ShortCut = 24631
Caption = 'Quick filter: Column > Clipboard'
ImageIndex = 4
OnExecute = QuickFilterClick
end
object actQuickFilterClipboard4: TAction
Category = 'Data'
Caption = 'Quick filter: Column < Clipboard'
ImageIndex = 4
OnExecute = QuickFilterClick
end
object actQuickFilterClipboard5: TAction
Category = 'Data'
Caption = 'Quick filter: Column LIKE %Clipboard%'
ImageIndex = 4
OnExecute = QuickFilterClick
end
object actQuickFilterClipboard6: TAction
Category = 'Data'
Caption = 'Quick filter: Column IN (Clipboard)'
ImageIndex = 4
OnExecute = QuickFilterClick
end
end
@ -3519,26 +3596,26 @@ object MainForm: TMainForm
object menuQuickFilter: TMenuItem
Caption = 'Quick Filter'
ImageIndex = 53
object menuQuickFilterFocusedValue1: TMenuItem
Action = actQuickFilterFocusedValue1
object menuQuickFilterFocused1: TMenuItem
Action = actQuickFilterFocused1
end
object menuQuickFilterFocusedValue2: TMenuItem
Action = actQuickFilterFocusedValue2
object menuQuickFilterFocused2: TMenuItem
Action = actQuickFilterFocused2
end
object menuQuickFilterFocusedValue3: TMenuItem
Action = actQuickFilterFocusedValue3
object menuQuickFilterFocused3: TMenuItem
Action = actQuickFilterFocused3
end
object menuQuickFilterFocusedValue4: TMenuItem
Action = actQuickFilterFocusedValue4
object menuQuickFilterFocused4: TMenuItem
Action = actQuickFilterFocused4
end
object menuQuickFilterFocusedValue5: TMenuItem
Action = actQuickFilterFocusedValue5
object menuQuickFilterFocused5: TMenuItem
Action = actQuickFilterFocused5
end
object menuQuickFilterFocusedValue6: TMenuItem
Action = actQuickFilterFocusedValue6
object menuQuickFilterFocused6: TMenuItem
Action = actQuickFilterFocused6
end
object menuQuickFilterFocusedValue7: TMenuItem
Action = actQuickFilterFocusedValue7
object menuQuickFilterFocused7: TMenuItem
Action = actQuickFilterFocused7
end
object QFvalues: TMenuItem
Caption = 'More values ...'
@ -3550,79 +3627,48 @@ object MainForm: TMainForm
object N11a: TMenuItem
Caption = '-'
end
object QF8: TMenuItem
Tag = 1
Caption = 'Column = ...'
ImageIndex = 58
OnClick = QuickFilterClick
object menuQuickFilterPrompt1: TMenuItem
Action = actQuickFilterPrompt1
end
object QF9: TMenuItem
Tag = 1
Caption = 'Column != ...'
ImageIndex = 58
OnClick = QuickFilterClick
object menuQuickFilterPrompt2: TMenuItem
Action = actQuickFilterPrompt2
end
object QF10: TMenuItem
Tag = 1
Caption = 'Column > ...'
ImageIndex = 58
OnClick = QuickFilterClick
object menuQuickFilterPrompt3: TMenuItem
Action = actQuickFilterPrompt3
end
object QF11: TMenuItem
Tag = 1
Caption = 'Column < ...'
ImageIndex = 58
OnClick = QuickFilterClick
object menuQuickFilterPrompt4: TMenuItem
Action = actQuickFilterPrompt4
end
object QF12: TMenuItem
Tag = 1
Caption = 'Column like ...'
ImageIndex = 58
OnClick = QuickFilterClick
object menuQuickFilterPrompt5: TMenuItem
Action = actQuickFilterPrompt5
end
object QF13: TMenuItem
Caption = 'Column IS NULL'
ImageIndex = 58
OnClick = QuickFilterClick
object menuQuickFilterPrompt6: TMenuItem
Action = actQuickFilterPrompt6
end
object QF14: TMenuItem
Caption = 'Column IS NOT NULL'
ImageIndex = 58
OnClick = QuickFilterClick
object menuQuickFilterPrompt7: TMenuItem
Action = actQuickFilterPrompt7
end
object N7a: TMenuItem
AutoHotkeys = maManual
Caption = '-'
end
object QF15: TMenuItem
Caption = 'Column = CLIPBOARD'
ImageIndex = 4
OnClick = QuickFilterClick
object menuQuickFilterClipboard1: TMenuItem
Action = actQuickFilterClipboard1
end
object QF16: TMenuItem
Caption = 'Column != CLIPBOARD'
ImageIndex = 4
OnClick = QuickFilterClick
object menuQuickFilterClipboard2: TMenuItem
Action = actQuickFilterClipboard2
end
object QF17: TMenuItem
Caption = 'Column > CLIPBOARD'
ImageIndex = 4
OnClick = QuickFilterClick
object menuQuickFilterClipboard3: TMenuItem
Action = actQuickFilterClipboard3
end
object QF18: TMenuItem
Caption = 'Column < CLIPBOARD'
ImageIndex = 4
OnClick = QuickFilterClick
object menuQuickFilterClipboard4: TMenuItem
Action = actQuickFilterClipboard4
end
object QF19: TMenuItem
Caption = 'Column LIKE %CLIPBOARD%'
ImageIndex = 4
OnClick = QuickFilterClick
object menuQuickFilterClipboard5: TMenuItem
Action = actQuickFilterClipboard5
end
object QF20: TMenuItem
Caption = 'Column IN ()'
ImageIndex = 4
OnClick = QuickFilterClick
object menuQuickFilterClipboard6: TMenuItem
Action = actQuickFilterClipboard6
end
object N21: TMenuItem
Caption = '-'

View File

@ -341,11 +341,6 @@ type
SynMemoFilter: TSynMemo;
TimerRefresh: TTimer;
Saveastextfile1: TMenuItem;
QF8: TMenuItem;
QF10: TMenuItem;
QF11: TMenuItem;
QF9: TMenuItem;
QF12: TMenuItem;
Exportdata2: TMenuItem;
N11a: TMenuItem;
DataInsertValue: TMenuItem;
@ -362,13 +357,6 @@ type
SynCompletionProposal: TSynCompletionProposal;
tabCommandStats: TTabSheet;
ListCommandStats: TVirtualStringTree;
QF13: TMenuItem;
QF14: TMenuItem;
QF15: TMenuItem;
QF16: TMenuItem;
QF17: TMenuItem;
QF18: TMenuItem;
QF19: TMenuItem;
N21: TMenuItem;
popupQuery: TPopupMenu;
MenuRun: TMenuItem;
@ -568,7 +556,6 @@ type
N9: TMenuItem;
ExportdatabaseasSQL1: TMenuItem;
Exportgridrows1: TMenuItem;
QF20: TMenuItem;
DataDefaultValue: TMenuItem;
actLaunchCommandline: TAction;
Launchcommandline1: TMenuItem;
@ -662,20 +649,46 @@ type
Attach1: TMenuItem;
actSynEditCompletionPropose: TAction;
ShowSQLcompletionproposal1: TMenuItem;
actQuickFilterFocusedValue1: TAction;
actQuickFilterFocusedValue2: TAction;
actQuickFilterFocusedValue3: TAction;
actQuickFilterFocusedValue4: TAction;
actQuickFilterFocusedValue5: TAction;
actQuickFilterFocusedValue6: TAction;
actQuickFilterFocusedValue7: TAction;
menuQuickFilterFocusedValue1: TMenuItem;
menuQuickFilterFocusedValue2: TMenuItem;
menuQuickFilterFocusedValue3: TMenuItem;
menuQuickFilterFocusedValue4: TMenuItem;
menuQuickFilterFocusedValue5: TMenuItem;
menuQuickFilterFocusedValue6: TMenuItem;
menuQuickFilterFocusedValue7: TMenuItem;
actQuickFilterFocused1: TAction;
actQuickFilterFocused2: TAction;
actQuickFilterFocused3: TAction;
actQuickFilterFocused4: TAction;
actQuickFilterFocused5: TAction;
actQuickFilterFocused6: TAction;
actQuickFilterFocused7: TAction;
actQuickFilterPrompt1: TAction;
actQuickFilterPrompt2: TAction;
actQuickFilterPrompt3: TAction;
actQuickFilterPrompt4: TAction;
actQuickFilterPrompt5: TAction;
actQuickFilterPrompt6: TAction;
actQuickFilterPrompt7: TAction;
actQuickFilterClipboard1: TAction;
actQuickFilterClipboard2: TAction;
actQuickFilterClipboard3: TAction;
actQuickFilterClipboard4: TAction;
actQuickFilterClipboard5: TAction;
actQuickFilterClipboard6: TAction;
menuQuickFilterFocused1: TMenuItem;
menuQuickFilterFocused2: TMenuItem;
menuQuickFilterFocused3: TMenuItem;
menuQuickFilterFocused4: TMenuItem;
menuQuickFilterFocused5: TMenuItem;
menuQuickFilterFocused6: TMenuItem;
menuQuickFilterFocused7: TMenuItem;
menuQuickFilterPrompt1: TMenuItem;
menuQuickFilterPrompt2: TMenuItem;
menuQuickFilterPrompt3: TMenuItem;
menuQuickFilterPrompt4: TMenuItem;
menuQuickFilterPrompt5: TMenuItem;
menuQuickFilterPrompt6: TMenuItem;
menuQuickFilterPrompt7: TMenuItem;
menuQuickFilterClipboard1: TMenuItem;
menuQuickFilterClipboard2: TMenuItem;
menuQuickFilterClipboard3: TMenuItem;
menuQuickFilterClipboard4: TMenuItem;
menuQuickFilterClipboard5: TMenuItem;
menuQuickFilterClipboard6: TMenuItem;
procedure actCreateDBObjectExecute(Sender: TObject);
procedure menuConnectionsPopup(Sender: TObject);
procedure actExitApplicationExecute(Sender: TObject);
@ -6428,16 +6441,15 @@ end;
procedure TMainForm.QuickFilterClick(Sender: TObject);
var
Filter, Val, Col: String;
Item : TMenuItem;
Act: TAction;
begin
// Set filter for "where..."-clause
if Sender is TAction then
Item := (Sender as TAction).ActionComponent as TMenuItem
else
Item := Sender as TMenuItem;
if (PageControlMain.ActivePage <> tabData) or (DataGrid.FocusedColumn = NoColumn) then
Exit;
Act := Sender as TAction;
Filter := '';
if Item.Tag = 1 then begin
if ExecRegExpr('Prompt\d+$', Act.Name) then begin
// Item needs prompt
Col := DataGrid.Header.Columns[DataGrid.FocusedColumn].Text;
Col := ActiveConnection.QuoteIdent(Col, False);
@ -6446,20 +6458,20 @@ begin
Col := Col + '::text';
end;
Val := DataGrid.Text[DataGrid.FocusedNode, DataGrid.FocusedColumn];
if InputQuery(_('Specify filter-value...'), Item.Caption, Val) then begin
if Item = QF8 then
if InputQuery(_('Specify filter-value...'), Act.Caption, Val) then begin
if Act = actQuickFilterPrompt1 then
Filter := Col + ' = ''' + Val + ''''
else if Item = QF9 then
else if Act = actQuickFilterPrompt2 then
Filter := Col + ' != ''' + Val + ''''
else if Item = QF10 then
else if Act = actQuickFilterPrompt3 then
Filter := Col + ' > ''' + Val + ''''
else if Item = QF11 then
else if Act = actQuickFilterPrompt4 then
Filter := Col + ' < ''' + Val + ''''
else if Item = QF12 then
else if Act = actQuickFilterPrompt5 then
Filter := Col + ' LIKE ''%' + Val + '%''';
end;
end else
Filter := Item.Hint;
Filter := Act.Hint;
if ExecRegExpr('\s+LIKE\s+''', Filter) then
Filter := Filter + ActiveConnection.LikeClauseTail;
@ -6948,6 +6960,7 @@ var
Node: PVirtualNode;
OldDataLocalNumberFormat: Boolean;
IncludedValues: TStringList;
Act: TAction;
const
CLPBRD : String = 'CLIPBOARD';
begin
@ -6978,13 +6991,13 @@ begin
end;
// Block 1: WHERE col IN ([focused cell values])
actQuickFilterFocusedValue1.Hint := '';
actQuickFilterFocusedValue2.Hint := '';
actQuickFilterFocusedValue3.Hint := '';
actQuickFilterFocusedValue4.Hint := '';
actQuickFilterFocusedValue5.Hint := '';
actQuickFilterFocusedValue6.Hint := '';
actQuickFilterFocusedValue7.Hint := '';
actQuickFilterFocused1.Hint := '';
actQuickFilterFocused2.Hint := '';
actQuickFilterFocused3.Hint := '';
actQuickFilterFocused4.Hint := '';
actQuickFilterFocused5.Hint := '';
actQuickFilterFocused6.Hint := '';
actQuickFilterFocused7.Hint := '';
Node := Grid.GetFirstSelected;
HasNullValue := False;
HasNotNullValue := False;
@ -7001,94 +7014,90 @@ begin
HasNotNullValue := True;
Value := Grid.Text[Node, Grid.FocusedColumn];
if IncludedValues.IndexOf(Value) = -1 then begin
actQuickFilterFocusedValue1.Hint := actQuickFilterFocusedValue1.Hint + esc(Value) + ', ';
actQuickFilterFocusedValue2.Hint := actQuickFilterFocusedValue2.Hint + esc(Value) + ', ';
actQuickFilterFocusedValue3.Hint := actQuickFilterFocusedValue3.Hint + Col + ' LIKE ''' + esc(Value, True, False) + '%'' OR ';
actQuickFilterFocusedValue4.Hint := actQuickFilterFocusedValue4.Hint + Col + ' LIKE ''%' + esc(Value, True, False) + ''' OR ';
actQuickFilterFocusedValue5.Hint := actQuickFilterFocusedValue5.Hint + Col + ' LIKE ''%' + esc(Value, True, False) + '%'' OR ';
actQuickFilterFocusedValue6.Hint := actQuickFilterFocusedValue6.Hint + Col + ' > ' + esc(Value) + ' OR ';
actQuickFilterFocusedValue7.Hint := actQuickFilterFocusedValue7.Hint + Col + ' < ' + esc(Value) + ' OR ';
actQuickFilterFocused1.Hint := actQuickFilterFocused1.Hint + esc(Value) + ', ';
actQuickFilterFocused2.Hint := actQuickFilterFocused2.Hint + esc(Value) + ', ';
actQuickFilterFocused3.Hint := actQuickFilterFocused3.Hint + Col + ' LIKE ''' + esc(Value, True, False) + '%'' OR ';
actQuickFilterFocused4.Hint := actQuickFilterFocused4.Hint + Col + ' LIKE ''%' + esc(Value, True, False) + ''' OR ';
actQuickFilterFocused5.Hint := actQuickFilterFocused5.Hint + Col + ' LIKE ''%' + esc(Value, True, False) + '%'' OR ';
actQuickFilterFocused6.Hint := actQuickFilterFocused6.Hint + Col + ' > ' + esc(Value) + ' OR ';
actQuickFilterFocused7.Hint := actQuickFilterFocused7.Hint + Col + ' < ' + esc(Value) + ' OR ';
IncludedValues.Add(Value);
end;
end;
Node := Grid.GetNextSelected(Node);
if Length(actQuickFilterFocusedValue1.Hint) > SIZE_MB then
if Length(actQuickFilterFocused1.Hint) > SIZE_MB then
Break;
end;
DataLocalNumberFormat := OldDataLocalNumberFormat;
if HasNotNullValue then begin
actQuickFilterFocusedValue1.Hint := Col + ' IN (' + Copy(actQuickFilterFocusedValue1.Hint, 1, Length(actQuickFilterFocusedValue1.Hint)-2) + ')';
actQuickFilterFocusedValue2.Hint := Col + ' NOT IN (' + Copy(actQuickFilterFocusedValue2.Hint, 1, Length(actQuickFilterFocusedValue2.Hint)-2) + ')';
actQuickFilterFocusedValue3.Hint := Copy(actQuickFilterFocusedValue3.Hint, 1, Length(actQuickFilterFocusedValue3.Hint)-4);
actQuickFilterFocusedValue4.Hint := Copy(actQuickFilterFocusedValue4.Hint, 1, Length(actQuickFilterFocusedValue4.Hint)-4);
actQuickFilterFocusedValue5.Hint := Copy(actQuickFilterFocusedValue5.Hint, 1, Length(actQuickFilterFocusedValue5.Hint)-4);
actQuickFilterFocusedValue6.Hint := Copy(actQuickFilterFocusedValue6.Hint, 1, Length(actQuickFilterFocusedValue6.Hint)-4);
actQuickFilterFocusedValue7.Hint := Copy(actQuickFilterFocusedValue7.Hint, 1, Length(actQuickFilterFocusedValue7.Hint)-4);
actQuickFilterFocused1.Hint := Col + ' IN (' + Copy(actQuickFilterFocused1.Hint, 1, Length(actQuickFilterFocused1.Hint)-2) + ')';
actQuickFilterFocused2.Hint := Col + ' NOT IN (' + Copy(actQuickFilterFocused2.Hint, 1, Length(actQuickFilterFocused2.Hint)-2) + ')';
actQuickFilterFocused3.Hint := Copy(actQuickFilterFocused3.Hint, 1, Length(actQuickFilterFocused3.Hint)-4);
actQuickFilterFocused4.Hint := Copy(actQuickFilterFocused4.Hint, 1, Length(actQuickFilterFocused4.Hint)-4);
actQuickFilterFocused5.Hint := Copy(actQuickFilterFocused5.Hint, 1, Length(actQuickFilterFocused5.Hint)-4);
actQuickFilterFocused6.Hint := Copy(actQuickFilterFocused6.Hint, 1, Length(actQuickFilterFocused6.Hint)-4);
actQuickFilterFocused7.Hint := Copy(actQuickFilterFocused7.Hint, 1, Length(actQuickFilterFocused7.Hint)-4);
end;
if HasNullValue then begin
if HasNotNullValue then begin
actQuickFilterFocusedValue1.Hint := actQuickFilterFocusedValue1.Hint + ' OR ';
actQuickFilterFocusedValue2.Hint := actQuickFilterFocusedValue2.Hint + ' AND ';
actQuickFilterFocusedValue3.Hint := actQuickFilterFocusedValue3.Hint + ' OR ';
actQuickFilterFocusedValue4.Hint := actQuickFilterFocusedValue4.Hint + ' OR ';
actQuickFilterFocusedValue5.Hint := actQuickFilterFocusedValue5.Hint + ' OR ';
actQuickFilterFocusedValue6.Hint := actQuickFilterFocusedValue6.Hint + ' OR ';
actQuickFilterFocusedValue7.Hint := actQuickFilterFocusedValue7.Hint + ' OR ';
actQuickFilterFocused1.Hint := actQuickFilterFocused1.Hint + ' OR ';
actQuickFilterFocused2.Hint := actQuickFilterFocused2.Hint + ' AND ';
actQuickFilterFocused3.Hint := actQuickFilterFocused3.Hint + ' OR ';
actQuickFilterFocused4.Hint := actQuickFilterFocused4.Hint + ' OR ';
actQuickFilterFocused5.Hint := actQuickFilterFocused5.Hint + ' OR ';
actQuickFilterFocused6.Hint := actQuickFilterFocused6.Hint + ' OR ';
actQuickFilterFocused7.Hint := actQuickFilterFocused7.Hint + ' OR ';
end;
actQuickFilterFocusedValue1.Hint := actQuickFilterFocusedValue1.Hint + Col + ' IS NULL';
actQuickFilterFocusedValue2.Hint := actQuickFilterFocusedValue2.Hint + Col + ' IS NOT NULL';
actQuickFilterFocusedValue3.Hint := actQuickFilterFocusedValue3.Hint + Col + ' IS NULL';
actQuickFilterFocusedValue4.Hint := actQuickFilterFocusedValue4.Hint + Col + ' IS NULL';
actQuickFilterFocusedValue5.Hint := actQuickFilterFocusedValue5.Hint + Col + ' IS NULL';
actQuickFilterFocusedValue6.Hint := actQuickFilterFocusedValue6.Hint + Col + ' IS NULL';
actQuickFilterFocusedValue7.Hint := actQuickFilterFocusedValue7.Hint + Col + ' IS NULL';
actQuickFilterFocused1.Hint := actQuickFilterFocused1.Hint + Col + ' IS NULL';
actQuickFilterFocused2.Hint := actQuickFilterFocused2.Hint + Col + ' IS NOT NULL';
actQuickFilterFocused3.Hint := actQuickFilterFocused3.Hint + Col + ' IS NULL';
actQuickFilterFocused4.Hint := actQuickFilterFocused4.Hint + Col + ' IS NULL';
actQuickFilterFocused5.Hint := actQuickFilterFocused5.Hint + Col + ' IS NULL';
actQuickFilterFocused6.Hint := actQuickFilterFocused6.Hint + Col + ' IS NULL';
actQuickFilterFocused7.Hint := actQuickFilterFocused7.Hint + Col + ' IS NULL';
end;
actQuickFilterFocusedValue1.Visible := HasNotNullValue or HasNullValue;
actQuickFilterFocusedValue2.Visible := HasNotNullValue or HasNullValue;
actQuickFilterFocusedValue3.Visible := HasNotNullValue;
actQuickFilterFocusedValue4.Visible := HasNotNullValue;
actQuickFilterFocusedValue5.Visible := HasNotNullValue;
actQuickFilterFocusedValue6.Visible := HasNotNullValue;
actQuickFilterFocusedValue7.Visible := HasNotNullValue;
actQuickFilterFocused1.Visible := HasNotNullValue or HasNullValue;
actQuickFilterFocused2.Visible := HasNotNullValue or HasNullValue;
actQuickFilterFocused3.Visible := HasNotNullValue;
actQuickFilterFocused4.Visible := HasNotNullValue;
actQuickFilterFocused5.Visible := HasNotNullValue;
actQuickFilterFocused6.Visible := HasNotNullValue;
actQuickFilterFocused7.Visible := HasNotNullValue;
IncludedValues.Free;
// Block 2: WHERE col = [ask user for value]
QF8.Hint := Col + ' = "..."';
QF9.Hint := Col + ' != "..."';
QF10.Hint := Col + ' > "..."';
QF11.Hint := Col + ' < "..."';
QF12.Hint := Col + ' LIKE "%...%"';
QF13.Hint := Col + ' IS NULL';
QF14.Hint := Col + ' IS NOT NULL';
actQuickFilterPrompt1.Hint := Col + ' = "..."';
actQuickFilterPrompt2.Hint := Col + ' != "..."';
actQuickFilterPrompt3.Hint := Col + ' > "..."';
actQuickFilterPrompt4.Hint := Col + ' < "..."';
actQuickFilterPrompt5.Hint := Col + ' LIKE "%...%"';
actQuickFilterPrompt6.Hint := Col + ' IS NULL';
actQuickFilterPrompt7.Hint := Col + ' IS NOT NULL';
// Block 3: WHERE col = [clipboard content]
Value := Trim(Clipboard.AsText);
if Length(Value) < SIZE_KB then begin
QF15.Enabled := true; QF15.Hint := Col + ' = ' + esc(Value);
QF16.Enabled := true; QF16.Hint := Col + ' != ' + esc(Value);
QF17.Enabled := true; QF17.Hint := Col + ' > ' + esc(Value);
QF18.Enabled := true; QF18.Hint := Col + ' < ' + esc(Value);
QF19.Enabled := true; QF19.Hint := Col + ' LIKE ''%' + esc(Value, True, False) + '%''';
QF20.Enabled := true; QF20.Hint := Col + ' IN (' + Value + ')';
actQuickFilterClipboard1.Enabled := true; actQuickFilterClipboard1.Hint := Col + ' = ' + esc(Value);
actQuickFilterClipboard2.Enabled := true; actQuickFilterClipboard2.Hint := Col + ' != ' + esc(Value);
actQuickFilterClipboard3.Enabled := true; actQuickFilterClipboard3.Hint := Col + ' > ' + esc(Value);
actQuickFilterClipboard4.Enabled := true; actQuickFilterClipboard4.Hint := Col + ' < ' + esc(Value);
actQuickFilterClipboard5.Enabled := true; actQuickFilterClipboard5.Hint := Col + ' LIKE ''%' + esc(Value, True, False) + '%''';
actQuickFilterClipboard6.Enabled := true; actQuickFilterClipboard6.Hint := Col + ' IN (' + Value + ')';
end else begin
QF15.Enabled := false; QF15.Hint := Col + ' = ' + CLPBRD;
QF16.Enabled := false; QF16.Hint := Col + ' != ' + CLPBRD;
QF17.Enabled := false; QF17.Hint := Col + ' > ' + CLPBRD;
QF18.Enabled := false; QF18.Hint := Col + ' < ' + CLPBRD;
QF19.Enabled := false; QF19.Hint := Col + ' LIKE %' + CLPBRD + '%';
QF20.Enabled := false; QF20.Hint := Col + ' IN (' + CLPBRD + ')';
actQuickFilterClipboard1.Enabled := false; actQuickFilterClipboard1.Hint := Col + ' = ' + CLPBRD;
actQuickFilterClipboard2.Enabled := false; actQuickFilterClipboard2.Hint := Col + ' != ' + CLPBRD;
actQuickFilterClipboard3.Enabled := false; actQuickFilterClipboard3.Hint := Col + ' > ' + CLPBRD;
actQuickFilterClipboard4.Enabled := false; actQuickFilterClipboard4.Hint := Col + ' < ' + CLPBRD;
actQuickFilterClipboard5.Enabled := false; actQuickFilterClipboard5.Hint := Col + ' LIKE %' + CLPBRD + '%';
actQuickFilterClipboard6.Enabled := false; actQuickFilterClipboard6.Hint := Col + ' IN (' + CLPBRD + ')';
end;
// Set captions from hints
for i:=0 to menuQuickFilter.Count-1 do begin
if (menuQuickFilter[i].Caption <> '-') // Not a separator
and (menuQuickFilter[i].Count = 0) // Not a menu with subitems
then begin
if menuQuickFilter[i].Action = nil then // Not some special item
menuQuickFilter[i].Caption := StrEllipsis(menuQuickFilter[i].Hint, 100)
else begin
TAction(menuQuickFilter[i].Action).Caption := StrEllipsis(menuQuickFilter[i].Hint, 100)
end;
end;
if menuQuickFilter[i].Action = nil then
Continue;
Act := menuQuickFilter[i].Action as TAction;
Act.Caption := StrEllipsis(Act.Hint, 100);
end;
end;