字体和字符串的转换
以前的猛料里面有一个转换的函数,不过下面的更加明了一些,看你喜欢用那个了。 :-)
http://www.chami.com/tips/delphi/112596D.html
const
csfsBold = '|Bold';
csfsItalic = '|Italic';
csfsUnderline = '|Underline';
csfsStrikeout = '|Strikeout';
//
// Expected format:
// "Arial", 9, [Bold], [clRed]
//
procedure StringToFont(
sFont : string; Font : TFont );
var
p : integer;
sStyle : string;
begin
with Font do
begin
// 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
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 ];
end;
end;
//
// Output format:
// "Aril", 9, [Bold|Italic], [clAqua]
//
function FontToString(
Font : TFont ) : 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
begin
sStyle :=
Copy( sStyle, 2,
Length( sStyle ) - 1 );
end;
Result := Format(
'"%s", %d, [%s], [%s]',
[ Name,
Size,
sStyle,
ColorToString( Color ) ] );
end;
end;