Главная страница
    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.013 c
14-48764
*pavel
2003-08-26 13:30
2003.09.15
Novell & bad sector


3-48454
AkaSaint
2003-08-21 00:05
2003.09.15
Проблемы DCOM при работе в сети без контроллера домена


14-48762
DDT
2003-08-27 22:18
2003.09.15
Сайт delphimaster был недоступен


14-48774
Mystic
2003-08-25 12:26
2003.09.15
Раз в жизни бывает...


14-48708
DeMoN-777
2003-08-28 13:57
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский