Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
3-1096880740
Начинающий освоение БД
2004-10-04 13:05
2004.10.31
Массив в поле таблицы


14-1096643463
Lord de Mon
2004-10-01 19:11
2004.10.31
Где взять исходники?


9-1088681094
lifo
2004-07-01 15:24
2004.10.31
DirectInput


1-1097821422
Senti
2004-10-15 10:23
2004.10.31
Как в Exele проверить значение ячейки и заменить ее


3-1096626257
Chuk45
2004-10-01 14:24
2004.10.31
Locate и Query





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский