• 0
ice donkey

ListView - фиксированный заголовок

Вопросы

Заполняю ListView в рантайме:

 

Цитата

var
  lvitem: TListViewItem;
while not Table1.Eof do
begin
  lvitem := ListView1.Items.Add;
  lvitem.Text := Table1.FieldByName('City').AsString;
  lvitem.Detail := Table1.FieldByName('Country').AsString;
  Table1.Next;
end;

 

LiveBindings не подходит, поэтому есть вопрос: а как задать фиксированный заголовок - чтобы в списке все Items, начинающиеся с буквы А были как бы объединены под одним заголовком А? Который  в свою очередь смещался бы только заголовком Б (с Items, которые на букву Б) и так далее.

 

Пример:

 

Изменено пользователем ice donkey

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


Ссылка на сообщение
Поделиться на другие сайты

6 ответов на этот вопрос

  • 0

на видео хорошо видно, что заголовок это отдельный элемент, не имеющий отношения к Items

и всю его логику вам нужно придумать самостоятельно

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


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Интересно - есть в FireMonkey хоть один компонент доведенный до логического конца или все они требуют доработки напильником? Наверное поэтому фреймворк назвали огонь-обезьяной - для процесса эволюции в нечто осмысленное ей постоянно требуется чей-то ручной труд.

 

 

А что - я первый кому в ListView понадобился прилипающий заголовок как в ListBox? Или кто-нибудь уже делал подобное?

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


Ссылка на сообщение
Поделиться на другие сайты
  • 0

огнеобезьяна это универсальный инструмент. в нем никогда не будет всех приблуд и придумок различных разработчиков интерфейсов. есть базовый функционал, с ним и работайте и делайте что хотите. если нет желания допиливать базовые компоненты, пользуйтесь нативными, если я не ошибаюсь в TMS есть компоненты которые используют нативные для отображения. Ну или пользуйтесь именно теми средами разработки которые предлагает сама ОС а не универсальными. 

Да и на последок - помните, никто вам ничего не должен ) хотите пользуйтесь хотите нет. 

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


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Обязательно допилю но прежде, чем допиливать - решил поинтересоваться у других, кто как выкручивается. И я ничего и не требовал - я лишь спросил. Если у вас столько злобы на самые обычные вопросы, то вам не стоит пользоваться форумом ;)

Насчет TMS = в них нет ничего нативного кроме компонент для iOS/OSX но и они безнадежно отстали в развитии, даже при их компиляции куча предупреждений о том что используемые функции в используемых SDK устарели а использовать заведомо <deprecated> слишком рискованно - приложение могут отозвать из магазина без объяснения причин, уже проходили через эту борьбу. Так что не вариант.

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


Ссылка на сообщение
Поделиться на другие сайты
  • 0
19 часов назад, ice donkey сказал:

Если у вас столько злобы на самые обычные вопросы, то вам не стоит пользоваться форумом ;)

это говорит тот кто пришел и все обосрал )

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


Ссылка на сообщение
Поделиться на другие сайты
  • 1

Раньше точно делали прилипание хедера в ЛистВью. К сожалению сейчас точно не могу сказать ничего на этот счет. Но точно было сделано. Но, как вариант, если речь идет об ios, то в TListView есть поддержка нативной реализации. И там реализованы выталкивающие хедеры

