Форум — Ответы     (  К темам )
 ?  Za: Помогите сохранить FontDlg->Style в ini-файле (11-04-2003 02:20:31)
Как (наверное каждый) новичек сделал простенький редактор. Присобачил FontDialog к форме. Стал сохранять размер шрифта в ini-файле как int, название как AnsiString, а как сохранить долбаный Style (типа fsBold, fsItalic, ...) не знаю. Помогите плз! Заранее спасибо
 Andrew (11-04-2003 11:54:40)
Ну... никогда таким вопросом не задавался, но можно сделать прямо в лоб: ;)
TFont *CaptionFont = new TFont();
//Параметры стиля запоминается как bool значения
//Установку параметра шрифта проверяем через Contains
//Запись параметров шрифта
ini->WriteString(Key, "CFN", CaptionFont->Name);//
ini->WriteInteger(Key, "CFS", CaptionFont->Size);//
ini->WriteInteger(Key, "CFC", (int)CaptionFont->Color);//
ini->WriteInteger(Key, "CFE", (int)CaptionFont->Charset);//
ini->WriteBool(Key, "CFB", CaptionFont->Style.Contains(fsBold));
ini->WriteBool(Key, "CFI", CaptionFont->Style.Contains(fsItalic));//
ini->WriteBool(Key, "CFU", CaptionFont->Style.Contains(fsUnderline));//
ini->WriteBool(Key, "CFO", CaptionFont->Style.Contains(fsStrikeOut));//

//Чтение параметров шрифта
//ПРи чтении внвчале сбрасываем все параметры шрифта, а потом добавляем
//требуемый в множество в соответствии с прочитанным bool параметром
//Может можно и удалять эелементы из множества,
//но что-то в Help'е описывают только добавление.
CaptionFont->Style.Clear();//Сбросить параметры шрифта
CaptionFont->Name = ini->ReadString(Key, "CFN", CaptionFont->Name);//
CaptionFont->Size = ini->ReadInteger(Key, "CFS", 12);//
CaptionFont->Color = (TColor) ini->ReadInteger(Key, "CFC", clBlack);//
CaptionFont->Charset = (unsigned char)ini->ReadInteger(Key, "CFE", 204);//
if (ini->ReadBool(Key, "CFB", false))//
CaptionFont->Style = CaptionFont->Style << fsBold;//
if (ini->ReadBool(Key, "CFI", false))//
CaptionFont->Style = CaptionFont->Style << fsItalic;//
if (ini->ReadBool(Key, "CFU", false))//
CaptionFont->Style = CaptionFont->Style << fsUnderline;//
if (ini->ReadBool(Key, "CFO", false))//
CaptionFont->Style = CaptionFont->Style << fsStrikeOut;//

//P.S.: по идее должно работать и просто CaptionFont->Style << fsItalic;
//вместо CaptionFont->Style = CaptionFont->Style << fsItalic;
//Экспериментируй :)))
//P.P.S: хотя сам работу с множествами попробовал,
//а то по работе не сталкивался, а без цели пробовать староват стал ;)