Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.09.15;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.02 c
14-48688
Pindos
2003-08-21 11:48
2003.09.15
Наше Радио


4-48823
Orion2
2003-07-15 12:40
2003.09.15
Переопределение оконной процедуры нескольким TEdit


1-48631
graphmail
2003-09-03 10:09
2003.09.15
Delphi+Excel


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


3-48402
Relaxxx
2003-08-26 11:59
2003.09.15
Сложный вопрос, вообще возможно такое здеслать???





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский