anchor.diff:    if FListMap.TryGetValue(Sender as TComponent, listBoxData) then
       FilterListBox(listBoxData.SearchBox)
     else if FTreeMap.TryGetValue(TComponent(Sender), treeData) then
  -    DoSearch(treeData, treeData.SearchBox.Text);
  +    StartSearch(treeData.SearchBox);
   end; { TDLUIXVCLFloatingFrame.HandleSearchBoxTimer }
   
   procedure TDLUIXVCLFloatingFrame.HandleVTFocusChanged(Sender: TBaseVirtualTree;
  
positive.code: procedure TDLUIXVCLFloatingFrame.DoSearch(const treeData: IDLUIXVCLTreeStorage;
    const searchTerm: string);
  var
    vt: TVirtualStringTree;
  begin
    treeData.Coordinates := (FActionMap[treeData.SearchBox] as IDLUIXSearchAction).SearchProc(searchTerm);
    vt := treeData.VirtualTree;
    vt.BeginUpdate;
    try
      vt.Clear;
      vt.OnInitNode := InitSearchNode;
      vt.OnInitChildren := InitSearchNodeChildren;
      vt.OnGetText := GetSearchNodeText;
      vt.NodeDataSize := SizeOf(IInterface);
      vt.RootNodeCount := treeData.Coordinates.Count;
    finally vt.EndUpdate; end;
    HandleVTFocusChanged(vt, vt.FocusedNode, -1);
  end; { TDLUIXVCLFloatingFrame.DoSearch }
  
  procedure TDLUIXVCLFloatingFrame.DrawCustomButton(button: TOwnerDrawBitBtn;
  
negative.code:   FTimer := ATimer;
  end; { TDLUIXVCLTreeStorage.Create }
  
  function TDLUIXVCLTreeStorage.GetAbortSearch: boolean;
  begin
    Result := FAbortSearch;
  end; { TDLUIXVCLTreeStorage.GetAbortSearch }
  
  function TDLUIXVCLTreeStorage.GetCoordinates: ICoordinates;
  begin
    Result := FCoordinates;
  end; { TDLUIXVCLTreeStorage.GetCoordinates }
  
  function TDLUIXVCLTreeStorage.GetInSearch: boolean;
  begin
    Result := FInSearch;
  end; { TDLUIXVCLTreeStorage.GetInSearch }
  
  function TDLUIXVCLTreeStorage.GetSearchBox: TSearchBox;
  begin
    Result := FSearchBox;
  