如何保存Font属性?(50分)

  • 主题发起人 主题发起人 秋水无痕
  • 开始时间 开始时间

秋水无痕

Unregistered / Unconfirmed
GUEST, unregistred user!
一个Label,用户可以通过FontDialog设置其字体、颜色等属性,
希望下次启动软件的时候可以自动应用上次设置的结果
请问要如何保存Font属性?或者有无其它办法可以实现这个功能,谢谢。
 
在注册表中以二进制的形式保存
 
将字体、颜色等属性写到注册表,下次从注册表读出~~~
 
A := Font.Name ;
;B := Font.color;
;C := Font.Size;
;D := Font.style;
......
; Font.Name := A;
; Font.color:= B:
; Font.Size := C;
; Font.style := D;
 
如果储存的内容多,最好保存为txt文本文件。
 
自己写或用TurboPower的一个控件都可以实现。
 
同意LiWd的说法,但是Font.style是一个结果,应该将其中的几项非别保存。
 
你可以把FONT保存为INI文件,我有现成的例程。
 
请问LiWD:要用什么类型的变量呢?
 
可以将 Label保存在流中
 
保存到文件中。类型当然是string;
 
ini文件或者注册表都可以啦。 这是UEdit32.ini中Font小节的内容,呵呵。
[Font]
Height=-12
Weight=400
PitchAndFamily=2
FaceName=宋体
CharSetDef=134
CharSet=134
 
写INI,就是麻烦点,我用的是MEMO:
var
; filedir:string;
; ini:Tinifile;
; MStyles:TFontStyles;
; MStylespoint:pointer;

const
; ;MColor='Color';
; ;MFontName='FontName';
; ;MFontSize='Size';
; ;MFontColor='FontColor';
; ;MFontStyle='FontStyle';

procedure TForm1.FormCreate(Sender: TObject); ;//取执行文件目录
begin
; ; getdir(0,filedir);
end;

procedure TForm1.Button1Click(Sender: TObject); ;//写
begin
; ; ; ColorDialog1.Execute;
; ; ; with Memo1 do begin
; ; ; ; ;Color:=ColorDialog1.Color;
; ; ; end;
; ; ; FontDialog1.Execute;
; ; ; with Memo1 do begin
; ; ; ; ;Font:=FontDialog1.Font;
; ; ; end;
; ; ; Ini:=TIniFile.Create(filedir+'/Font_Color.ini');
; ; ; with Memo1 do begin
; ; ; ; ;Ini.WriteInteger(name,MColor,Color);
; ; ; ; ;Ini.WriteString(name,MFontName,Font.Name);
; ; ; ; ;Ini.WriteInteger(name,MFontSize,Font.Size);
; ; ; ; ;Ini.WriteInteger(name,MFontColor,Font.Color);
; ; ; ; ;MStyles:=Font.Style;
; ; ; ; ;MStylespoint:=@MStyles;
; ; ; ; ;Ini.WriteInteger(name,MFontStyle,integer(MStylespoint^));
; ; ; end;
; ; ; Ini.Free;

end;



procedure TForm1.Button2Click(Sender: TObject); ;// 写
var
; ;a:integer;
begin
; ; ; Ini:=TIniFile.Create(filedir+'/Font_Color.ini');
; ; ;try
; ; ; ; ;with Memo1 do begin
; ; ; ; ; ; ;Color:=Ini.ReadInteger(name,MColor,Color);
; ; ; ; ; ; ;Font.Name:=Ini.ReadString(name,MFontName,Font.Name);
; ; ; ; ; ; ;Font.Size:=Ini.ReadInteger(name,MFontSize,Font.Size);
; ; ; ; ; ; ;Font.Color:=Ini.ReadInteger(name,MFontColor,Font.Color);
; ; ; ; ; ; ;a:=Ini.ReadInteger(name,MFontStyle,0);
; ; ; ; ; ; ;MStylespoint:=@a;
; ; ; ; ; ; ;Font.Style:=TFontStyles(MStylespoint^);
; ; ; ; ; end;
; ; ;finally
; ; ;end;
; ; ; Ini.Free;
end;
 
感谢大家的帮助,特别感谢redsky.l,问题已解决。
 
后退
顶部