Da ich vorgegebene Dialoge meist eh meide, hier kleine Schnippsel zum selber basteln.
Delphi-Quellcode:
// Style der Listbox sollte lbOwnerDrawVariable sein damit jeder Eintrag eine eigene Schrift hat
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
begin
With ListBox1 do
begin
canvas.fillrect(rect);
canvas.font.Style := [fsbold];
canvas.font.Name := Listbox1.items[index];
canvas.textout(rect.left,rect.top, Listbox1.items[index]);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ListBox1.Items := Screen.Fonts;
end;
procedure TForm1.ListBox1Change(Sender: TObject);
begin
Label1.Font.Name := ListBox1.Items[ListBox1.ItemIndex];
end;
Zweite Variante wo man selbst per Callback durchiteriert.
Delphi-Quellcode:
function EnumFontClBack(var lp:TEnumLogFont;
var tm: TNewTextMetric;
dwType:DWord;
lpData:LParam): integer; stdcall;
begin
result:=1;
with TForm1(lpData),Combobox1 do
begin
items.add(lp.elfLogFont.lfFaceName);
end;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
EnumFontFamilies(canvas.Handle,nil,@EnumFontClBack,Integer(self));
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
Label1.Font.Name:=Combobox1.Text;
end;