На главную
Подписка
Новости


Рейтинг@Mail.ru











Главная / DELPHI / Часто задаваемые вопросы и ответы на них / Редакторы текста, отчеты / Как сохранить обьект TFont в реестре/ini/файле/таблице базы данных? Сделать домашней страницей Добавить в избранное Написать писмо

Как сохранить обьект 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;


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


Copyright ©   "Мастера DELPHI"   E-mail:   delphi@mastak.com  http://www.delphimaster.ru
Источник получения информации: http://www.delphimaster.ru
Hosted by uCoz