was ist neu ¦  programmier tips ¦  indy artikel ¦  intraweb artikel ¦  informationen ¦  links ¦  interviews
 sonstiges ¦  tutorials ¦  Add&Win Gewinnspiel

Tips (1541)

Dateien (137)
Datenbanken (90)
Drucken (35)
Grafik (114)
IDE (21)
Indy (5)
Internet / LAN (130)
IntraWeb (0)
Mathematik (76)
Multimedia (45)
Oberfläche (107)
Objekte/
ActiveX (51)

OpenTools API (3)
Sonstiges (126)
Strings (83)
System (266)
VCL (242)

Tips sortiert nach
Komponente


Tip suchen

Tip hinzufügen

Add&Win Gewinnspiel

Werbung

12 Visitors Online


 
...die Schriftarten aller Controls zur Laufzeit ändern?
Autor: P. Below
[ Tip ausdrucken ]  

Tip Bewertung (13):  
     


{
Question:
  What is the most easy way to set a same font name to all controls
  in project in run time?

Answer:
  By default all controls have ParentFont = true, so if you did not change
  that  for specific controls you could just change the forms Font
  property, e.g. in code attached to the Screen.OnActiveFormChange event.
  If you cannot rely on all controls having Parentfont = true you would
  have to loop over all controls on the form and set the font property for
  each or at least for those that have ParentFont set to false. You can
  use the routines from unit TypInfo for that, they allow you to access
  published properties by name. The code, again sitting in a handler for
  Screen.onActiveFormChange, would be something like this:

  ModifyFontsFor( Screen.ActiveControl );

where
}

procedure ModifyFontsFor(ctrl: TWinControl);
  procedure ModifyFont(ctrl: TControl);
  var
    
f: TFont;
  begin
    if 
IsPublishedProp(ctrl, 'Parentfont')
      and (GetOrdProp(ctrl, 'Parentfont') = Ord(false))
      and IsPublishedProp(ctrl, 'font')
      then begin
      
f := TFont(GetObjectProp(ctrl, 'font', TFont));
      f.Name := 'Symbol';
    end;
  end;
var
  
i: Integer;
begin
  
ModifyFont(ctrl);
  for i := 0 to ctrl.controlcount - 1 do
    if 
ctrl.controls[i] is Twincontrol then
      
ModifyFontsfor(TWincontrol(ctrl.controls[i]))
    else
      
Modifyfont(ctrl.controls[i]);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  
Modifyfontsfor(self);
end;

// Remember to add TypInfo to your uses clause.


 

Bewerten Sie diesen Tipp:

dürftig
ausgezeichnet


Copyright © by SwissDelphiCenter.ch
All trademarks are the sole property of their respective owners