Override VirtualTree's incremental search event, make it case insensitive, and apply that event in FixVT to various lists and grids, which have IncrementalSearch enabled. Fixes issue #1605.

This commit is contained in:
Ansgar Becker
2010-01-17 10:50:47 +00:00
parent 8ba9fb7b77
commit 0d8653db6a
4 changed files with 22 additions and 0 deletions

View File

@ -1240,6 +1240,7 @@ begin
FTreeSelect.OnHotChange := DoTreeSelectHotChange;
FTreeSelect.OnPaintText := DoTreeSelectPaintText;
FTreeSelect.OnExit := DoEndEdit;
FixVT(FTreeSelect);
FMainControl := FTreeSelect;
FMemoHelp := TMemo.Create(FParentForm);

View File

@ -2515,6 +2515,9 @@ begin
VT.OnGetHint := MainForm.vstGetHint;
VT.ShowHint := True;
VT.HintMode := hmToolTip;
// Apply case insensitive incremental search event
if VT.IncrementalSearch <> isNone then
VT.OnIncrementalSearch := Mainform.vstIncrementalSearch;
end;

View File

@ -613,6 +613,8 @@ type
PVirtualNode; Column: TColumnIndex; var Result: Integer);
procedure vstHeaderDraggedOut(Sender: TVTHeader; Column: TColumnIndex;
DropPosition: TPoint);
procedure vstIncrementalSearch(Sender: TBaseVirtualTree; Node: PVirtualNode; const SearchText: String;
var Result: Integer);
procedure DBtreeFocusChanged(Sender: TBaseVirtualTree; Node: PVirtualNode;
Column: TColumnIndex);
procedure DBtreeDblClick(Sender: TObject);
@ -5648,6 +5650,21 @@ begin
end;
procedure TMainForm.vstIncrementalSearch(Sender: TBaseVirtualTree; Node: PVirtualNode;
const SearchText: String; var Result: Integer);
var
CellText: String;
VT: TVirtualStringTree;
begin
// Override VT's default incremental search behaviour. Make it case insensitive.
VT := Sender as TVirtualStringTree;
if VT.FocusedColumn = NoColumn then
Exit;
CellText := VT.Text[Node, VT.FocusedColumn];
Result := StrLIComp(PChar(CellText), PChar(SearchText), Length(SearchText));
end;
{**
A cell in ListCommandStats gets painted.
Draw a progress bar on it to visualize its percentage value.

View File

@ -75,6 +75,7 @@ object frmTableEditor: TfrmTableEditor
Header.Font.Style = []
Header.Options = [hoColumnResize, hoDblClickResize, hoDrag, hoVisible]
Images = MainForm.PngImageListMain
IncrementalSearch = isAll
PopupMenu = popupColumns
TabOrder = 2
TreeOptions.AutoOptions = [toAutoDropExpand, toAutoScrollOnExpand, toAutoTristateTracking]