Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.017 c
1-48580
ossa
2003-09-04 07:57
2003.09.15
Подскажите как добавить путь к новым компонентом в


6-48677
Gigabyte
2003-07-13 17:51
2003.09.15
Веб сервер и PHP


3-48410
rh
2003-08-25 08:56
2003.09.15
SQL-запрос программно


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


3-48405
Alek Aaz
2003-08-25 15:35
2003.09.15
MDI и базы




   Наверх