uputstva
registracija rs domena

Funkcija za izlistavanje instaliranih fontova, Delphi

17.06.2010, 13:33
U većem broju korisničkih aplikacija, posebno raznih editora, trebaće vam funkcija kojom izlistavate sve fontove instalirane na datom 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 apliakcija (font kojim su ispisane kontrole). Radi primera, kreiraćemo mali programčić koji će samo izlistati fontove.

Pokrenite Delphi i otvorite novi projekat. Na praznu formu postavite jedno dugme, jednu kontrolu Labeli 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);
// prosleđivanje callback funkciji
finally
ReleaseDC (0, DC);
// oslobađanje 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;
Postavio clan: Uputstvo_84
Podeli na Facebooku Podeli sa prijateljima na facebook-u

Komentari

Trenutno nema komentara, komentarisite clanak pomocu forme koja se nalazi ispod

Da bi ste mogli da komentarisete clanke morate se registrovati


Obavestenje: Komentari nisu zvanicni stavovi ovog sajta već subjektivna mišljenja. Sajt Uputstva.rs nije odgovoran za stavove koji su iznešeni u komentarima i oni su vlasništvo njihovih autora.