• 0
Равиль Зарипов (ZuBy)

ListView Color Helper

Вопросы

Привет Всем!

Много тем на форуме про раскраску TListView, нашел в интернете решение и доработал его

Вот что получилось

2015-10-23 19-54-21 Скриншот экрана.png   2015-12-24 15-10-35 Form4.png

LV_Helper.zip                                                                  ColorListView.zip

Доступно для Seattle

  ListView1.SetColorItemSelected(TAlphaColorRec.Orangered); //выделенный
  ListView1.SetColorItemFill(TAlphaColorRec.Gray); // обычный цвет Item
  ListView1.SetColorItemFillAlt(TAlphaColorRec.Lightgrey); // альтернативный цвет Item
  ListView1.SetColorBackground(TAlphaColorRec.Black); // цвет самого TListView
  ListView1.SetColorItemSeparator(TAlphaColorRec.Lightgray); // Линия разделения Item'ов

  ListView1.SetColorText(TAlphaColorRec.Red); // Обычный текст
  ListView1.SetColorTextSelected(TAlphaColorRec.White); // выделенный текст
  ListView1.SetColorTextDetail(TAlphaColorRec.Yellow); // текст доп. инфы
  ListView1.SetColorTextHeader(TAlphaColorRec.Green); // текст заголовка
  ListView1.SetColorTextHeaderShadow(TAlphaColorRec.Lightgray); // тень текста

  ListView1.SetColorButtonText(TAlphaColorRec.Orange); // цвет текста кнопки
  ListView1.SetColorButtonTextPressed(TAlphaColorRec.Orangered); // цвет нажатой кнопки

добавлено в Berlin

    ListView1.SetColorPullRefresh(TAlphaColorRec.Orange);
    ListView1.SetColorPullRefreshIndicator(TAlphaColorRec.Orangered);
    ListView1.SetColorStretchGlow(TAlphaColorRec.Lime);

ModernListView.rar

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

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


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

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

  • 0

Добрый день подскажите  а можно установить конкретный  цвет  для  одного итема ? при заполнении  циклом ? 

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


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

Добрый день подскажите  а можно установить конкретный  цвет  для  одного итема ? при заполнении  циклом ? 

нет, но могу скинуть измененный ListView с покраской конкретных Item'ов

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


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

 

Добрый день подскажите  а можно установить конкретный  цвет  для  одного итема ? при заполнении  циклом ? 

нет, но могу скинуть измененный ListView с покраской конкретных Item'ов

 

спасибо буду очень благодарен  ) 

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


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

post-59-0-03655500-1450948247.png

версия для Seatle ColorListView.zip

 

весь код для отрисовки кастомного цвета 

1) копируем себе и открываем FMX.ListView

2) Ctrl+F -> DrawItemsFill

3) Вставляем код

// отрисовываем кастомный цвет...........................................
// procedure TListViewBase.DrawItemsFill(const StartItem.................
 if TListViewItem(ListItem).Data['aUseCustomColor'].AsBoolean then
    FBrush.Color := TListViewItem(ListItem).Data['aCustomColor'].AsInteger;
// ......................................................................

после

if FAlternatingColors and (AltIndex mod 2 = 1) then
  FBrush.Color := FItemStyleFillAltColor;

4) Подключаем в своём проекте после стандартного FMX.ListView

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

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


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

версия для берлина

  • Раскраска ListView
  • Кастомный цвет для определенного Item'a
  • Отступы для разделителей 
  • Определение Index'a верхнего Item'a
  • Кол-во видимых элементов

Показано как можно реализовать интерфейс день/ночь

ModernListView.rar

 

Изменено пользователем ZuBy
обновил вложение

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


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

ZuBy, почему-то в примере текст с кнопок пропадает (похоже после нажатия Изменить цвет и при переключении Switch-а).

PS. Windows/Android

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

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


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

ZuBy, почему-то в примере текст с кнопок пропадает (похоже после нажатия Изменить цвет и при переключении Switch-а).

