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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.01.2011, 14:10   #1
Vervolf
Пользователь
 
Аватар для Vervolf
 
Регистрация: 14.01.2011
Сообщений: 97
Печаль обработчик событий динамических объектов

в программе создаются динамически картинки, раскиданные по форме.
Цель: При клике на картинку, объект уничтожается.
вот код:
Цитата:
type
TForm1 = class(TForm)
Image1: TImage;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
Procedure Sn(Sender: TObject);
{ Public declarations }
end;

var
Form1: TForm1;
Img: array[1..100]of Timage;
i: integer;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin //
For i:=1 to 10 do
begin
Randomize;
img[i]:=Timage.Create(Form1);
img[i].Picture.LoadFromFile('1.bmp');
img[i].AutoSize:=true;
img[i].Transparent:=True;
img[i].Left:=Random(ClientWidth-img[i].Width);
img[i].Top:=Random(ClientHeight-img[i].Height);
img[i].OnClick:=sn;
img[i].Parent:=Form1;
end;
end;

procedure TForm1.Sn(Sender: TObject);
begin //
for i:=1 to 10 do
begin
if sender = img[i] then
begin
img[i].Destroy;
end;
end;

end;

end.
проблема в том, что иногда(в большинстве случаев)появляется ошибка.. "access violation at adress 00403329 in module project1.exe. read of address 000020A8". что я тут не так сделал?помогите пожалуйста.

Последний раз редактировалось Vervolf; 16.01.2011 в 15:57.
Vervolf вне форума Ответить с цитированием
Старый 16.01.2011, 21:57   #2
WhiteSpirit
Пользователь
 
Регистрация: 28.05.2010
Сообщений: 82
По умолчанию

Конечно, будет ошибка - нельзя уничтожать объекты в обработчиках их событий. Можно сделать так: по клику прятать изображения и включать таймер, а уже в обработчике таймера их уничтожать
WhiteSpirit вне форума Ответить с цитированием
Старый 17.01.2011, 18:45   #3
Vervolf
Пользователь
 
Аватар для Vervolf
 
Регистрация: 14.01.2011
Сообщений: 97
По умолчанию

Спасибо большое, попробую!
Vervolf вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработчик событий Borland C++ Jasper92 Помощь студентам 1 24.10.2010 09:57
Обработчик событий в DBLookupListBox MixanMM БД в Delphi 7 29.07.2010 13:08
обработчик событий кнопки Dmitriy.Ch Общие вопросы C/C++ 0 04.07.2009 09:35
обработчик событий ben95 Помощь студентам 5 28.01.2008 17:46