![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сохранить в 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)