3

フォント (FontStyle、FontColor、FontSize) を SQL データベースに保存したいのですが、これを行うには、これを文字列として保存する必要があります。TfontをTStringに変換するにはどうすればよいですか?

4

3 に答える 3

3

フォントパラメータを文字列として保存する必要は本当にありますか? フォントを BLOB として保存することを提案できます。

procedure SaveFontToStream(AStream: TStream; AFont: TFont);
var LogFont: TLogFont;
    Color: TColor;
begin
  if GetObject(AFont.Handle, SizeOf(LogFont), @LogFont) = 0 then
    RaiseLastOSError;
  AStream.WriteBuffer(LogFont, SizeOf(LogFont));
  Color := AFont.Color;
  AStream.WriteBuffer(Color, SizeOf(Color));
end;

procedure LoadFontFromStream(AStream: TStream; AFont: TFont);
var LogFont: TLogFont;
    F: HFONT;
    Color: TColor;
begin
  AStream.ReadBuffer(LogFont, SizeOf(LogFont));
  F := CreateFontIndirect(LogFont);
  if F = 0 then
    RaiseLastOSError;
  AFont.Handle := F;
  AStream.ReadBuffer(Color, SizeOf(Color));
  AFont.Color := Color;
end;

いずれにせよ、ストリームを16進シーケンスに変換できます。

于 2013-11-27T16:19:19.313 に答える