Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.13;
Скачать: CL | DM;

Вниз

Как сохранить свойство TFont.Style в ini файле...   Найти похожие ветки 

 
SeNtiMeL ©   (2003-03-03 00:14) [0]

Проблема заключается в том, что я не могу сохранить это свойство. Т.е. могу простым перебиранием типа if label.font.style = [fsBold] then Ini.WriteString("dd","ss","bold");
Но т.к. комбинаций может быть много типа [fsbold,fsItalic...] причем одновременно.
Как можно сохранить точное свойство стиля шрифта ?????


 
Makhanev A.S. ©   (2003-03-03 00:41) [1]

четыре строки булевсокго типа в ini (WriteBoolean):


[style]
Bold=1
Italic=0
и т.д.


 
SeNtiMeL ©   (2003-03-03 02:00) [2]

а если свойство неординарное например [fsBold,fsItalic,FsUnderline]
как прочитать его ? Простым переборм IF ????
Как получить значение для приведенного стиля...
Ведь если делать тупой беребор всех комбинаций стилей, то это займет много времени ? может есть функция для возврата этих значение в виде true или false ?


 
PVOzerski ©   (2003-03-03 02:13) [3]

Set - это переменная, занимающая несколько байт. Вот и представьте эти несколько байт как несколько чисел (а сколько их - зависит от диапазона допустимых значений, если повезет, может и одного longint"а хватить) - через absolute, перекрывающиеся поля записи или приведение типов указателей. Остальное, IMHO, очевидно.


 
Makhanev A.S. ©   (2003-03-03 02:17) [4]

Ну почему комбиаций?
"Истина в простоте".
Если умеете добавлять/удалять 1 элемент в/из множество(а), то всё очень просто:


{обнуляем наше множество стилей}
Font.Style := [];
{читаем 4 булевые переменные}
Bold := ReadBoolean(...,"Bold",...);
Italic := ReadBoolean(...,"Italic",...);
{заполняем наш стиль в 4 хода}
if Bold then Font.Style := Font.Style + [fsBold];
if Italic then Font.Style := Font.Style + [fsItalic];
...

Итого - 4 оператора IF.
Очень советую почитать про такой тип данных, как множество (который set of...)


 
SeNtiMeL ©   (2003-03-03 02:39) [5]

Что то я не пойму, как мне извлечь в переменные bold,litalic,underline
стиль: [fsBold,fsItalic,fsUnderline] ? Если заранее не известна какакая комбинация стиля будет ?


 
SeNtiMeL ©   (2003-03-03 02:41) [6]

Прочитать значения из INI лекго, но как записать эти значения в него ????


 
SeNtiMeL ©   (2003-03-03 02:53) [7]

Я сам разобрался вот пример кода:

if fsBold in label.font.style then Ini.WriteInteger("font","bold",1)
else
Ini.WriteInteger("font","bold",0);
if fsItalic in label.font.style then Ini.WriteInteger("font","Italic",1)
else
Ini.WriteInteger("font","Italic",0);

и так для всех 4 типов стилей....





 
PVOzerski ©   (2003-03-03 03:07) [8]

В D3, как оказалось, весь set of tFormStyle занимает 1 байт (я так понимаю, что это зависит от {$Zn} при компиляции VCL). Так что можно смело пользоваться средствами чтения/записи целых чисел (способы конвертации set/byte/set см. выше)


 
theodor_iv   (2003-03-03 05:53) [9]

2 PVOzerski: размер множества зависит только от количества элементов в базовом типе. На него не влияет директива компиляции {$Zn}. TFontStyles будет всегда занимать один байт.
Для того, чтобы записывать и читать сразу весь Font.Style, можно использовать следующий код:

// запись
Ini.WriteInteger("Font", "Style", byte(Form1.Font.Style));
// чтение
Form1.Font.Style := TFontStyles(byte(Ini.ReadInteger("Font", "Style", 0)));



Страницы: 1 вся ветка

Текущий архив: 2003.03.13;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.012 c
7-39620
ruslan_as
2003-01-16 12:45
2003.03.13
Тип материнки


7-39602
SeF
2003-01-18 01:41
2003.03.13
Файловые потоки в NTFS


3-39182
mfender
2003-02-20 16:16
2003.03.13
MS Access + Delphi


14-39525
Дмитрий К.К.
2003-02-26 06:22
2003.03.13
Именинники 26 февраля


1-39268
Zelius
2003-03-01 16:05
2003.03.13
Помогите разобратсья со временем модификации файла!