Вопрос начинающего (наверное) по TFormStyles

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Вопрос начинающего (наверное) по TFormStyles

Сообщение shraibikus » 08.10.2011 13:02:08

Много лет уже знаком с Паскалем, однако с этим моментом как-то не приходилось сталкиваться. А теперь не знаю как быть и откуда начинать искать (возможно не правильно формулирую вопрос).

Итак ситуация, есть входящие данные вида (упрощаю информацию, для понимания):
Код: Выделить всё
fsBold : boolean;
fsItalic : boolean;
fsUnderline : boolean;


Причем именно в таком виде и никак иначе. Как теперь мне это указать в: Font.Styles?

Ведь это система флагов и там значения указываются так, например:
Код: Выделить всё
Font.Styles := [fsBold, fsItalic];


Могу-ли я организовать дополнение этого флага, а не затирание старого (НЕ правильный код, для примера):

Код: Выделить всё
if fsBold then Font.Styles := [fsBold];
if fsItalic then Font.Styles := Font.Styles + [fsItalic];
if fsUnderline then Font.Styles := Font.Styles + [fsUnderline];


???

И как это делать правильно?
Аватара пользователя
shraibikus
новенький
 
Сообщения: 36
Зарегистрирован: 22.09.2009 16:22:42
Откуда: Столица деревень

Re: Вопрос начинающего (наверное) по TFormStyles

Сообщение Maxizar » 08.10.2011 13:47:18

Возможно я не очень хорошо понял, но отвечу в общем. Styles имеет тип Множества:
Код: Выделить всё
  TFontStyle = (fsBold, fsItalic, fsStrikeOut, fsUnderline);
  TFontStyles = set of TFontStyle;

И вам просто нужно понять, как с этими множествами работать.
Для добавления элемента в множество, можно воспользоваться операцией плюс '+':
Код: Выделить всё
Font.Styles + [fsItalic];

для исключения минусом. Также посмотрите в сторону функций Include и Exclude, но это для переменных (нужен адрес переменной), так как вам нужно работать со свойством (property), то операции плюс и минус наверное самое то.
Ну вот можно еще тут посмотреть:
http://helpstudio.h1.ru/books/d4/d4_3/__51.htm
Описание множества в Delphi
Maxizar
постоялец
 
Сообщения: 385
Зарегистрирован: 20.03.2010 19:48:14

Re: Вопрос начинающего (наверное) по TFormStyles

Сообщение shraibikus » 08.10.2011 19:00:48

Maxizar огромное спасибо!
Оказывается, этот код правильный:

shraibikus писал(а):
Код: Выделить всё
if fsBold then Font.Styles := [fsBold];
if fsItalic then Font.Styles := Font.Styles + [fsItalic];
if fsUnderline then Font.Styles := Font.Styles + [fsUnderline];



я его просто не пробовал, почему-то подумалось, что это не будет работать. :oops:

З.Ы. очередной раз убеждаюсь, что многие ответы скрыты в самом вопросе :lol:
Аватара пользователя
shraibikus
новенький
 
Сообщения: 36
Зарегистрирован: 22.09.2009 16:22:42
Откуда: Столица деревень


Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 26

Рейтинг@Mail.ru