Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Программа и интерфейс
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 19.12.2013, 11:54
Curen Curen вне форума
Прохожий
 
Регистрация: 19.12.2013
Сообщения: 9
Версия Delphi: Delphi XE2
Репутация: 10
Печаль Динамическое удаление объектов

Здравствуйте все, кто решил сюда заглянуть.
Хочу сразу сказать, что в Делфи я новичок, изучал его самостоятельно, по разным книжкам и в институтах да университетах программированию (имею ввиду программированию вообще) меня не учили. Здесь я тоже впервые. Пытался найти решение своей проблемы через поиск, но не нашел. Не только здесь, но и в интернете. Видимо, я первый с такой проблемой.

Собственно проблема вот в чем:

Пишу программу для работы с текстом из динамически создаваемой формы. Т.е. поля для заполнения создаются самой программой в процессе своей работы, потом по нажатию кнопки все введенный данные из всех объектов записываются в файл. Это вроде бы все работает.

Если пользователь хочет создать новую карточку, то он нажимает на кнопки и форма должна обновиться, т.е. появляются начальные объекты на форме. Новые уже добавляются потом. Объекты находятся на панели TPanel1. При нажатии кнопки, чтобы удалить все разом, я делают так:

TPanel.free;

А потом программа динамически опять создает эту же панель и выстраивает на ней форму. Сразу скажу - если тыкать по кнопке мышью - все работает! Но начальство хочет, чтобы сие работало также при нажатии горячих клавиш. И тут проблема. Собственно процедура:
Код:
procedure TMainForm.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (ssCtrl in Shift) and (key = 78) then
  begin
    NewModul;
  end;
end;

NewModul - процедура, где находится собственно Panel1.free и другие операторы, создающие новую форму. Если форма изначальная, т.е. пользователь не успел добавить ни одного динамического объекта, то все работает. Если добавлен хоть один, то возникает ошибка:

Project nabor.exe raised exception class $C0000005 with message 'accees violation at 0x00455bab: read of address 0x00000000'

Блин, перепробовал уже наверное все, но в чем дело так и не понял. Самое интересное, что если в окне, описывающем ошибку, нажать кнопку "Continue", то программа сработает как надо. Пробовал запускать собственно exe'шник - тоже выдает окно с ошибкой, но тем не менее все срабатывает. В чем дело, может кто знает?

Последний раз редактировалось Admin, 19.12.2013 в 19:58.
Ответить с цитированием
 


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 10:07.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025