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

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

Обращение к группе объектов [D7, XP]


v_a_belousov ©   (2010-10-03 23:26:00) 

Здравствуйте! Заранее извиняюсь если ранее тема уже поднималась. Проблема следующая. Есть форма на ней GroupBox в котором находятся CheckBox'сы. Обращаться к каждому из них в виде Ext_CB1.Checked не удобно из за того что CheckBox'ов много а операции с ними необходимо производить схожие. Можно ли каким то другим способом к ним обратиться? Единственное на форме кроме этих CheckBox есть и другие к ним мне обращаться не нужно(но они находятся вне GroupBox)


v_a_belousov   (2010-10-04 21:18:00) [1]


> Может не надо все проверять, а достаточно обрабатывать изменение
> в
> обработчике?

То есть?


Anatoly Podgoretsky   (2010-10-04 11:54:00) [2]

> v_a_belousov  (03.10.2010 23:26:00)  [0]

Может не надо все проверять, а достаточно обрабатывать изменение в
обработчике?


v_a_belousov   (2010-10-03 23:50:00) [3]

Да. Спасибо большое!


Юрий Зотов   (2010-10-03 23:47:00) [4]


for i := 0 to GroupBox1.ControlCount -1 do
 if GroupBox1.Controls[i] is TCheckBox then
   with TCheckBox(GroupBox1.Controls[i]) do
   begin
     ... // Здесь делаем, что нужно
   end;


Так подойдет?


v_a_belousov   (2010-10-03 23:41:00) [5]

то есть в Caption CheckBox написано название расширения. В данный момент расширения вбиты от руки...


v_a_belousov   (2010-10-03 23:38:00) [6]

Требутся поочередно обратится к каждому CheckBox в GroupBox взять Caption и Checked у CheckBox сделать с ними необходимые операции и так далее... вообщем вот код с нажатия кнопки ок на форме...

procedure TSets_Form.Apply_ButtonClick(Sender: TObject);
//переменные
var RFE: TRegFileExt; i, num: integer;
begin
//регистрируем или восстанавливаем данные
if Ext_CB1.Checked then
begin
 //проверяем существует ли уже такое расширение
 RFE := GetRegisterFileType('pacrf');
 //если да, то сохраняем данные о нем
 if RFE.FExt<>'' then SaveRegisterFileType('pacrf');
 //и меняем данные на свои
 RegisterFileType('pacrf', Application.ExeName, 'Pac Reader File', Application.ExeName+' , '+
 IntToStr(1));
end else
begin
 //ищем среди сохраненных
 for i:=0 to Length(RegFileExts)-1 do
  begin
   //если сохраняли, то
   if AnsiLowerCase(RegFileExts[i].FExt)=AnsiLowerCase('pacrf') then
    begin
     //восстанавливаем
     RegisterFileType('pacrf', RegFileExts[i].OpenProgram, RegFileExts[i].FExtDiscription,
     RegFileExts[i].DefaultIcon);
     //запоминаем что восстановили
     num := i;
     //завершаем цикл
     break;
    end;
  end;
 //перебираем массив
 for i:=0 to Length(RegFileExts)-1 do
  begin
   //если элемент меньше убираемого, то
   if i<num then
    begin
     //оставляем его на месте
     RegFileExts[i] := RegFileExts[i];
    end else
    begin
     //если больше, то
     if i>num then
      begin
       //перемещаем его на позицию назад(затирая убираемый)
       RegFiles[i-1] := RegFileExts[i];
      end;
    end;
  end;
 //устанавливаем новую величину массива
 SetLength(RegFileExts, Length(RegFileExts)-1);
end;
end;

Думаю это поможет в объяснении того что мне нужно


Юрий Зотов   (2010-10-03 23:33:00) [7]

> Можно ли каким то другим способом к ним обратиться?

Возможно, что и можно. Вы дали слишком мало информации, уточните вопрос - что требуется в итоге?


Наверх

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