首页  编辑  

字体和字符串的转换

Tags: /超级猛料/Font.字体/   Date Created:

字体和字符串的转换

以前的猛料里面有一个转换的函数,不过下面的更加明了一些,看你喜欢用那个了。 :-)

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;