• 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

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


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

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

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

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

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

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

Войти

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

Войти

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

    • От SIARHEI RAHOUSKI
      Как изменить сам Header, скролы ? Я открывал стайл блок, но всё что смог изменить там это цвет полей и всё.

    • От Dmitry Stolyarov
      Добрый день, подскажите, пжл, новичку...
      Есть ListView и ImageList с двумя картинками. В ListView Item добавлен Image. ListView заполняю из БД и пытаюсь вывести картинку в зависимости от значения поля БД, но в независимости от значения БД выводится одна и та же картинка.. Такое нельзя провернуть?
      procedure TForm6.ListViewNAMEUpdateObjects(const Sender: TObject;
        const AItem: TListViewItem);
        var IItem:TListItemImage;
      begin
       IItem:= aItem.Objects.FindDrawable('Image4') as TListItemImage;
      if (IItem<>nil) then
      with FDQuery1 do
       begin
       First;
       while not Eof do
        begin
         if FDQuery1FK_PRICE.AsInteger = 1 then begin
          IItem.ImageIndex:=1
         end else
            begin
               IItem.OwnsBitmap := True;
           IItem.ImageIndex:=0;
            end;
         Next;
        end;
       end;
      end;
       
    • От 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 при загрузке новых данных меняет размер и позицию. 
      Это не очень нравиться
      Можно как то заранее настроить его размер под конечное число итемов?
      Или может как то по другому сделать.
  • Последние посетители   0 пользователей онлайн

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