Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Сохранить объект TFont в реестре

Delphi , ОС и Железо , Реестр

Сохранить объект TFont в реестре


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
    SaveFontToRegistry(FontDialog1.Font, 'Delphi Kingdom\Fonts');
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;

Программный код, предназначенный для сохранения и загрузки настроек шрифта из реестра Windows с помощью Delphi.

SaveFontToRegistry Процедура сохраняет информацию о шрифте в реестре под указанной подпапкой. 1. Создает объект TRegistry, используемый для взаимодействия с реестром. 2. Извлекает стиль (жирный, курсив и т.д.) из предоставленного шрифта и конвертирует его в байтовое значение с помощью функции Move. 3. Открывает указанную подпапку в реестре, если она не существует, а затем записывает следующие свойства шрифта: * Имя шрифта * Цвет * Кодировка * Размер * Стиль (конвертированный байтовое значение) 4. Наконец, освобождает объект реестра.

ReadFontFromRegistry Функция читает информацию о шрифте из реестра под указанной подпапкой и присваивает ее предоставленному шрифту. 1. Создает объект TRegistry и открывает указанную подпапку, если она существует. 2. Если подпапка не существует, функция выходит из себя. 3. Читает следующие свойства шрифта из реестра: * Имя шрифта * Цвет * Кодировка * Размер * Стиль (конвертирует байтовое значение обратно в TFontStyles с помощью функции Move) 4. Наконец, присваивает эти значения предоставленному шрифту и освобождает объект реестра.

Button1Click Процедура вызывается при клике кнопки Button1. Она запускает диалог FontDialog, позволяя пользователю выбрать шрифт. Если пользователь выбирает шрифт, она сохраняет настроенные параметры шрифта в реестре под указанной подпапкой с помощью SaveFontToRegistry.

Button2Click Процедура вызывается при клике кнопки Button2. Она читает настройки шрифта из реестра под указанной подпапкой с помощью ReadFontFromRegistry. Если настройки шрифта найдены и успешно прочитаны, она присваивает эти настройки новому шрифту (NFont) и затем присваивает этот шрифт свойству Font у Label1.

Возможные улучшения 1. Обработка ошибок: код не обрабатывает потенциальные ошибки, которые могут возникнуть при взаимодействии с реестром или загрузке/сохранении шрифтов. 2. Валидация: рекомендуется валидировать ввод пользователя, например, проверять, был ли успешно выбран шрифт в Button1Click. 3. Организация кода: процедуры можно организовать в отдельных модулях или единицах для улучшения поддержки и повторного использования кода.

Альтернативное решение Вместо использования реестра вы можете рассмотреть хранение настроек шрифта в конфигурационном файле (например, INI или XML) для более высокой гибкости и удобства обслуживания.

В статье описана процедура сохранения и чтения объекта TFont в реестре Windows, а также пример использования этих процедур в приложении на языке Delphi.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Реестр ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 13:27:41/0.0058200359344482/1