PDA

Ver la Versión Completa : Fuentes de letra del programa


tarco35
08-10-2015, 22:58:28
Hola, hay alguna forma de obtener un listado de todos los tipos de letra, fuentes, que uso en mi programa delphi 6
Gracias

Casimiro Notevi
08-10-2015, 23:01:33
Efectivamente, hay una forma de obtenerla.
¿Y la pregunta?

tarco35
08-10-2015, 23:43:11
La pregunta es: como obtengo ese listado (el de tipos de fuentes) de tal forma que cuando genere la instalación pueda incluir esos tipos de letra en el ordenador del cliente.

ecfisa
08-10-2015, 23:49:30
Hola tarco35.
Hola, hay alguna forma de obtener un listado de todos los tipos de letra, fuentes, que uso en mi programa delphi 6
Gracias

No dispongo de la versión 6, pero en la 7 lo podes obtener de la variable Screen (TScreen):

ComboBox1.Items.Assign(Screen.Fonts);


Saludos :)

tarco35
09-10-2015, 00:06:22
Gracias, pero me muestra todos los fonts que tengo, y lo que deseo es saber solo los que uso en todos los forms de la aplicacion.

Casimiro Notevi
09-10-2015, 01:04:36
Mejor copias las fuentes que uses en algún directorio de tu programa. Así van siempre con la instalación del mismo.

ecfisa
09-10-2015, 05:05:14
Hola tarco35.

No sé si será lo que estas buscando, pero podrías obtener las fuentes usadas en los formularios de tus proyectos, escudriñando en los .dfm...

procedure GetFormsFonts(PrjPath: string; UsedFonts: TStrings);
const
SEARCHED = 'Font.Name = ';
var
SR: TSearchRec;
TS: TStrings;
SL: TStringList;
s : string;
i : Integer;
begin
PrjPath := IncludeTrailingPathDelimiter(PrjPath);
if FindFirst(PrjPath + '*.dfm', faArchive, SR) = 0 then
begin
SL := TStringList.Create;
try
repeat
TS := TStringList.Create;
try
TS.LoadFromFile(PrjPath + SR.Name);
for i := 0 to TS.Count-1 do
if Pos(SEARCHED, TS[i]) <> 0 then
begin
s := Trim(TS[i]);
s := Copy(s, Pos(SEARCHED, s) + Length(SEARCHED), MaxInt);
s := StringReplace(s, '''', '', [rfReplaceAll]);
SL.Add(s);
end;
finally
TS.Free;
end;
until FindNext(SR) <> 0;
FindClose(SR);
SL.Sorted := True;
SL.Duplicates := dupIgnore;
SL.Text := SL.Text;
UsedFonts.Assign(SL);
finally
SL.Free;
end;
end;
end;


Ejemplo de uso:

procedure TForm1.Button1Click(Sender: TObject);
begin
GetFormsFonts('C:\Carpeta_Del_Proyecto', ListBox1.Items);
end;


Saludos :)