Форум: "Основная";
Текущий архив: 2006.02.26;
Скачать: [xml.tar.bz2];
Внизсообщения в TabSheet Найти похожие ветки
← →
Alex_KV (2006-01-20 14:12) [0]Здравствуйте, Мастера!
Передо мной такая задача:
есть форма, на ней несколько TabSheet"ов,
на которых всякие др. контролы.
Хочу в зависимости от опред. условий
на любом TabSheet"e вкл/выкл контролы (Enable: true/false).
Перебирать все контролы лень.
Есть у TTabSheet метод Broadcast, рассылающий сообщения
дочерним контролам.
Если кто знает какое сообщение нуна для вкл.выкл контролов
или другой способ, подскажите, буду благодарен!
← →
Johnmen © (2006-01-20 14:18) [1]Стандартное решение - использовать TActionList.
← →
Ega23 © (2006-01-20 14:18) [2]
With TTabSheet do
for i:=0 to ControlCount-1 do
TControl(Controls[i]).Enabled:=not TControl(Controls[i]).Enabled;
← →
begin...end © (2006-01-20 14:25) [3]> Alex_KV (20.01.06 14:12)
> Хочу в зависимости от опред. условий
> на любом TabSheet"e вкл/выкл контролы (Enable: true/false).
> Перебирать все контролы лень.
TTabSheet.Enabled ?
← →
eugie (2006-01-26 05:45) [4]Не помню, насколько давно, но в 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".
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2006.02.26;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.033 c