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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.04.2014, 11:43   #1
Darlee
Пользователь
 
Регистрация: 22.03.2009
Сообщений: 28
По умолчанию Как удалить динамически созданные поля в ADOQuery?

Здравствуйте!

Есть форма Form2. Она выводит инфу о: материалах, заказчиках и т.д. в зависимости от нажатой кнопки на Form1.
Ну так вот, напр., при нажатии кнопки Сотрудники в Form2.ADOQuery динамически создаются поля из соотв. таблиц БД.
А при закрытии Form2 они должны разрушаться, чтоб без проблем можно было бы повторно открыть эту форму. Но с этим возникла неожиданная проблема. Следующий код, который вызывается в событии FormClose, вызывает ошибку EListError: List index out of bounds.
Код:
with ADOQuery1 do
begin
  active:=false;
  SQL.Clear;
  Close;
  try
    for i := 0 to ComponentCount-1 do
    if not (Components[i]=nil) and (Components[i] is TField) then
    begin
     Components[i].Free;
    end;

  except
    abort;
  end;
end;
Помогите, плиз!
Darlee вне форума Ответить с цитированием
Старый 28.04.2014, 11:47   #2
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Не вариант, что номера компонентов уменьшаются? Т. е. удалил компонент "один" - и компонентом "один" стал компонент "два"? В итоге на шаге n/2+1 ты попытаешься удалить компонент n/2+1, когда компонентов осталось n/2-1.

Попробуй удалять "с конца".
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 28.04.2014, 11:53   #3
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Для того, чтобы определить причину точнее, поставьте в обработчик точку останова и в отладчике посмотрите при каком значении i программа выдаёт ошибку.
Streletz вне форума Ответить с цитированием
Старый 28.04.2014, 11:57   #4
Darlee
Пользователь
 
Регистрация: 22.03.2009
Сообщений: 28
По умолчанию

Цитата:
Сообщение от Vanta11a Посмотреть сообщение
Не вариант, что номера компонентов уменьшаются? Т. е. удалил компонент "один" - и компонентом "один" стал компонент "два"? В итоге на шаге n/2+1 ты попытаешься удалить компонент n/2+1, когда компонентов осталось n/2-1.

Попробуй удалять "с конца".
Ой, ступила)) Спс!

Кстати, тут нет никого, кто напишет мне курсовую до 18 мая по теме "Описать ИС Аптека средствами UML" (с оплатой, естественно)? А то я пока с одной ковыряюсь...
Darlee вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не отображаются динамически созданные обьекты в Borland C++ Builder 6 Enterprise Suite... prouser C++ Builder 2 26.04.2010 20:35
события на динамически созданные кнопки. Gambler Компоненты Delphi 13 26.11.2009 10:43
Кликая на нужный Image, необходимо менять именно его, а не все динамически созданные. МаксMorfey Компоненты Delphi 2 04.01.2009 17:43
Как изменять динамически созданные Label МаксMorfey Компоненты Delphi 2 03.01.2009 10:23
Как сделать чтобы динамически созданные объекты оставались после закрытия формы? AHAPXUCT2007 Общие вопросы Delphi 7 28.09.2007 08:46