Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi

Дата: 02.06.00


Как сохранить обьект TFont в реестре/ini/файле/таблице базы данных?


Нужно сохранять атрибуты шрифта (имя, размер и т.п.) а не сам обьект TFont. После считывания этой информации следует проверить существует ли такой шрифт, прежде чем его использовать. Чтобы не показаться голословным дополню ответ Borland'а своим примером сохранения/чтения шрифта в/из реестра

Uses ... Registry;

procedure SaveFontToRegistry(Font : TFont; SubKey : String);
Var
   R : TRegistry;
   FontStyleInt : byte;
   FS : TFontStyles;
begin
   R:=TRegistry.Create;
   try
       FS:=Font.Style;
       Move(FS,FontStyleInt,1);
       R.OpenKey(SubKey,True);
       R.WriteString('Font Name',Font.Name);
       R.WriteInteger('Color',Font.Color);
       R.WriteInteger('CharSet',Font.Charset);
       R.WriteInteger('Size',Font.Size);
       R.WriteInteger('Style',FontStyleInt);
   finally
       R.Free;
   end;
end;

function ReadFontFromRegistry(Font : TFont; SubKey : String) : boolean;
Var
   R : TRegistry;
   FontStyleInt : byte;
   FS : TFontStyles;
begin
   R:=TRegistry.Create;
   try
       result:=R.OpenKey(SubKey,false); if not result then exit;
       Font.Name:=R.ReadString('Font Name');
       Font.Color:=R.ReadInteger('Color');
       Font.Charset:=R.ReadInteger('CharSet');
       Font.Size:=R.ReadInteger('Size');
       FontStyleInt:=R.ReadInteger('Style');
       Move(FontStyleInt,FS,1);
       Font.Style:=FS;
   finally
       R.Free;
   end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   If FontDialog1.Execute then
   begin
       SaveFontToRegistry(FontDialog1.Font,'Delphi Kingdom\Fonts');
   end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
   NFont : TFont;
begin
   NFont:=TFont.Create;
   if ReadFontFromRegistry(NFont,'Delphi Kingdom\Fonts') then
   begin //здесь добавить проверку - существует ли шрифт
       Label1.Font.Assign(NFont);
       NFont.Free;
   end;
end;


Источник: Дельфи. Вокруг да около.


Чтобы вернуться оцените этот вопрос/ответ:
   

Прислать свои комментарии


Новое на сайте

Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо