Сохранить шрифт в реестр или в поток

Советы » Шрифты » Сохранить шрифт в реестр или в поток

type

FontRec = packed

record

Color: TColor; LogFont: TLogFont; end

; // Save a font to the registry // Eine Schrift in die Registry speichern procedure

SaveFontToReg(reg: TRegistry; const

key, id: string

; Font: TFont); var

fRec: FontRec; begin

if

Windows.GetObject(Font.Handle, SizeOf(fRec.LogFont), @fRec.LogFont) > 0 then

begin

if

reg.OpenKey(key, True) then

try

fRec.Color := Font.Color; reg.WriteBinaryData(id, fRec, SizeOf(fRec)); finally

reg.CloseKey; end

; end

; end

; // Load a font from the registry // Eine Schrift von der Registry laden procedure

LoadFont(reg: TRegistry; const

key, id: string

; Font: TFont); var

fRec: FontRec; begin

if

reg.OpenKey(key, False) then

try

if

reg.ReadBinaryData(id, frec, SizeOf(fRec)) = SizeOf(fRec) then

Font.Handle := CreateFontIndirect(fRec.LogFont); Font.Color := fRec.Color; finally

reg.CloseKey; end

; end

; // Save a font to a stream // Eine Schrift in einen Stream speichern procedure

WriteFontToStream(s: TStream; Font: TFont); var

fRec: FontRec; sz: integer; begin

sz := SizeOf(fRec.LogFont); if

Windows.GetObject(Font.Handle, sz, @fRec.LogFont) > 0 then

begin

s.Write

(sz, SizeOf(Integer)); fRec.Color := Font.Color; s.Write

(fRec, SizeOf(fRec)); end

else

begin

sz := 0; s.Write

(sz, SizeOf(Integer)); end

; end

; // Read a font from a stream // Eine Schrift von einem Stream laden procedure

ReadFont(s: TStream; Font: TFont); var

fRec: FontRec; sz: integer; begin

s.read

(sz, SizeOf(Integer)); if

sz = SizeOf(fRec.LogFont) then

begin

s.read

(fRec, SizeOf(fRec)); Font.Handle := CreateFontIndirect(fRec.LogFont); Font.Color := fRec.Color; end

; end

;

Другое по теме:

Категории

Статьи

Советы

Copyright © 2022 - All Rights Reserved - www.delphirus.com