Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.31;
Скачать: CL | DM;

Вниз

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

 
Wish ©   (2004-10-12 19:17) [0]

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


 
begin...end ©   (2004-10-12 19:23) [1]

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

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


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

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


 
Wish ©   (2004-10-12 20:16) [3]

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


 
jack128 ©   (2004-10-12 20:33) [4]

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


 
Wish ©   (2004-10-12 20:38) [5]


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

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


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

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


 
jack128 ©   (2004-10-12 21:02) [7]

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


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


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


 
jack128 ©   (2004-10-12 21:23) [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];


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


> 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;


 
GuAV ©   (2004-10-12 21:57) [11]

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


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

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

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


 
begin...end ©   (2004-10-12 22:08) [13]


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


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

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

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


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

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

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


 
jack128 ©   (2004-10-12 22:25) [15]

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

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


 
jack128 ©   (2004-10-12 22:25) [16]

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


 
begin...end ©   (2004-10-12 22:30) [17]

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

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

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

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



Страницы: 1 вся ветка

Текущий архив: 2004.10.31;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.028 c
3-1094811335
VictorT
2004-09-10 14:15
2004.10.31
Распределение записей в таблице по часам в сутках


1-1098044136
dms_main
2004-10-18 00:15
2004.10.31
Консольное приложение


1-1098000661
Ralf
2004-10-17 12:11
2004.10.31
Текстовые редакторы


1-1097605805
quickblack
2004-10-12 22:30
2004.10.31
Смена картинки на рабочем столе.


3-1096880740
Начинающий освоение БД
2004-10-04 13:05
2004.10.31
Массив в поле таблицы