Tehnika Krstarice > Programiranje > Delphi - Fukcija za izlistavanje fontova na sistemu

Delphi - Fukcija za izlistavanje fontova na sistemu

22.08.2001.

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;

Preporučite ovaj članak

Članak još uvek nije ocenjen.