Newsgroup: it.comp.lang.delphi
Titolo: Font di sistema

Mi sono avvicinato a delphi da poco e avrei una domanda:
come posso rilevare tutti i font installatinel sistema sul quale parte
l'applicazione
e farli comparire tutti in ordine in una ListBox?
Grazie 1000  in anticipo :-)

 e farli comparire tutti in ordine in una ListBox?
Cerca nella documentazione microsoft EnumFontsFamilies() e funzioni affini
... dovresti riuscirci in poche righe di codice! :-)
--
- Carlo -
c.b...@libero.it

l'applicazione e farli comparire tutti in ordine in una ListBox
var
  hDC_Form: HDC;
function EnumFontFamilyProc(var lf: TLogFont;
                            var tm: TNewTextMetric;
                            FontType: Integer;
                            var Memo: TMemo): Integer;
stdcall;
var
  FontName: String;
begin
  FontName := StrPas(@lf.lfFaceName);
  if Memo.Lines.IndexOf(FontName) <> -1 then
    Memo.Lines.Add(FontName);
  Result := 1;
end;
function EnumFontFamiliesProc(var lf: TLogFont;
                              var tm: TNewTextMetric;
                              FontType: Integer;
                              var Memo: TMemo): Integer;
stdcall;
begin
  if FontType = TRUETYPE_FONTTYPE then begin
    Memo.Lines.Add(StrPas(@lf.lfFaceName));
  end else
    EnumFontFamilies(hDC_Form,
                     @lf.lfFaceName,
                     @EnumFontFamilyProc,
                     LongInt(@Memo));
  result := 1;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
  hDC_Form := GetDC(Form1.Handle);
  EnumFontFamilies(hDC_Form,
                   nil,
                   @EnumFontFamiliesProc,
                   LongInt(@Memo1));
end;
-- 
Andrea Laforgia (
walkie...@libero.it
)
"Usenet is a strange place" [Dennis Ritchie]

 e farli comparire tutti in ordine in una ListBox?
mah.....
ListBox1.Items.Assign(Screen.Fonts);
fa la stessa cosa.....con qualche riga in meno.
Sbaglio ?

Leggendo i precedenti messaggi, e conoscedo CHI ha risposto, e davvero sono
molto bravi.... mi viene da pensare:
anche io avrei risposto come te ma... non credo che Carlo non sapesse questa
risposta... se quindi ha risposto diversamente credo che ci siano senz'altro
dei buoni motivi; EnumFontsFamilies() .... ora la guardo e cerco di
capire.....

 ha scritto nel messaggio
news:a69pfp$iut$1...@newsreader.mailgate.org...

Sono abituato a ragionare sulle cose, e quindi ho 'incollato' le procedure
del guru in una form, ed a fianco ho messo un listbox riempito con
Screen.Fonts.
La differenza tra le due versioni, è che quella del guru elenca anche le
varianti 'localizzate' del font (che poi hanno solo i font 'canonici' come
arial e courier new e times new roman).
Se apri un qualsiasi dialogo elencante i Fonts di sistema, queste varianti
non sono visualizzate direttamente, ma elencate in un combo a parte.
Dato che la domanda che 'syneus' ha posto specificava :
1) che si è avvicinato a delphi da poco.
2) che vuole un elenco di fonts in un listbox
penso che la cosa migliore sia quella di mostrargli le strade più brevi che
portano a quello che cerca e soprattutto utilizzando quello che delphi ha
già, anzichè 'scendere' sulle api (cosa che puoi fare anche da qualsiasi
altro linguaggio).
Ciao. ;-)

 altro linguaggio).
Non direi che quanto messo a disposizione dalle API sia utilizzabile da
"qualsiasi altro linguaggio" (vedi Java e il prossimo C# [che è appunto un
dialetto migliorato di Java]).
Ciao


 dialetto migliorato di Java]).
Ok, rettifico : qualsiasi altro 'buon' linguaggio.... :-)
(ehi, ehi, senza offesa ! non vorrei che qualche javomane se la
prendesse...)

 Sbaglio ?
No.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 semplice.
... ed è quella che uso sempre anche io :)))
Comunque ciao, e...che bello il NG! Si imparano tante cose che da solo.....