| Sl@Sh | 
   Отправлено: 08.11.2004, 22:26 | 
 
 
 | 
 
  
Мастер участка 
 
Группа: Участник 
Сообщений: 383 
  
  
 | 
 Здравствуйте уважаемые коллеги ! Помогите разобраться, как можно стиль шрифта (жирный и.т.п) присвоить переменной. Ну в инспекторе там параметры fsBold и.т.п принимают значение или false или true (т.е. bool). 
Конечно можно было бы через if..., но нельзя ли как-то использовать просто присвоение ?
  
Заранее спасибо !
 | 
  | 
| Nick | 
| Отправлено: 09.11.2004, 08:45 | 
 
 
 | 
 
  
Машинист паровоза 
 
Группа: Участник 
Сообщений: 247 
  
  
 | 
 вот кусочек
  
if (pFIBDS_PriceNAL->AsString == "+") AFont->Style = AFont->Style>> fsItalic; 
else AFont->Style = AFont->Style << fsItalic; 
 | 
  | 
| Sl@Sh | 
| Отправлено: 09.11.2004, 16:45 | 
 
 
 | 
 
  
Мастер участка 
 
Группа: Участник 
Сообщений: 383 
  
  
 | 
 Спасибо конечно за ответ, но я спрашивал как это без if сделать.
  
Мне просто нужно шрифт записать в ini файл и не получается записать его стиль. if тут не подходит  
 | 
  | 
| Konstantine | 
| Отправлено: 09.11.2004, 17:33 | 
 
 
 | 
  
Мастер участка 
 
Группа: Модератор 
Сообщений: 545 
  
  
 | 
 а чем не подходит?
  
ну по идее можешь преобразить к ИНТу и сохранить,.... потом обратно
 | 
  | 
| AVC | 
| Отправлено: 09.11.2004, 17:36 | 
 
 
 | 
  
Ветеран 
 
Группа: Модератор 
Сообщений: 1583 
  
  
 | 
 Разобрать set на части, каждую записать. При чтении — все наоборот.  | 
  | 
| Sl@Sh | 
| Отправлено: 13.11.2004, 21:28 | 
 
 
 | 
 
  
Мастер участка 
 
Группа: Участник 
Сообщений: 383 
  
  
 | 
 to AVC :
  
А можно подробнее ?
 | 
  | 
| AVC | 
| Отправлено: 15.11.2004, 09:32 | 
 
 
 | 
  
Ветеран 
 
Группа: Модератор 
Сообщений: 1583 
  
  
 | 
 Вот, выдрал из приложения. 
| CODE  |   
PACKAGE void __fastcall IniFontSave (AnsiString sect, TFont *fnt) 
{ 
int i;
  
Windows_XY->WriteInteger (sect, "FntColor", fnt->Color); 
Windows_XY->WriteInteger (sect, "FntSize",  fnt->Size ); 
Windows_XY->WriteString  (sect, "FntName",  fnt->Name ); 
i = 0; 
if (fnt->Style.Contains(fsBold)) i |= 01; 
if (fnt->Style.Contains(fsItalic)) i |= 02; 
Windows_XY->WriteInteger (sect, "FntStyle", i); 
}
  
//---------------------------------------------------------------------------
  
PACKAGE void __fastcall IniFontRestore (AnsiString sect, TFont *fnt) 
{ 
int i;
  
fnt->Color = (TColor)(Windows_XY->ReadInteger (sect, "FntColor", fnt->Color)); 
fnt->Size = Windows_XY->ReadInteger (sect, "FntSize",  fnt->Size ); 
fnt->Name = Windows_XY->ReadString  (sect, "FntName",  fnt->Name ); 
i = 0; 
if (fnt->Style.Contains(fsBold)) i |= 01; 
if (fnt->Style.Contains(fsItalic)) i |= 02; 
i = Windows_XY->ReadInteger (sect, "FntStyle", i); 
if (i & 01) fnt->Style = fnt->Style << fsBold; 
if (i & 02) fnt->Style = fnt->Style << fsItalic; 
} 
 |  
  
Можно сказать от сердца отрываю. Один из самых древних кусков, который не менялся на протяжении N лет.  | 
  | 
| Sl@Sh | 
| Отправлено: 15.11.2004, 14:43 | 
 
 
 | 
 
  
Мастер участка 
 
Группа: Участник 
Сообщений: 383 
  
  
 | 
 Большое спасибо      
 | 
  | 
| Sl@Sh | 
| Отправлено: 17.11.2004, 09:55 | 
 
 
 | 
 
  
Мастер участка 
 
Группа: Участник 
Сообщений: 383 
  
  
 | 
 Я решил сам попробовать что-то сотворить, и вот получилось :
  
| CODE  |   
bool fBold, fItalic, fUnderline, fStrikeOut;
  
if (Font->Style == Font->Style+TFontStyles()<<fsBold) fBold = true; else fBold = false; 
if (Font->Style == Font->Style+TFontStyles()<<fsItalic) fItalic = true; else fItalic = false; 
if (Font->Style == Font->Style+TFontStyles()<<fsUnderline) fUnderline = true; else fUnderline = false; 
if (Font->Style == Font->Style+TFontStyles()<<fsStrikeOut) fStrikeOut = true; else fStrikeOut = false; 
 |  
 
  
Конечно это коряво, но я думаю использовать можно
  
Спасибо всем, кто отвечал !!!!!!
  
Отредактировано Sl@Sh — 17/11/2004, 10:59
 | 
  | 
| Guest | 
| Отправлено: 17.11.2004, 10:42 | 
 
 
 | 
  
Не зарегистрирован
 
 
 
 
 
  
  
 | 
 Зачем такое сравнение 
if (Font->Style == Font->Style+TFontStyles()<
когда у set'а есть нормальный метод Contains ? 
(это примерно как чесать правой рукой левое ухо через затылок)
  
запись может быть проще 
bool isBold = Font->Style.Containts()fsBold); 
bool isItalic ...
  
avc  | 
  | 
| Sl@Sh | 
| Отправлено: 17.11.2004, 17:42 | 
 
 
 | 
 
  
Мастер участка 
 
Группа: Участник 
Сообщений: 383 
  
  
 | 
 Я же сказал, что мой способ — корявый  
 | 
  | 
| AVC | 
| Отправлено: 17.11.2004, 18:24 | 
 
 
 | 
  
Ветеран 
 
Группа: Модератор 
Сообщений: 1583 
  
  
 | 
 дык я просто и предлагал вам поправить у себя в строке bool ....    | 
  |