Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.15;
Скачать: CL | DM;

Вниз

Шрифт приложения   Найти похожие ветки 

 
Fuelfire   (2003-09-02 18:31) [0]

Привет всем! Извините за тупой вопрос, но с наскока не получается сделать. Нужно изменить шрифт моего приложения.. Использую TFontDialog.. Можно, конечно, перечислить все используемые формы, типа:
if FontDialog1.Execute then begin
Form.Font.Assign(FontDialog1.Font);
....
....
end;

Но, по-моему, должен быть другой, более простой и оптимальный вариант.. Заранее благодарен за советы....


 
Palladin ©   (2003-09-03 08:45) [1]

А что такое оптимум, и что такое простота? Дай определение.


 
Fuelfire   (2003-09-03 08:54) [2]

Насчет оптимума вчера вечером я наверное погорячился, а вот попроще записать этот алгоритм было бы желательно....


 
Zergling ©   (2003-09-03 09:17) [3]

Может RTTI поможет

uses TypInfo;

Procedure SetObjectProp(AComponent: TObject; APropertyName: String; AValue: TObject);
Function HasProperty(AComponent: TObject; APropertyName: String): Boolean;

Function HasProperty(AComponent: TObject; APropertyName: String): Boolean;
var PropInfo: PPropInfo;
Begin
PropInfo := GetPropInfo(AComponent.ClassInfo, APropertyName);
Result := PropInfo <> Nil;
End;

Procedure SetObjectProp(AComponent: TObject; APropertyName: String; AValue: TObject);
var PropInfo: PPropInfo;
Begin
PropInfo := GetPropInfo(AComponent.ClassInfo, APropertyName);
if PropInfo <> nil then
if PropInfo^.PropType^.Kind = tkClass then SetObjectProp(AComponent, PropInfo, AValue);
End;

for I := 0 to ComponentCount - 1 do
if HasProperty(Components[I], "Font") then SetObjectProp(Components[I], "Font", FontDialog1.Font);


 
KSergey ©   (2003-09-03 09:29) [4]

А может у всех контролов выставить свойство UseParentFont в True (или как-то так назыввается) и тогда будет достаточно сменить только у формы?
Хотя, возможно не достаточно. Есть еще меню, например.


 
Palladin ©   (2003-09-03 09:34) [5]

А здесь без RTTI никак.

procedure ChangeFont(C:TComponent;F:TFont);
var
i:integer;
begin
if GetPropInfo(C,"Font")<>nil then SetObjectProp(c,"Font",F);
for i:=0 to c.ComponentCount-1 do ChangeFont(c.Components[i],F);
end;

begin
if FontDialog1.Execute then ChangeFont(Self,FontDialog1.Font);
end;



Страницы: 1 вся ветка

Текущий архив: 2003.09.15;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.05 c
14-48745
SPeller
2003-08-27 07:19
2003.09.15
MSDN


14-48758
Dimka Kolbaskin
2003-08-26 10:12
2003.09.15
Масло


1-48546
tria
2003-09-04 14:28
2003.09.15
Как сделать чтобы в TEdit при Enabled=F не менялся цвет шрифта?


14-48783
MBo
2003-08-25 14:15
2003.09.15
Арифметика по модулю.


3-48428
Nikkkkk
2003-08-26 12:43
2003.09.15
Как создать индекс в TQuery