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