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.