前不久我編寫一個小程序在INI文件中記錄字體的屬性(顏色值/color,大小/size,字體名/name,樣式/style),其中color值和size值可以用數值方式寫入INI文件,name是用字符方式寫入,但Font.style不是數值型、字符型,也不是布爾型,而是TfontStyles類,無法直接寫入INI文件中去,我找了好多相關書籍也沒找到方法,也到網絡上的Delphi站點去問,也沒得到滿意的答復,沒法子,看來還得自已想辦法解決,我通過一系列的摸索實驗,終於找到了比較滿意的解決方法,程序代碼如下:
1、先在uses中加入 inifiles;
2、定義變量
var
Mystyle : string;
Myini : inifile;
3、寫
begin
Mystyle := [;
Myini := TInifile.Create (inifile.ini);
with FontDialog.Font do
begin
if fsBold in Style then MyStyle := MyStyle + fsBold;
if fsItalic in Style then
if MyStyle = [ then
MyStyle := MyStyle + fsItalic
else
MyStyle := MyStyle + ,fsItalic;
if fsUnderline in Style then
if MyStyle = [ then
MyStyle := MyStyle + fsUnderline
else
MyStyle := MyStyle + ,fsUnderline;
if fsStrikeOut in Style then
if MyStyle = [ then
MyStyle := MyStyle + fsStrikeOut
else
MyStyle := MyStyle + ,fsStrikeOut;
MyStyle := MyStyle + ];
end;
Myini.WriteString (FontStyle, style, MyStyle);
Myini.free;
End;
4、讀:
var
MyFontStyle : TFontStyles;
MyStyle : string;
begin
MyFontStyle := [];
Myini := TInifile.Create (inifile.ini);
Mystyle := Myini.ReadString (Fontstyle, style, []);
if pos (fsBold, Mystyle) $#@62; 0 then MyFontStyle := MyFontStyle + [fsBold];
if Pos (fsItalic, MyStyle) $#@62; 0 then MyFontStyle := MyFontStyle + [fsItalic];
if Pos (fsUnderline, MyStyle) $#@62; 0 then
MyFontStyle := MyFontStyle + [fsUnderline];
if (fsStrikeOut, MyStyle) $#@62; 0 then
MyFontStyle := MyFontStyle + [fsStrikeOut];
FontDialog.Font.Style := MyFontStyle;
MyIni.free;
end;
以上代碼在Delphi 4.0 運行通過。