求助:我怎么得到 xx:Tfont; xx 变量中的具体信息啊?谢谢! ( 积分: 40 )

  • 主题发起人 主题发起人 lsh998
  • 开始时间 开始时间
L

lsh998

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button2Click(Sender: TObject);
var
xx:Tfont;
ss1:string;
ss2:string;
ss3:string;
ss4:string;
ss5:string;
ss6:string;
begin
if FontDialog1.Execute then
begin
xx:=FontDialog1.Font;
end;
Label2.Font:=xx;
end;

现在 变量 xx 得到了 FontDialog1.Font 的东西了

我能不能用 字符串 ss1,ss2 ,ss3,ss4 ,ss5 ,ss6 得到
xx 的具体信息呢?

我希望用
ss1 得到 字体的 大小
ss2 得到 字体的 字形
ss3 得到 字体的 字体
ss4 得到 字体的 字形
ss5 得到 字体的 效果
ss6 得到 字体的 颜色

这样要怎么写呢?

谢谢!
 
const
csfsBold = '|Bold';
csfsItalic = '|Italic';
csfsUnderline = '|Underline';
csfsStrikeout = '|Strikeout';

procedure StringToFont(sFont: string; Font: TFont; bIncludeColor: Boolean = True);
var
P : Integer;
sStyle: string;
begin
with Font do
try
// get font name
P := Pos(',', sFont);
name := Copy(sFont, 2, P - 3);
Delete(sFont, 1, P);

// get font size
P := Pos(',', sFont);
Size := StrToInt(Copy(sFont, 2, P - 2));
Delete(sFont, 1, P);

// get font style
P := Pos(',', sFont);
sStyle := '|' + Copy(sFont, 3, P - 4);
Delete(sFont, 1, P);

// get font color
if bIncludeColor then
Color := StringToColor(Copy(sFont, 3, Length(sFont) - 3));

// convert str font style to
// font style
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
end;
end;

//
// Output format:
// "Aril", 9, [Bold|Italic], [clAqua]
//
function FontToString(Font: TFont; bIncludeColor: Boolean = True): string;
var
sStyle: string;
begin
with Font do
begin
// convert font style to string
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 bIncludeColor then
Result := Result + Format(', [%s]',[ColorToString(Color)]);
end;
end;
 
谢谢大哥
我就试,不懂的地方
再向大哥请教!
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
970
import
I
后退
顶部