Форум: "Основная";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];
ВнизКак сохранить в 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.038 c