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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.03.2021, 16:27   #1
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 627
По умолчанию Первый чекбокс в массиве не скрывается при обращении в цикле

Есть массив чекбоксов
Код:
var CheckBoxA: array [1..CBF] of TCheckBox;
CBF - константа, чтобы удобнее было расширять программу

Цикл их создания:
Код:
 for i:=1 to CBF do begin
  CheckBoxA[i]:=TCheckBox.Create(self);
  with CheckBoxA[i] do begin
   Parent:=Panel8;
   Width:=145;
   Height:=17;
   Left:=264;
   Top:=93+(18*i);
   Caption:=CBF1[i]; {CBF1 - массив со строками - именами}
   visible:=true;
   checked:=true;
  end;
end;
И есть еще один чекбокс, который должен их "погасить"
Код:
 for i:=1 to CBF do begin
  CheckBoxA[i].Visible:=CheckBox8.Checked;
 end;
Вот только возникает одна проблема: первый элемент массива отказывается "гасится". Но только первый, с остальными все норм
При чем мало того, что этот цикл его не хочет "гасить", так еще и если просто взять добавить дополнительную кнопку на форму и прописать, эта кнопка не работает - нажимает и никакого эффекта
Код:
CheckBoxA[1].Visible:=false
Кто-то может подсказать, в чем проблема?

Последний раз редактировалось Kronos913; 24.03.2021 в 16:32.
Kronos913 вне форума Ответить с цитированием
Старый 24.03.2021, 16:32   #2
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 627
По умолчанию

CheckBoxA[1] игнорирует любые попытки воздействовать на него из программы.
Ради эксперимента попробовал сделать вот так:
Код:
 for i:=1 to CBF do begin
  CheckBoxA[i]..Checked:=CheckBox8.Checked;
 end;
Итог: от нажатия на CheckBoxA[1] - он активируется и дезактивируется нормально

Но вот если через цикл - снова, на него не действует ничего
При том что с остальными элементами все норм, цикл меняет им значения
Kronos913 вне форума Ответить с цитированием
Старый 24.03.2021, 16:40   #3
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 627
По умолчанию

Хм... Сделал вот так
Код:
var CheckBoxA: array [0..CBF] of TCheckBox;
При этом, 0 элементом никто не пользуется, он даже не создается. Остальной код оставил весь без изменения: используются только элементы начиная с номера 1
И все заработало

Ок, проблему то решил... Но "кустарным методом", который занимает лишнюю память. Все же надо разобраться, в чем проблема изначально

Последний раз редактировалось Kronos913; 24.03.2021 в 16:44.
Kronos913 вне форума Ответить с цитированием
Старый 24.03.2021, 16:56   #4
beegl
instagram
Участник клуба
 
Аватар для beegl
 
Регистрация: 24.05.2008
Сообщений: 1,451
По умолчанию

немножко похоже на "Циклический опрос компонентов":

Код:
procedure TForm1.FormCreate(Sender: TObject);
var
  I: integer;
begin
  for I:= 0 to ComponentCount -1 do
    if (Components[I] IS TEdit) then
      (Components[I] AS TEdit).{Вашпараметр} := {ваше значение};
end;
beegl вне форума Ответить с цитированием
Старый 24.03.2021, 20:23   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Kronos913, добавил ваш код из 1 сообщения в пустой проект - всё нормально исчезает и появляется. Может быть, выложите проект целиком, убрав ненужные части, но оставив неверное поведение? И второй вопрос - почему не скрывать саму панель-родитель сразу со всеми чекбоксами?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Инкремент при обращении ts-alan Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 2 07.07.2015 10:46
Почему при обращении к структуре из класса возникает исключение:нарушение прав доступа при записи? iron-mik Помощь студентам 2 18.05.2014 01:40
Зависает VBA при обращении к Google Maps при расчете расстояний AlexTrasko Microsoft Office Excel 1 30.07.2013 10:49
Зависание при работе с HttpWebRequest при обращении к некоторым сайтам Mishiko C# (си шарп) 0 16.08.2012 12:24