Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.09.2008, 19:32   #1
_Инженер_
Пользователь
 
Регистрация: 19.06.2008
Сообщений: 32
По умолчанию Как менять состояние объектов в групбоксе всех вместе сразу

Можно ли как-то делать объекты в групбоксе Enabled и Disabled. Все сразу. Нет ли такого способа? Уж очень не охота по отдельности каждый.
Вообще придумал обходной маневр. Делаю сам групбокс Enabled:=false, а затем закрашиваю все надписи сереньким.
GroupBox3.Font.color:=clInactiveCap tion;
Получается похоже. Но нет рельефности неактивных элементов. Да и текст там одного цвета с фоном должен быть. Насколько я знаю, там какие-то картинки поверх отображаются.
_Инженер_ вне форума Ответить с цитированием
Старый 16.09.2008, 19:47   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Можно ли как-то делать объекты в групбоксе Enabled и Disabled. Все сразу. Нет ли такого способа?
В цикле перебором всех компонентов формы с проверкой на принадлежность данному групбоксу, то есть
if Component[i].Parent.Name='GroupBox1' then
Component[i].Enabled:=...
...
mihali4 вне форума Ответить с цитированием
Старый 16.09.2008, 19:54   #3
_Инженер_
Пользователь
 
Регистрация: 19.06.2008
Сообщений: 32
По умолчанию

ммм...спасибо, попробую
_Инженер_ вне форума Ответить с цитированием
Старый 16.09.2008, 20:03   #4
_Инженер_
Пользователь
 
Регистрация: 19.06.2008
Сообщений: 32
По умолчанию

А как узнать i?
_Инженер_ вне форума Ответить с цитированием
Старый 16.09.2008, 20:42   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

можно просто Groupbox1.Enable:=
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 16.09.2008, 22:49   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от _Инженер_ Посмотреть сообщение
А как узнать i?
Делается примерно так:
(в этом примере перечислим все компоненты, принадлежащие GroupBox1)
Код:
var i: integer;
    cmp: TComponent;
begin
for i:=0 to ComponentCount-1 do
begin
cmp:=Components[i];
if cmp.HasParent and (cmp.GetParentComponent.Name='GroupBox1') then
ShowMessage(Components[i].Name);
end;
end;
mihali4 вне форума Ответить с цитированием
Старый 17.09.2008, 12:35   #7
_Инженер_
Пользователь
 
Регистрация: 19.06.2008
Сообщений: 32
По умолчанию

То есть ComponentCount содержит i. Спасибо за развернутый ответ.
_Инженер_ вне форума Ответить с цитированием
Старый 17.09.2008, 12:35   #8
_Инженер_
Пользователь
 
Регистрация: 19.06.2008
Сообщений: 32
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
можно просто Groupbox1.Enable:=
можно, только внешний вид не меняется
_Инженер_ вне форума Ответить с цитированием
Старый 17.09.2008, 14:38   #9
_Инженер_
Пользователь
 
Регистрация: 19.06.2008
Сообщений: 32
По умолчанию

Components[i].name и
var cmp:TComponent;
cmp.name
не имеют property Enabled. Как теперь сделать компонент Enabled:=false, имея имя компонента. Прошу прощения, если вопрос глупый. Но все когда-то начинали, верно?
_Инженер_ вне форума Ответить с цитированием
Старый 17.09.2008, 15:13   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

для всех использованных в GroupBox1 объектов напишите примерно так:
Код:
var i: integer;
    cmp: TComponent;
begin
  for i:=0 to ComponentCount-1 do
  begin
    cmp:=Components[i];
    if cmp.HasParent and (cmp.GetParentComponent.Name='GroupBox1') then
    begin
      // ShowMessage(Components[i].Name);
      if cmp is TButton then
         (cmp as TButton).Enabled := false;
      if cmp is TEdit then
         (cmp as TEdit).Enabled := false;
     end;
  end;
end;
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перестал работать яваскрипт, причем во всех браузерах сразу. Adamant Свободное общение 6 12.09.2008 23:55
Узнать состояние подключения Hottabych Работа с сетью в Delphi 8 03.03.2008 18:10
состояние CDRom joker Win Api 12 27.01.2008 08:06
Снятие Защиты с листов, сразу со всех valerij Microsoft Office Excel 2 02.11.2007 21:19
Завершение приложения, вместе с ОС John_chek Общие вопросы Delphi 5 08.06.2007 16:00