Published on Sunday, April 23rd, 2006 at 1:09 pm

Ahir a la tarda, mentre programava les meves cosetes se’m va sorgir la necessitat de crear una funció per a guardar l’estil d’una font (negreta, cursiva, subrallado i/o ratllat) en un arxiu .ini. Com els arxius .ini solament admeten dades de tipus sencer, cadena de carácteres, float, boolean o streams no podia guardar directament el tipus TFontStyles, així que em vaig posar a crear un parell de funcions per a convertir el TFontStyles en enter i viceversa.
Bueno, i aquí teniu les funcions.
La primera converteix de TFontStyles a ShortInt:

function FontStylesToInt(FontStyles: TFontStyles): ShortInt;
var
Res: ShortInt;
begin
Res := 0;
if fsBold in FontStyles then
Res := Res+1;
if fsItalic in FontStyles then
Res := Res+2;
if fsUnderline in FontStyles then
Res := Res+5;
if fsStrikeOut in FontStyles then
Res := Res+10;
Result := Res;
end;

L’altra funció fa justament el contrari, convertir de ShortInt a TFontStyles:

function IntToFontStyles(ShInt: ShortInt): TFontStyles;
begin
case ShInt of
0: Result := [];
1: Result := [fsBold];
2: Result := [fsItalic];
3: Result := [fsBold, fsItalic];
5: Result := [fsUnderline];
6: Result := [fsBold, fsUnderline];
7: Result := [fsItalic, fsUnderline];
8: Result := [fsBold, fsItalic, fsUnderline];
10: Result := [fsStrikeOut];
11: Result := [fsBold, fsStrikeOut];
12: Result := [fsItalic, fsStrikeOut];
13: Result := [fsBold, fsItalic, fsStrikeOut];
15: Result := [fsUnderline, fsStrikeOut];
16: Result := [fsBold, fsUnderline, fsStrikeOut];
17: Result := [fsItalic, fsUnderline, fsStrikeOut];
18: Result := [fsBold, fsItalic, fsUnderline, fsStrikeOut];
end;
end;

Bueno, i per si no teníeu bastant, aquí us deixo un bonic arxiu FontStylesConversion.pas amb les dues funcions dintre, perquè només hàgiu d’afegir-lo al vostre programa i usar les funcions tranquil·lament.

Related Posts

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>