Перейти к содержанию
Fire Monkey от А до Я
  • 0

TSearchBox кнопка очистки


Евгений Корепов

Вопрос

Подскажите как добраться до кнопки очистки содержимого TSearchBox? Сам TSearchBox у TListView благодаря теме "Можно ли программно передать фокус на SearchBox и очистить строку?" доступен без проблем, но кнопка не обнаруживается в ListViewProducts.SearchEdit.Children.Items :-(

 

Хочу изменить логику ее появления - сделать видимой всегда, когда есть текст в ListViewProducts.SearchEdit.Text. По умолчанию ее поведение малость загадочное - она исчезание при любой возможности (потеря фокуса, Resize, смена ориентации и т.д.). Что бы очистить поле поиска, пользователю приходится в данный момент производить следующие манипуляции:

  1. Кликнуть на SearchBox
Ввести любой символ Нажать на появившуюся "кнопку с крестиком"

Пока написан костыль на все возможные манипуляции - добавляю пробел в конец SearchBox, удаляю добавленный пробел, но иногда он не срабатывает и вводит пользователя в ступор.

Пытался решить проблему добавлением отдельной кнопки очистки, с нормальным поведением, но опять же встает вопрос как навсегда скрыть родную кнопку.

Сейчас пытаюсь отказаться от встроенного в TListView TSearchBox, сделать отдельное поле ввода поиска, но с наскока не пойму как передавать строку фильтрации в TListView.

Ссылка на комментарий

Рекомендуемые сообщения

  • 0
procedure TMainForm.SearchChanelEditChangeTracking(Sender: TObject);
var
  Lower: string;
begin
  Lower := SearchChanelEdit.Text.Trim.ToLower;
    if Lower = '' then
    begin
      if Assigned(listView.Items.Filter) then
      begin
        // Clear filter
        listView.Items.Filter := nil;
      end;
    end
    else
    begin
      // Start or update filter
      listView.ItemIndex := -1;
      listView.Items.Filter := function(X: string): Boolean
        begin
          Result := Lower.IsEmpty or X.ToLower.Contains(Lower);
        end;
    end;


end;

Передача фильтра в ListView

Изменено пользователем bigjorj
Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...