奇怪的问题,字体控件FontDialog中的数据如何显示和保存??

Cbfan 2002-04-08 08:59:30
if(FontDialog1->Execute())
{
Label1->Caption=FontDialog1->Font->Name;

Label1->Font->Charset=FontDialog1->Font->Charset;
Label1->Font->Color=FontDialog1->Font->Color;

Label1->Font->Style=FontDialog1->Font->Style;
}

Edit1->Text=Label1->Font->Charset;
Edit2->Text=Label1->Font->Color;

------------------------------------------------------

执行,我选择了Western编码;绿色字体;

Edit1~2分别显示:1,32768。

我想让它显示:Western;clGreen; 如何实现?????谢谢。

...全文
136 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
勉励前行 2002-04-09
  • 打赏
  • 举报
回复
其實,你保存個數字到INI中,再從INI中讀這個數字不就成了嗎?
保存字符串的話,讀入時還要再轉換一次的啊.
kingcaiyao 2002-04-09
  • 打赏
  • 举报
回复
你可以将它们保存字符串,不过你需要定义两个数组,一个是整型数组,一个是字符串数组。整型数组用于列举出所有可能取得的数字值,而字符串数组则用于列举出所有字体名称,字符集名称等。然后将两者对应就可以保存到你的Ini文件中去。
Cbfan 2002-04-09
  • 打赏
  • 举报
回复
谢谢诸位。

zswang(伴水)(破碎的心只剩下灵感)的方法很好用啊!

我再试试~~
晚上给分。
kingcaiyao 2002-04-09
  • 打赏
  • 举报
回复
如果你嫌麻烦的话,不如这样:
typdef MyCharSet
{
TFontCharSet Fch;
String CharSetName;
}
MyCharSet RFCharSet[19];
然后根据上面的TFontCharSet,对这19个元素赋值:
MyCharSet[i].Fch=ANSI_CHARSET;
MyCharSet[i].CharSetName="ANSI_CHARSET";
.....
....
TFontCharSet ch=Edit->Font->ChartSet;
IniFile->WriteString(KeyName,MyCharSet[ch].CharSetName);
.....
...

kingcaiyao 2002-04-09
  • 打赏
  • 举报
回复
TO cbfan:
注意我上面的代码是随后写的,自已要整理一下,因为:
ANSI_CHARSET 0 ANSI characters.
DEFAULT_CHARSET 1 Font is chosen based solely on Name and Size. If the described font is not available on the system, Windows will substitute another font.
SYMBOL_CHARSET 2 Standard symbol set.
MAC_CHARSET 77 Macintosh characters. Not available on NT 3.51.
SHIFTJIS_CHARSET 128 Japanese shift-JIS characters.
HANGEUL_CHARSET 129 Korean characters (Wansung).
JOHAB_CHARSET 130 Korean characters (Johab). Not available on NT 3.51

GB2312_CHARSET 134 Simplified Chinese characters (mainland china).
CHINESEBIG5_CHARSET 136 Traditional Chinese characters (Taiwanese).
GREEK_CHARSET 161 Greek characters. Not available on NT 3.51.
TURKISH_CHARSET 162 Turkish characters. Not available on NT 3.51
VIETNAMESE_CHARSET 163 Vietnamese characters. Not available on NT 3.51.
HEBREW_CHARSET 177 Hebrew characters. Not available on NT 3.51
ARABIC_CHARSET 178 Arabic characters. Not available on NT 3.51

BALTIC_CHARSET 186 Baltic characters. Not available on NT 3.51.
RUSSIAN_CHARSET 204 Cyrillic characters. Not available on NT 3.51.
THAI_CHARSET 222 Thai characters. Not available on NT 3.51
EASTEUROPE_CHARSET 238 Includes diacritical marks for eastern european countries. Not available on NT 3.51.
OEM_CHARSET 255 Depends on the codepage of the operating system.
这些数值并不是连续的,所以写的时候要注意处理一下.

kingcaiyao 2002-04-09
  • 打赏
  • 举报
回复
这样看看:程序片段
.....

char *sCharset[20]={"ANSI_CHARSET",.....};//具体你可看看TFontCharSet这个数据类型
TFontCharSet FCH;
FCH=Edit1->Font->CharSet;
IniFile->WriteString(keyname,sCharSet[FCH]);
.....
关于将颜色值保存成字符串方法与上类同。
王集鹄 2002-04-09
  • 打赏
  • 举报
回复
//BCB新手请多指教

//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString vIdent;
CharsetToIdent(Label1->Font->Charset, vIdent);
Edit1->Text = Ident;
Edit2->Text = ColorToString(Label1->Font->Color);
}
//---------------------------------------------------------------------------
Cbfan 2002-04-09
  • 打赏
  • 举报
回复
我试过了,没有成功。能不能具体说说,谢谢~~
windindance 2002-04-08
  • 打赏
  • 举报
回复
很遗憾
应该没有好的办法
你就把他们保存为数字吧
实际上你就算真的保存为字符串,你也没有办法读取的

如果你真的想保存为字符串
可以自己写一个函数返回(好象很笨哦:)
if (Color == clGreen)
return "clGreen";
else
...
Cbfan 2002-04-08
  • 打赏
  • 举报
回复
因为Label1->Font->Charset;和 Label1->Font->Color;保存的结果都是数字~~
我想让他们保存成字符串,如:Western; clGreen;
Cbfan 2002-04-08
  • 打赏
  • 举报
回复
没人会吗??

我就是想要保存
Label1->Font->Charset;
Label1->Font->Color;

在.ini文件中,

程序启动时,再读取。

我发现,这没有我想象得那么简单~~

13,870

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