![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обращение к группе объектов [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]> Можно ли каким то другим способом к ним обратиться?
Возможно, что и можно. Вы дали слишком мало информации, уточните вопрос - что требуется в итоге?