Save / load TFont information to an INI file

Save / load TFont information to an INI file

Save / load TFont information to an INI file

uses
  Inifiles;

procedure SaveFont(FName: string; Section: string; smFont: TFont);
var
  FStream: TIniFile;
begin
  FStream := TIniFile.Create(FName);
  try
    FStream.WriteString(Section, 'Name', smFont.Name);
    FStream.WriteInteger(Section, 'CharSet', smFont.CharSet);
    FStream.WriteInteger(Section, 'Color', smFont.Color);
    FStream.WriteInteger(Section, 'Size', smFont.Size);
    FStream.WriteInteger(Section, 'Style', Byte(smFont.Style));
  finally
    FStream.Free;
  end;
end;

procedure LoadFont(FName: string; Section: string; smFont: TFont);
var
  FStream: TIniFile;
begin
  FStream := TIniFile.Create(Fname);
  try
    smFont.Name    := FStream.ReadString(Section, 'Name', smFont.Name);
    smFont.CharSet := TFontCharSet(FStream.ReadInteger(Section, 'CharSet', smFont.CharSet));
    smFont.Color   := TColor(FStream.ReadInteger(Section, 'Color', smFont.Color));
    smFont.Size    := FStream.ReadInteger(Section, 'Size', smFont.Size);
    smFont.Style   := TFontStyles(Byte(FStream.ReadInteger(Section, 'Style', Byte(smFont.Style))));
  finally
    FStream.Free;
  end;
end;

//Example:

//Save Font
procedure TForm1.Button1Click(Sender: TObject);
begin
  SaveFont('font.ini', 'label', label1.Font);
end;

procedure TForm1.Label1DblClick(Sender: TObject);
begin
  if FontDialog1.Execute then
    label1.Font := FontDialog1.Font
end;

//Load Font
procedure TForm1.Button2Click(Sender: TObject);
begin
  LoadFont('font.ini', 'label', label1.Font);
end;