[DUG] Form font substitution

Jeremy North jeremy.north at gmail.com
Mon Jul 17 13:54:03 NZST 2006


Use RTTI and iterate over all the controls on each form.

procedure SetFont(AComponent: TComponent);
var
  lPropInfo: PPropInfo;
  lFont: TFont;
begin
  lPropInfo := GetPropInfo(AComponent.ClassInfo, 'Font');
  if lPropInfo <> nil then
  begin
    lFont := TFont(GetOrdProp(AComponent, lPropInfo));
    lFont.Name := 'Courier New';
    SetOrdProp(AComponent, lPropInfo, LongInt(lFont));
  end;
end;

procedure TForm13.Button1Click(Sender: TObject);
begin
  SetFont(Button1);
end;

Have to add TypInfo to uses clause.

cheers,
Jeremy

On 7/17/06, Jason Coley <Jason at software-solutions.co.nz> wrote:
> That kind of works, but some of the controls do not have the parent font
> property, so have their own font. (Some TMS controls) I also change the
> colour of some captions so the parent font is false.
>
> Any other ideas?
>
> Is there a way to recursively change the font names?
>
> Jason
>
> -----Original Message-----
> From: delphi-bounces at ns3.123.co.nz [mailto:delphi-bounces at ns3.123.co.nz]
> On Behalf Of Jeremy North
> Sent: Monday, 17 July 2006 1:35 p.m.
> To: Jason
> Subject: Re: [DUG] Form font substitution
>
> > I am in the middle of an application, and I want to use the Sergio
> > font that MS use with Office 2007, and comes in Vista also.
>
> You can try DesktopFont := True in your application (create of Main
> Form).
> Although this might require the Sergio font be the default font.
>
> I haven't gotten around to installing Vista to know if this is the case.
>
> cheers,
> Jeremy
> _______________________________________________
> Delphi mailing list
> Delphi at ns3.123.co.nz
> http://ns3.123.co.nz/mailman/listinfo/delphi
>
>
>
> _______________________________________________
> Delphi mailing list
> Delphi at ns3.123.co.nz
> http://ns3.123.co.nz/mailman/listinfo/delphi
>


More information about the Delphi mailing list