Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как установить свой фонт для контролов при Enabled=false


bss ©   (2007-04-16 09:20:00) 

Как установить произвольный шрифт для контрола, когда состояние контрола Enabled=false?


{RASkov}   (2007-04-16 13:49:00) [1]

> [12] bss   (16.04.07 13:41)

Приводи к общему родителю.


bss   (2007-04-16 13:41:00) [2]

А если контролы разных типов (TEdit, TButton и т.п.)?


Yanis   (2007-04-16 13:17:00) [3]


> Дак вот 3 раза обратится к RTTI для каждого контролла при
> каждой смене состояния любого из них — не позволительная
> роскошь.

Да работа с VCLвообще штука страшная.


{RASkov}   (2007-04-16 13:13:00) [4]

> [9] homm ©   (16.04.07 13:12)

With


homm   (2007-04-16 13:12:00) [5]

> после смены состояния Enable Controla.

Это был наводящий вопрос, ответ на который я догадывался. Дак вот 3 раза обратится к RTTI для каждого контролла при каждой смене состояния любого из них — не позволительная роскошь.


{RASkov}   (2007-04-16 12:52:00) [6]

> И когда это вызывать?

после смены состояния Enable Controla.
Сделать процедуру, например:

procedure SetFontEn;
var
i: Integer;
begin
for i := 0 to ComponentCount - 1 do
  if (Components[i] is TButton) then
    if (Components[i] as TButton).Enabled then
      (Components[i] as TButton).Font.Name := имя_шрифта else
        (Components[i] as TButton).Font.Name := имя_шрифта;
end;

> И как потом назад возвращать?

Так-же.


homm   (2007-04-16 12:06:00) [7]

> [6] Yanis ©   (16.04.07 11:21)
> Примерно так:

И когда это вызывать? И как потом назад возвращать?


Yanis   (2007-04-16 11:21:00) [8]

Примерно так:
var
 i: Integer;
begin
 for i := 0 to ComponentCount - 1 do
   if (Components[i] is TButton) then
     if not (Components[i] as TButton).Enabled then
       (Components[i] as TButton).Font.Name := имя_шрифта;
end;


bss   (2007-04-16 10:51:00) [9]

У нескольких контролов сразу


Yanis   (2007-04-16 10:39:00) [10]


> Как установить произвольный шрифт для контрола, когда состояние
> контрола Enabled=false?

Так же как и у компонента у которого состояние Enabled = True.
Не совсем ясно, в чём конкретно загвоздка.


Novice   (2007-04-16 10:22:00) [11]

procedure TForm1.Button1Click(Sender : TObject);
begin
if Button2.Enabled = false then Button2.Font.Name := 'Arial' else
Button2.Font.Name := 'MS Sans Serif';
end;

:)


Kolan   (2007-04-16 09:57:00) [12]

> Novice  

Еще же назад надо вернуть :)


Novice   (2007-04-16 09:53:00) [13]

procedure TForm1.Button1Click(Sender : TObject);
begin
if Button2.Enabled = false then Button2.Font.Name := 'Arial';
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо