问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

delphi 中Memo的Font保存问题!!

发布网友 发布时间:2022-05-13 13:12

我来回答

3个回答

热心网友 时间:2023-10-10 11:02

可以把font信息存到inifile里去,这是delphi常用的存储窗口信息的文件 比如说:
uses
Inifiles;
procere SaveFont(FName: string; Section: string; smFont: TFont); // 存储字体格式
var
FStream: TIniFile;
begin
FStream := TIniFile.Create(FName); // 打开/新建inifile
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;

procere 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;

// 用法
// 关闭窗口时保存 label1 字体
procere TForm1.formClose(Sender: TObject);
begin
SaveFont('font.ini', 'label', label1.Font);
end;

// 运用字体
procere TForm1.Label1DblClick(Sender: TObject);
begin
if FontDialog1.Execute then
label1.Font := FontDialog1.Font
end;

// 在窗口打开时,读取字体
procere TForm1.formCreate(Sender: TObject);
begin
LoadFont('font.ini', 'label', label1.Font);
end;

热心网友 时间:2023-10-10 11:03

这是我在用的。
function FontToString(AFont: TFont; AIncludeColor: Boolean): String;
var
sStyle: String;
begin
with AFont do begin
sStyle := '';
if (fsBold in Style) then sStyle := sStyle + csfsBold;
if (fsItalic in Style) then sStyle := sStyle + csfsItalic;
if (fsUnderline in Style) then sStyle := sStyle + csfsUnderline;
if (fsStrikeOut in Style) then sStyle := sStyle + csfsStrikeout;
if ((Length(sStyle) > 0) and ('|' = sStyle[1])) then
sStyle := Copy(sStyle, 2, Length(sStyle) - 1);

Result := Format('"%s", %d, [%s]',[name, Size, sStyle]);
if AIncludeColor then
Result := Result + Format(', [%s]',[ColorToString(Color)]);
end;
end;

procere StringToFont(AStrFont: string; AFont: TFont; AIncludeColor: Boolean);
var
iValue: Integer;
sStyle: String;
begin
with AFont do
try
//字体名称
iValue := Pos(',', AStrFont);
name := Copy(AStrFont, 2, iValue - 3);
Delete(AStrFont, 1, iValue);
//字体大小
iValue := Pos(',', AStrFont);
Size := StrToInt(Copy(AStrFont, 2, iValue - 2));
Delete(AStrFont, 1, iValue);
//字形
iValue := Pos(',', AStrFont);
sStyle := '|' + Copy(AStrFont, 3, iValue - 4);
Delete(AStrFont, 1, iValue);
//颜色
if AIncludeColor then
Color := StringToColor(Copy(AStrFont, 3, Length(AStrFont) - 3));

Style := [];
if (Pos(csfsBold, sStyle) > 0) then Style := Style + [fsBold];
if (Pos(csfsItalic, sStyle) > 0) then Style := Style + [fsItalic];
if (Pos(csfsUnderline, sStyle) > 0) then Style := Style + [fsUnderline];
if (Pos(csfsStrikeout, sStyle) > 0) then Style := Style + [fsStrikeOut];
except
AFont.Color := clBlack;
AFont.Name := '宋体';
AFont.Size := 9;
AFont.Style := [];
end;
end;

热心网友 时间:2023-10-10 11:03

请查看TFont类
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么我在电脑上面下的电影在手机上面不显示? 为什么视频在手机里放不出来在电脑里放得出来? 求问bb霜什么牌‍子‍好 BB霜哪个牌子的比较好啊? 我用很多BB霜都过敏脱皮,该用哪个牌子的才能不过敏?拜托了各位 谢谢... 没有去继续教育会计证会不会被吊销? 会计证连续几年未继续教育会被吊销 我想请问,能不能从视频里抓出一段声音,然后保存,变成手机铃声的那种格式... 高中地理知识如何描述地貌特征 中国地理第一讲:自然地理之河流 请问字体要怎么下载,下载下来了,要怎么安装到FreeHand软件上去? 支付宝汇率钻石会员可以在中行用吗? free font 可以商用吗 怎么用支付宝钻石汇率付款 白鳍豚是我国特有的珍稀鱼类.___(判断对错 知了身上的黑色液体沾衣服上怎么洗 考士官学校在部队能呆几年有什么用黑色知了 先存画质从低到高排列是否480 720 1080 2K 4K?请说出各排对应的标清,高清, 网盘上的4K视频能用原画的形式在手机上看吗?什么手机在屏幕方面比较专业呢? 什么情况下用4K拍照? 《GTA5》4K原画与ENB画质效果对比 GTA5ENB画质怎么样 我的手机百度网盘是超级会员清晰度没有超清1080p和没有无损4k原画不一样怎么? 班班通打不了字怎么办 希沃班班通输入法隐藏了,怎么找到 推荐几本好看的书.不要韩国的少女小说. 高中作文立意100分,好追加. 谁知道有哪些好看的书,推荐一下。 有什么好看的书推荐一下啊 人生就像登峰800字作文 请推荐几本好看书 就想问一下,什么叫腹肌,怎么看出来的,是不是只有锻炼过才会有 怎样看别人的腹肌是瘦出来的还是练出来的? 苹果股东起诉库克,背后的真实原因是什么? 女生对男生的腹肌怎么看 为什么我的腹肌只能看出四块,剩下的怎么练才能看到 怎么锻炼,腹肌才会看上去比较明显? 万亿美元市值再次被突破,库克对苹果最大的贡献是什么? 我比较胖 14了 怎么看出有没有腹肌 我练了快1个月了 乔布斯的苹果交给库克可以继续改变世界吗? 库克摔杯子砸桌子真实原因 乔布斯当年是如何说服库克加入苹果的? 怎么区别白金和镀金 为什么用手机银行转账会出现你已超时退出的情况 我的网上银行提示操作超时是啥意思? 拉卡拉pos机激活提示,超时退出-3,这是什么意思? 中国银行网银会话超时退出网银咋办 工行,登陆超时,您已成功退出 进入工行网银老是显示您已成功退出或超时或验证码错误是怎么回事啊 为什么我登工行的网上银行时总是提示操作超时或你已安全退出,在别人的电脑上登就可以。 毛巾搓澡有什么好处