Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сохранить в INI свойства TFont'a типа Bold или Italic?


Wish ©   (2004-10-12 19:17:00) 

Как сохранить в INI свойства TFont'a типа Boldили Italic? Они все хранятся в Style, поэтому я не знаю как их сохранить.


begin...end   (2004-10-12 22:30:00) [1]

Блин, неточность:

> procedure SaveStyle;
> var
>  Ini: TIniFile;
> begin
>  Ini := TIniFile.Create('c:\Config.ini');
>  try  

procedure SaveStyle;
begin
 IniFile := TIniFile.Create('c:\Config.ini');
 try
...и далее по тексту.

Спать пора :-)


jack128   (2004-10-12 22:25:00) [2]

jack128 ©   (12.10.04 22:25) [15]
казалось


jack128   (2004-10-12 22:25:00) [3]

Юрий Зотов ©   (12.10.04 22:16) [14]
До этого еще далеко.  Да и бессмыслено сохранять в iniфайл "так же, как пишет сама Delphi"

begin...end ©   (12.10.04 22:08) [13]
угу - я ошибся. Просто мне козалась, что множества к целому нельзя приводить..


Юрий Зотов   (2004-10-12 22:16:00) [4]

ObjectBynaryToText - при записи.
ObjectTextToBynary - при чтении.

И храним весь фонт целиком. Точно так же, как пишет его и сама Delphi.


begin...end   (2004-10-12 22:08:00) [5]


> [12] jack128 ©   (12.10.04 22:05)


> Прямое приведение к байту недопустимо.

Почему? (Не спорю, просто спрашиваю.)

P.S. Кстати, сейчас только проверил - работает.


jack128   (2004-10-12 22:05:00) [6]

GuAV ©   (12.10.04 21:57) [11]
специально для фонта? Или все таки применил единый механизм для сохранения десятков разных классов? ;-)

begin...end ©   (12.10.04 21:42) [10]
Byte({...}.Font.Style));
Прямое приведение к байту недопустимо.


GuAV   (2004-10-12 21:57:00) [7]

jack128 ©   (12.10.04 20:33) [4]
Я делал именно так. через RTTI (но без TReader/TWriter)


begin...end   (2004-10-12 21:42:00) [8]


> Wish

Вообще см. [9], но мне уже кажется, что я какой-то изврат предложил...

Можно ещё так попробовать сохранить всё сразу (не знаю, может и неправильно, но попрошу не пинать):

var
 IniFile: TIniFile;

procedure LoadStyle;
var
 Res: Byte;
begin
 IniFile := TIniFile.Create('c:\Config.ini');
 try
   Res := IniFile.ReadInteger('Font', 'Style', 0);
   {...}.Font.Style := TFontStyles(Res);
 finally
   IniFile.Free;
 end
end;

procedure SaveStyle;
var
 Ini: TIniFile;
begin
 Ini := TIniFile.Create('c:\Config.ini');
 try
   IniFile.WriteInteger('Font', 'Style', Byte({...}.Font.Style));
 finally
   IniFile.Free;
 end
end;


jack128   (2004-10-12 21:23:00) [9]

Wish ©   (12.10.04 21:04) [8]
if iniFile.ReadBool('FontStyle', 'Bold', False) then
 Font.Style := Font.Style + [fsBold]
else
 Font.Style := Font.Style - [fsBold];


Wish   (2004-10-12 21:04:00) [10]


> IniFile.WriteBool('FontStyle', 'Bold', fsBold in Font.Style)


jack128   (2004-10-12 21:02:00) [11]

Wish ©   (12.10.04 20:56) [6]
Ты сначала покажи как сохранял..


Wish   (2004-10-12 20:56:00) [12]

Ну пожалуйста.


Wish   (2004-10-12 20:38:00) [13]


> так же как сохранил..

Я только начинающий, подскажите кодом please!


jack128   (2004-10-12 20:33:00) [14]

Гаврила ©   (12.10.04 19:24) [2]
ага. это даже не из пушки по воробьям - это нейтронной бомбой по камару ;-)
Wish ©   (12.10.04 20:16) [3]
так же как сохранил..


Wish   (2004-10-12 20:16:00) [15]

Ок, сохранить удалось, а как теперь загрузить?


Гаврила   (2004-10-12 19:24:00) [16]

так как шрифт - потомок TPersistent, можно воспользоваться RTTI для получения и установки этого свойства прямо строкой  как в инспекторе


begin...end   (2004-10-12 19:23:00) [17]

Первое, что приходит в голову:

IniFile.WriteBool('FontStyle', 'Bold', fsBold in Font.Style)


Наверх

Титульная страница Поиск, карта сайта Написать письмо