Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
3-39208
kronprince
2003-02-21 19:20
2003.03.13
Странный глюк у InterBase компонент :(


1-39276
Aleksandr
2003-03-03 10:21
2003.03.13
Объясните мне про потоки и защищенность их методов!


14-39497
Zz_
2003-02-25 12:00
2003.03.13
Новости дня


1-39355
Snap
2003-03-01 21:48
2003.03.13
Doc generator


7-39615
maxim2
2003-01-16 06:29
2003.03.13
Зная дискриптор окно можно ли узнать его класс





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский