Delphi – Fukcija za izlistavanje fontova na sistemu

U većem broju korisničkih aplikacija, posebno raznih editora, trebaće vam funkcija kojom izlistavate sve fontove instalirane na datom sistemu. Pa čak i ako se ne radi o editorima, ovom funkcijom možete korisnicima obezbediti izbor podešavanja izgleda interfejsa vaših aplikacija (font kojim su ispisane kontrole). Radi primera, kreiraćemo mali program koji će samo izlistati fontove.

Pokrenite Delphi i otvorite novi projekat. Na praznu formu postavite jedno dugme, jednu kontrolu Label i jednu kontrolu Listbox. Dodajte funkciju za izlistavanje fontova:


function EnumFontsProc (var LogFont:TLogFont;
var TextMetric:TTextMetric;
FontType:Integer; Data:Pointer):Integer;stdcall;
var
Lista:TStrings;
begin
Lista:=TStrings(Data);
// preuzimanje string niza
Lista.Add(LogFont.lfFaceName);
// dodavanje naziva fonta u listu
Rezult:=1;
end;

Potom dodajte i poziv tzv. callback funkcije:


procedure TMainForm.FormCreate(Sender: TObject);
var
DC: HDC;
begin
DC:= GetDC(0);
try
EnumFonts(DC, nil,@EnumFontsProc, Pointer(ListBox1.Items);
// prosledjivanje callback funkciji
finally
ReleaseDC (0, DC);
// oslobadjanje resursa
end;
end;

Callback funkcije predstavljaju potprograme koje Windows poziva iz vaše aplikacije. U našem slučaju, objekat ListBox koristimo za spisak naziva instaliranih fontova. Za formiranje spiska, kreirali smo proceduru za obradu događaja OnCreate. U ovom prvom primeru nismo koristili dugmić.

Postoji još jedan, mnogo jednostavniji, način za izlistavanje fontova. Potrebno je da samo objektu tipa TStringList dodelimo Screen.Fonts. Postavljenom dugmetu, potrebno je da samo dodelite sledeću liniju (događaj OnClick):


ListBox1 : = Screen.Fonts;

Pratite Krstaricu na www.krstarica.com