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

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

сообщения в TabSheet [D7, WinXP]


Alex_KV ©   (2006-01-20 14:12:00) 

Здравствуйте, Мастера!
Передо мной такая задача:
есть форма, на ней несколько TabSheet'ов,
на которых всякие др. контролы.
Хочу в зависимости от опред. условий
на любом TabSheet'e вкл/выкл контролы (Enable: true/false).
Перебирать все контролы лень.
Есть у TTabSheet метод Broadcast, рассылающий сообщения
дочерним контролам.
Если кто знает какое сообщение нуна для вкл.выкл контролов
или другой способ, подскажите, буду благодарен!


eugie   (2006-01-26 05:45:00) [1]

Не помню, насколько давно, но в FAQ этого сайта был пример для изменения свойств дочерних объектов, реализованный через PPropInfo, работает достаточно  хорошо.
Короче, можно, например так изменить свойства ReadOnly для всех контролов, помещенных на форму:

Procedure SetReadOnly(Send:TForm; ROnly:Boolean);
Var i:Integer;
   f:Integer;
   PropInfo: PPropInfo;
Begin
 If ROnly=True Then
    f:=1
 Else
    f:=0;

 With Send Do
 Begin
    For i:=0 to Send.ComponentCount-1 Do
    Begin

       If Send.Components[i].Tag = 0 Then
       Begin

         if not (Send.Components[i].ClassInfo=nil) then
         begin
           PropInfo:= GetPropInfo(Send.Components[i].ClassInfo, 'ReadOnly');
           if PropInfo <> nil then
           begin
             case PropInfo^.PropType^.Kind of
               tkEnumeration :  SetOrdProp(Send.Components[i],PropInfo,f);
             end; // case
           end;
         end;
       End;

    End;
 End;
End;
В твоем случае - замени 'ReadOnly' на 'Enabled'.


begin...end   (2006-01-20 14:25:00) [2]

> Alex_KV   (20.01.06 14:12)

> Хочу в зависимости от опред. условий
> на любом TabSheet'e вкл/выкл контролы (Enable: true/false).
> Перебирать все контролы лень.

TTabSheet.Enabled ?


Johnmen   (2006-01-20 14:18:00) [3]

Стандартное решение - использовать TActionList.


Ega23   (2006-01-20 14:18:00) [4]


With TTabSheet do
for i:=0 to ControlCount-1 do
 TControl(Controls[i]).Enabled:=not TControl(Controls[i]).Enabled;


Наверх

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