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

ListViewItem Transpatent, как?


daemon.init

Вопрос

XE7

У самого ListView есть свойство Transpatent у Item'ов не нашёл.

Думал чз

ListView.Items.Item[0].Objects.TextObject.Opacity

но видно не то что нужно. Это да для текста.

 

Потом открыл FMX.ListView в нём есть процедура

procedure TCustomListView.DrawItemsFill ...

в ней при отрисовке на Canvas заменил цвет FBrush.Color на цвет плюс альфа канал например $30FFFFFF работает или цвет или альфа в чёрный цвет, прозрачности нет.

Если есть у компонента прозрачность, то как у итемов включить?

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

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

  • 0

тут от примененного стиля зависит

я наоборот, долго мучился, чтобы  сделать непрозрачным фон у ListBox

Transparent компонента есть а у Item'ов нет, если у них только через стили то и для компонента можно бы было там поменять, странно это всё

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

У стиля листвью есть объект "itembackground" : TColorObject. Выставляете у него свойство "Color" в нужное вам значение с альфа каналом (как пример $11FF0000) и будет вам счастье. 

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

я сделал с помощью хелпера, ну вернее с инета спер и под 10 версию приспособил. 

 

добавляем хелпер

 

  TListViewHelper = class helper for TListViewBase
    procedure SetItemStyleFillAltColour(Colour : TAlphaColor);
    procedure SetBackgroundItemStyleColor(Colour : TAlphaColor);
    procedure SetBackgroundStyleColor(Colour : TAlphaColor);
    procedure SetSelectionStyleColor(Colour : TAlphaColor);
  end;
 
процедуры
 
procedure TListViewHelper.SetBackgroundItemStyleColor(Colour: TAlphaColor);
begin
  TListViewBase(self).FItemStyleFillColor := Colour;
end;
 
procedure TListViewHelper.SetBackgroundStyleColor(Colour: TAlphaColor);
begin
  TListViewBase(self).FBackgroundStyleColor := Colour;
end;
 
procedure TListViewHelper.SetItemStyleFillAltColour(Colour: TAlphaColor);
begin
  TListViewBase(self).FItemStyleFillAltColor := Colour;
end;
 
procedure TListViewHelper.SetSelectionStyleColor(Colour: TAlphaColor);
begin
  TListViewBase(self).FSelectionStyleColor := Colour;
end;
 
вызов
 
если в OnCreate формы
 
    ВашЛистВью.ApplyStyleLookup; // загружаем стиль
    ВашЛистВью.SetBackgroundItemStyleColor($20ffffff); // устанавливаем цвет, первые два байта альфаканал остальные цвет. можно так TAlphaColors.red
 
Изменено пользователем haword
Ссылка на комментарий
  • 0

haword, не могли бы вы выложить целиком весь unit?
 
У меня не получается
 
Bezymiannyi.png
Вроде компилируется, но цвет не меняется


procedure TFrmMain.FormCreate(Sender: TObject);
begin
  LsvAlarms.SetBackgroundItemStyleColor(TAlphaColors.red); 
end;

Оказывается все работает, просто сначала надо заполнить ListView и лишь затем вызывать эту процедуру :)

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

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

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

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

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

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

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

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

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

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