уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

Тема работы со шрифтами в FireMonkey, а теперь уже в FM Platform живет. Началось все с того, что решил я перенести один свой проектик на Android. Помните была такая программка «Хронометр«? Вот её-то я и решил перенести на мобильные рельсы.

Можно было бы и клиент для DelphiFedds перенести, но, прикинув сколько в каком проекте кода надо будет изменить, а то и вообще выкинуть, пришел к выводу, что перенести «Хронометр» будет значительно проще — вся «сложность» только в том, чтобы переписать «морду», а все остальное должно прекрасно заработать в Android, в том числе и БД SQLite. Вот в процессе работы над интерфейсом своего первого мобильного приложения я и натолкнулся снова на работу со шрифтами.

Захотелось реализовать мне такую простецкую вещь — если пользователь отмечает в списке задачу как «завершенную», то текст этой задачи становится зачеркнутым. Я полагаю, что многие видели такое поведение в списках задач…ну, например, в тех же Google Tasks. Всё достаточно просто…но, думаю, что для тех, кто переходит на Delphi XE5, например, из Delphi XE2, может оказаться не совсем очевидно :) Итак, по крайней мере, в Delphi XE5 у элементов TListBoxItem появилось свойство Font:

Fotnt_property

 

Это просто отлично и замечательно. Вначале пробуем сменить стиль в design-time — сделаем текст у элемента жирным и перечеркнутым:

Fotnt_property_2Запускаем программку на устройстве:

Screenshot_2013-10-12-21-47-01

 

Как видите, все замечательно. Теперь, по логике вещей, я могу в run-time сделать вот так:

procedure TForm5.Button1Click(Sender: TObject);
var LI: TListBoxItem;
begin
  LI:=TListBoxItem.Create(ListBox1);
  LI.Parent:=ListBox1;
  LI.Text:='ListBoxItem_2';
  Li.Font.Style:=[TFontStyle.fsStrikeOut,TFontStyle.fsBold]
end;

И получить ровно тот же самый результат. Разве не так? Оказывается нет. Результат выполнения этого кода представлен на скриншоте ниже:

Screenshot_2013-10-12-21-51-55

 

Как видите, элемент списка добавился, но стиль текста вообще не изменился. В чем загадка? Первое, что вспомнилось на тему стилей текста в FireMonkey — это статья «Установка параметров текста в Fire Monkey 2» в блоге Сергея Рощина (разработчика платформы FM (ex/ FireMonkey)). Судя по информации из этой статьи, решение проблемы может быть следующим: изменяем у создаваемого элемента списка свойство StyledSettings таким образом, чтобы самим задавать стиль текста и только после этого меняем его (стиль текста) у элемента. То есть, преобразуем код выше следующим образом:

procedure TForm5.Button1Click(Sender: TObject);
var LI: TListBoxItem;
begin
  [...]
  LI.StyledSettings:=[TStyledSetting.ssSize, TStyledSetting.ssFamily, TStyledSetting.ssFontColor,TStyledSetting.ssOther];
  LI.Text:='ListBoxItem_2';
  Li.Font.Style:=[TFontStyle.fsStrikeOut,TFontStyle.fsBold];
  [...]
end;

Проверяем:

Screenshot_2013-10-12-22-04-52

 

Ровно то же, что и в приведенном выше коде, происходит и в design-time, т.е. как только вы меняете что-либо в свойство Font — автоматически изменяется и свойство StyledSettins. Можете проверить это — выставить в свойстве StyledSettings все значения в True, потом изменить, например, стиль текста и посмотреть, что будет содержать после этого действия StyledSettins.

Остается только добавить, что, если Вы решите задавать все свойства текста самостоятельно, то по умолчанию в Android используются шрифты из семейства Droid (Droid Sans, Droid Sans Mono, Droid Serif, Droid Logo) или Roboto. Roboto есть в списке шрифтов:

Fotnt_property_3

Удачных вам разработок под Android в Delphi XE5 и до новых встреч на страницах блога WebDelphi :)

Книжная полка

Описание Подробно рассматривается библиотека FM, позволяющая создавать полнофункциональное программное обеспечение для операционных систем Windows и OS X, а также для смартфонов и планшетных компьютеров, работающих под управлением Android и iOS
купить книгу delphi на ЛитРес
Описание: Рассмотрены практические вопросы по разработке клиент-серверных приложений в среде Delphi 7 и Delphi 2005 с использованием СУБД MS SQL Server 2000, InterBase и Firebird. Приведена информация о теории построения реляционных баз данных и языке SQL. Освещены вопросы эксплуатации и администрирования СУБД.
купить книгу delphi на ЛитРес
0 0 голоса
Рейтинг статьи
уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
Подписаться
Уведомить о
2 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии
Алексей
Алексей
16/10/2013 03:12

Спасибо за статью, было бы замечательно, если бы Вы рассказали как использовать свой шрифт в приложении для андроид.
Мои попытки реализовать посредством ресурсов, пока не дали результатов, но, возможно, я что-то делаю не так.

samsim
08/01/2014 05:27

Хорошо сделано. Я уже долго работаю в среде Delphi XE5 и могу сказать что лучше и проще пока никто не придумал.