Форум: "Основная";
Текущий архив: 2003.03.13;
Скачать: [xml.tar.bz2];
ВнизКак сохранить свойство 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c