Здравствуйте все, кто решил сюда заглянуть.
Хочу сразу сказать, что в Делфи я новичок, изучал его самостоятельно, по разным книжкам и в институтах да университетах программированию (имею ввиду программированию вообще) меня не учили. Здесь я тоже впервые. Пытался найти решение своей проблемы через поиск, но не нашел. Не только здесь, но и в интернете. Видимо, я первый с такой проблемой.
Собственно проблема вот в чем:
Пишу программу для работы с текстом из динамически создаваемой формы. Т.е. поля для заполнения создаются самой программой в процессе своей работы, потом по нажатию кнопки все введенный данные из всех объектов записываются в файл. Это вроде бы все работает.
Если пользователь хочет создать новую карточку, то он нажимает на кнопки и форма должна обновиться, т.е. появляются начальные объекты на форме. Новые уже добавляются потом. Объекты находятся на панели 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'шник - тоже выдает окно с ошибкой, но тем не менее все срабатывает. В чем дело, может кто знает?