PS. Windows/Android

да заметил, решение пока не нашел. не понятно почему текст начал пропадать

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


Ссылка на сообщение
Поделиться на другие сайты
  • 0
В 07.07.2016 в 14:22, Rusland сказал:

ZuBy, почему-то в примере текст с кнопок пропадает (похоже после нажатия Изменить цвет и при переключении Switch-а).

PS. Windows/Android

можете проверить у себя:

  • кидаем TListView на форму
  • ставим anchors или align
  • ItemApperance = ImageListItemBottomDetailRightButton
  • запускаем и делаем ресайз формы
  • текст пропадает с кнопки
  • Profit?

У меня это воспроизводится в голом проекте, FMX.ListView.pas не изменен

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


Ссылка на сообщение
Поделиться на другие сайты
  • 0
В 09.07.2016 в 10:25, ZuBy сказал:
В 07.07.2016 в 14:22, Rusland сказал:

ZuBy, почему-то в примере текст с кнопок пропадает (похоже после нажатия Изменить цвет и при переключении Switch-а).

PS. Windows/Android

можете проверить у себя:

  • кидаем TListView на форму
  • ставим anchors или align
  • ItemApperance = ImageListItemBottomDetailRightButton
  • запускаем и делаем ресайз формы
  • текст пропадает с кнопки
  • Profit?

У меня это воспроизводится в голом проекте, FMX.ListView.pas не изменен

добавление Item'ов

  for I := 0 to 20 do
  begin
    AItem := ListView1.Items.Add;
    with AItem do
    begin
        Text := 'Item Random ' + I.ToString;
        Detail := 'Detail for ' + Text;
        ButtonText := 'Custom Color';
        Bitmap := Image1.Bitmap;
    end;
    ListView1.Adapter.ResetView(AItem); // fix TextButton ( TListViewTextButtonFix )
  end;

устраняем багу

procedure TForm1.ListView1UpdatingObjects(const Sender: TObject; const AItem: TListViewItem; var AHandled: Boolean);
begin
  TListViewTextButtonFix.Rendering(Sender, AItem, AHandled); // fix
end;

FMX.ListView.TextButtonFix.zip

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


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

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

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

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

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

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

Войти

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

Войти

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

    • От SIARHEI RAHOUSKI
      Как задать свои цвета круговой диаграмме и тень под ней ? 
    • От SIARHEI RAHOUSKI
      Как изменить цвет Label?  не работает
      Label1.Color := clBlue;  
    • От 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. Возможно это применить не ко всем строкам, а только к некоторым?
    • От ice donkey
      Заполняю ListView в рантайме:
       
       
      LiveBindings не подходит, поэтому есть вопрос: а как задать фиксированный заголовок - чтобы в списке все Items, начинающиеся с буквы А были как бы объединены под одним заголовком А? Который  в свою очередь смещался бы только заголовком Б (с Items, которые на букву Б) и так далее.
       
      Пример:
       
    • От 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; а для заголовка ил подвала не нахожу примеров
    • От Митя Гринюк
      Когда мы на Андроид устройстве клавишей переходим в TaskManager (Менеджер запущенных приложений), мы видим наши Недавние или Запущенные приложения в виде прямоугольников/квадратов.
      А именно: квадратный "скриншот" вместимости приложения и над "скриншотом приложения" размещается TopBar, на котором отображается некоторая информация (ярлык, название приложения и цвет, читаемый с приложения, а именно colorPrimary приложения).   {Android L}
      В моём приложении, независимо от colorPrimary/colorPrimaryDark, TopBar имеет черный цвет.
      Можно ли это как-то изменить?
      Embarcadero RAD 10.2 Tokyo, Delphi.
      (использую модуль, который окрашивает даже StatusBar)
      Ниже прикреплены изображения для ознакомления с терминами.
       
       
    • От 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 и удалить итем то ошибка не выскакивает)
       
      что за прикол?
  • Последние посетители   0 пользователей онлайн

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