http://docwiki.embarcadero.com/Libraries/Tokyo/en/FMX.ListView.TListViewBase.NativeOptions

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


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


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

    • От gresaggr
      Добрый день.
      Как под FMX в ListView сделать подчеркивание Detail в рантайме?
      Пытался делать так:
      LV.ItemAppearanceObjects.ItemObjects.Detail.Font.Style := [TFontStyle.fsUnderline]
      но не срабатывает.
      P.S. Возможно это применить не ко всем строкам, а только к некоторым?
    • От Olexander Sagaydak
      Летом 2016 вопрос отображения объектов в ListView при создании Items уже обсуждался. Хочу ещё раз обсудить этот вопрос. А именно:
      Простой код 
      ListViewItem := ListView.Items.Add;
      ListViewItem.Objects.AccessoryObject.Visible := false; (или true, не важно)
      вторая строка не работает если до выполнения, ListView ни одного раза не отображался. Если же отображался хотя бы один раз - всё нормально.
      В предыдущих обсуждениях Krapotkin рекомендовал Resize и OnUpdateObjects. Если нет идей проще, то, конечно, воспользуюсь.  
       
    • От x11
      Если у элементов, идущих подряд одинаковый текст, то текст скрывается.
      Как это это отключить?
       
    • От x11
      Не понять, ни в справке найти, ни примеров, как получить текст из header.
      Как получить текст из какого-то элемента, есть пример:
      lvContacts.Items[li.Index].Objects.FindObjectT<TListItemText>('textTel').Text; а для заголовка ил подвала не нахожу примеров
    • От Erlan_krg
      Всем привет! Встретился с одной проблемой. Удаляю Item у ListView по нажатию кнопки, которая находится на ListViewItem
      procedure TfmAppointment.lvSelectedServicesButtonClick(const Sender: TObject;
        const AItem: TListItem; const AObject: TListItemSimpleControl);
      begin
          lvSelectedServices.BeginUpdate;
          if lvSelectedServices.ItemCount > 0 then
              lvSelectedServices.Items.Delete(AItem.Index);
          lvSelectedServices.EndUpdate;
      end;
      итем удаляется, но потом выскакивает ошибка Access violation at address 60BCB318 и то се бо се
       
      у ListView ItemAppearance выставлен на DynamicAppearance
      помимо родного объекта Text добавил еще один объект Text и кнопку
       
      но фишка в чем, если убрать дополнительный объект Text с ListWiewItem и удалить итем то ошибка не выскакивает)
       
      что за прикол?
    • От sinuke
      Доброго дня, форумчане
      Возникла проблема с тем, чтобы поменять местами два итема в ListView. ListView.Items не имеет метода Exchange, сами итемы не имеют метода Assign чтобы можно было один итем клонировать в другой / удалить / вставить
      У кого какие мысли? Как реализовать?
      Delphi 10.2 Tokyo
       
    • От x11
      Не могу понять, как записать текст в Footer text
       
       

    • От Mars M
      Загружаю большой список в ListView, время загрузки где то 5-7 секунд.
      Это много, по этому переделал что бы список загружался динамически, как к концу пролистывается, подгружаются новые данные.
      Все бы хорошо, но вот ScrollBar при загрузке новых данных меняет размер и позицию. 
      Это не очень нравиться
      Можно как то заранее настроить его размер под конечное число итемов?
      Или может как то по другому сделать.
    • От Rusland
      Delphi Tokyo
      ListView->ItemAppearance->ItemAppearance=DynamicAppearance
      Есть ImageList c 3 картинками.
      Добавляю item-ы в ListView:
      procedure TForm1.Button1Click(Sender: TObject); var i:integer; Lvi: TListViewItem; begin LsvObjects.BeginUpdate; LsvObjects.Items.Clear; try for i:=0 to 100 do begin Lvi := LsvObjects.Items.Add; Lvi.Tag := i; Lvi.Data['ObjectText'] := 'ObjectText '+i.ToString; Lvi.Data['StateText'] := 'StateText '+i.ToString; Lvi.Data['ConnectText'] := 'ConnectText '+i.ToString; end; finally LsvObjects.EndUpdate; end; end; в UpdateObjects рандомно выбираю картинку:
      procedure TForm1.LsvObjectsUpdateObjects(const Sender: TObject; const AItem: TListViewItem); var ... oConnectImage: TListItemImage; r: integer; begin r:=Random(ImageList1.Count); oConnectImage:=aItem.Objects.FindDrawable('ConnectImage') as TListItemImage; if (oConnectImage<>nil) then oConnectImage.ImageIndex:=r; ... end; В Windows все нормально. А вот что я вижу на планшетах:
      На Dexp:   
      На Lenovo:
       
      Картинки могут появиться, а могут и нет. Как исправить ситуацию? Вот сам проект.
      Про Berlin добавлю вопрос позже.
    • От x11
      Добавил TTextButtonObjectAppearance. А как выполнить click/tap?
      Предполагается, что будет 2-3 кнопки с разными процедурами.
      На форме лежит TActionList и нужно к кнопками привязать действия, но у кнопки нет Action. Даже событий нет
       
      Вопрос в догонку. А в
  • Последние посетители   0 пользователей онлайн

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