Einzelnen Beitrag anzeigen

Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#18

AW: Merkwürdiger TFontDialog

  Alt 5. Apr 2018, 11:23
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;
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat