Перейти к содержанию
  • 0
Morfi

TCombobox и поиск.

Вопросы

Ребята, как правильно настроить или реализовать поиск в TCombobox (данные которого связаны через livebinding c БД) при помощи TSearchBox?

Поделиться сообщением


Ссылка на сообщение

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

Ответы на этот вопрос пока отсутствуют

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

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

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

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

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

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

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

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


  • Похожий контент

    • От Morfi
      Столкнулся с такой проблемой:
      Есть форма с TComboBox. Стиль форме (один из тех, который поставляется из коробки) задаю в run-time:
      procedure TFormEditorRoomAttribute.FormCreate(Sender: TObject); begin inherited; self.StyleBook := uAccommodationInventory.ReferenceAccommodationInventoryForm.StyleBook; end; Необходимо, чтобы TComboBox отображал items c bitmap. Заполняю TComboBox.ListBox так же в run-time (TListBoxItem.StyleLookup := 'listboxitemleftdetail'):
      var I: integer; FListBoxItem: TListBoxItem; begin //cbPicture: TCombobox; Self.cbPicture.BeginUpdate; Self.FRoomAttributePictures := ConnectionModule.DSServerModuleAccommodationClient.GetRoomAttributePictures; for I := 0 to Self.FRoomAttributePictures.Count - 1 do begin FListBoxItem := TListBoxItem.Create(Self.cbPicture); FListBoxItem.TagObject:= Self.FRoomAttributePictures[i]; FListBoxItem.ItemData.Text := Self.FRoomAttributePictures[i].ID.ToString; FListBoxItem.ItemData.Bitmap := Self.FRoomAttributePictures[i].GetBitmap; FListBoxItem.StyleLookup := 'listboxitemleftdetail'; Self.cbPicture.AddObject(FListBoxItem); end; Self.cbPicture.EndUpdate; end; TComboBox.DropDownKind выставляю в "Custom".
      Вроде как всё готово. Но получается вот такая картина.
      Создаю и отображаю форму, bitmap в TCombobox отображен:

      Раскрываю список, bitmaps так же отображаются:

      Но, как только выбираю один из items, происходит следующее:

      выбранный item не отображается, вообще!
      Долго ли, мало ли копался в исходниках TCombobox...
      В общем нашел некоторое решение данной проблемы. На событие TComboBox.OnClosePopup повесил код:
      begin //cbPicture: TCombobox; self.cbPicture.Selected.NeedStyleLookup; self.cbPicture.NeedStyleLookup; self.ApplyStyleLookup; end; Результат, выбранный item отображается в TCombobox:

       
      Теперь вопрос: Так и должно отрабатывать? Или что-то делаю не так?! Если что-то делаю не так, то как надо делать?
    • От Евгений Корепов
      Подскажите как добраться до кнопки очистки содержимого TSearchBox? Сам TSearchBox у TListView благодаря теме "Можно ли программно передать фокус на SearchBox и очистить строку?" доступен без проблем, но кнопка не обнаруживается в ListViewProducts.SearchEdit.Children.Items :-(
       
      Хочу изменить логику ее появления - сделать видимой всегда, когда есть текст в ListViewProducts.SearchEdit.Text. По умолчанию ее поведение малость загадочное - она исчезание при любой возможности (потеря фокуса, Resize, смена ориентации и т.д.). Что бы очистить поле поиска, пользователю приходится в данный момент производить следующие манипуляции:
      Кликнуть на SearchBox Ввести любой символ Нажать на появившуюся "кнопку с крестиком" Пока написан костыль на все возможные манипуляции - добавляю пробел в конец SearchBox, удаляю добавленный пробел, но иногда он не срабатывает и вводит пользователя в ступор.
      Пытался решить проблему добавлением отдельной кнопки очистки, с нормальным поведением, но опять же встает вопрос как навсегда скрыть родную кнопку.
      Сейчас пытаюсь отказаться от встроенного в TListView TSearchBox, сделать отдельное поле ввода поиска, но с наскока не пойму как передавать строку фильтрации в TListView.
    • От Alex Bozhko
      На форму кладём TTabControl с двумя табами. На одном из них помещаем ComboBox.
       
      В процедуре формируем item'ы. Примерно так:
      procedure TForm1.FormCombo(aCombo: TComboBox); var Item: TListBoxItem; i: integer; begin aCombo.BeginUpdate; aCombo.Items.Clear; for I := 0 to 2 do begin Item := TListBoxItem.Create(nil); Item.Text := 'Item '+IntToStr(I); Item.StyleLookup:= 'listboxitemstyle'; Item.Parent := aCombo; end; aCombo.EndUpdate; end; Вызываем при создании формы:
      procedure TForm1.FormCreate(Sender: TObject); begin FormCombo(ComboBox1); ComboBox1.ItemIndex:= 0; end;  и пересоздаем список item'ов после переключения табов.
      procedure TForm1.TabControl1Change(Sender: TObject); begin if TabControl1.TabIndex= 0 then begin FormCombo(ComboBox1); ComboBox1.ItemIndex:= 0; end; end; Естественно, устанавливаем активный item, после того как их список сформирован.
       
      В XE7 всё работает как часы.
      В XE8 - артефакт. После переключения табов активный Item - нулевой, но ComboBox не отображает его значение. Визуально это выглядит так, будто ItemIndex = -1.
       

       
      Проекты для XE7 и XE8 прикрепил.
       
      https://yadi.sk/d/4FGvgF-ti5dWz
    • От Belov.V.
      Столкнулся с такой ситуацией.   1) Заполняем TListBox; 2) Пользуемся поиском через TSearchBox; 3) Очищаем TSearchBox; 4) При попытке добавить любой новый элемент в TListBox, всегда возвращается индекс добавленного элемента "-1".   Накидал пример для экспериментов, упростив до безобразия (прикрепляю).   Как восстановить возможность получать индекс добавленного элемента?  
      Project1.zip
    • От Yarpda
      Обнаружилось странное поведение встроенного поиска у ListBox'a. В XE5 проблема была с регистром, в XE6 такой проблемы нет, а вот в XE7 поведение поиска стало не предсказуемым, описать которое сложно. В некоторых строках чувствительный к регистру, в некоторых нет, в некоторых вводишь даже с нужным регистром, показывает что не найдено.  Есть ли у кого-нибудь подобная проблема, или это частный случай?
    • От haword
      Глюки на глюках. Проблема в том что LowerCase который используется в TSearchBox не преобразовывает буквы в нижний регистр но зато вводимые данные в поиск преобразовываются в нижний регистр. 
        Lower := Text.Trim.ToLower; - введенный текст в нижем регистре LowerCase(X).Contains(Lower); не может найти текст так как регистр не поменялся для X   Есть в ListView строка с текстом "Ярослав". При вводе в поле поиска текста "Яро", он преобразовывается в нижний регистр и получается "яро".  далее ищется вхождение "яро" слове "Ярослав", не находит и поле попадает под фильтр.    Решение: заменяем  LowerCase(X).Contains(Lower); на X.ToLower.Contains(Lower);
    • От PFC
      Есть класс:
      class TMyObjectInt : public TObject { private: int Value; public: __fastcall TMyObjectInt (int _Value); __fastcall ~TMyObjectInt(); }; Есть ComboBox:
      for (int i = 1; i <= 10; i++) cbxItems->Items->AddObject(IntToStr(i), new TMyObjectInt(i)); Почему при вызове ->Clear() не вызываются деструкторы для TObject'ов? Казалось бы базовый TObject замечательно для этого подходит, даже деструктор у него виртуальным объявлен.
      Я могу написать свою функцию очистки, но это потенциально приводит к ошибкам, особенно если я отдаю указатель на ComboBox за пределы своей формы.
       
      Кстати, так же ведут себя и многие другие контролы, да и в VCL было так же.
    • От Aptem
      Здравствуйте.
       
      Как отключить регистрозависимость при использовании поиска через TSearchBox у TListBox? А если этого сделать нельзя, то как переопределить событие поиска?
       
      Спасибо.
    • От Nix0N
      Не отображаются кастомные item's при разворачивании списка TComboBox. Нет отображения конкретно в выпадающем списке, в самом TComboBox всё ок.  Пробовал перерисовку во время события onPopup, создание на различных родителях и т.д. - не помогло. Подскажите в чем может быть дело ? Спасибо.
       

       
      Чистый проект прилагается: RAD Studio XE6
      CustomComboBox.zip
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

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