В статье мы рассмотрим проблему выравнивания текста в элементах списка ListView в компоненте Firemonkey для среды разработки Delphi 10.4. Пользователь столкнулся с тем, что при изменении размера компонента ListView, текст в элементах списка выравнивается по левому краю, несмотря на попытки установить выравнивание текста в процедуре создания элементов списка.
Проблема
Пользователь хочет создать ListView в Firemonkey, где текст элементов списка выравнивается по левому или правому краю в зависимости от содержимого элемента. Однако, после изменения размера компонента ListView, все элементы списка выравниваются по левому краю.
Решение
Официальным ответом на проблему является необходимость изменить настройку ItemAppearance с ListItem на DynamicAppearance. Это позволяет вручную создать два объекта TextObjectAppearance в структуре компонента под ListView.ItemAppearance.Item, где один объект будет иметь выравнивание текста по левому краю (TextAlign=Leading), а другой — по правому (TextAlign=Trailing). Затем, при добавлении элемента в список, необходимо указать, какой объект выравнивания использовать, передав текст в соответствующий объект данных (Data['Text1'] или Data['Text2']).
Пример кода
procedure TForm1.FormCreate(Sender: TObject);
var
Item: TListViewItem;
c: Integer;
begin
procedure AddItem(No: Integer);
begin
Item := ListView1.Items.AddItem(No);
if No mod 2 = 0 then
Item.Data['Text1'] := 'Text item No ' + No.ToString
else
Item.Data['Text2'] := 'Text item No ' + No.ToString;
end;
for c := 0 to 9 do
AddItem(c);
end;
Описание файла проекта FMX
object Form1: TForm1
// ... остальные свойства формы ...
object ListView1: TListView
ItemAppearanceClassName = 'TDynamicAppearance'
ItemEditAppearanceClassName = 'TDynamicAppearance'
// ... другие свойства ListView ...
ItemAppearanceObjects.ItemObjects.ObjectsCollection = <
item
AppearanceObjectName = 'Text1'
AppearanceClassName = 'TTextObjectAppearance'
Appearance.TextAlign = Leading
end
item
AppearanceObjectName = 'Text2'
AppearanceClassName = 'TTextObjectAppearance'
Appearance.TextAlign = Trailing
end>;
// ... другие свойства ...
end;
// ... остальные объекты формы ...
end;
Заключение
Используя предложенный подход, разработчики могут создать ListView с различным выравниванием текста для элементов, которое будет корректно отображаться на всех платформах, поддерживаемых Firemonkey, и не потеряет свою настройку при изменении размера компонента.
Пользователь столкнулся с проблемой выравнивания текста в элементах списка `ListView` в компоненте Firemonkey для Delphi 10.4, когда после изменения размера компонента текст выравнивается по левому краю, несмотря на настройки.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.