Главная страница
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.48 MB
Время: 0.016 c
1-48614
Layner
2003-09-02 15:13
2003.09.15
меню ABOUT (о программе)


14-48768
Palladin
2003-08-25 16:26
2003.09.15
Однако :))


1-48645
Skif
2003-09-03 05:19
2003.09.15
Пробег по компонентам


1-48600
der
2003-09-03 10:36
2003.09.15
Через


1-48568
Raper
2003-09-04 11:00
2003.09.15
Допустим что Hex строго равняется 3FC покажите пожалуйста пример