Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2012.05.27;
Скачать: CL | DM;

Вниз

Помогите с деструктором   Найти похожие ветки 

 
jacksotnik   (2012-01-25 18:11) [0]

Всем привет. Создаю объект
TnmStick = class(TObject)
 private
  FStickDelBtn    : TsSpeedButton;
  procedure FStickDelBtnClick(Sender: TObject);
 public
   DynMemo : TsMemo;

   constructor CreateStick(AOwnerPanel : TsPanel; const AString:string= "");
   destructor  Destroy; override;

В конструкторе создаю эту самую кнопку. В деструкторе делаю Free кнопочке. Мне надо чтоб по нажатии на эту кнопочку объект уничтожался. делаю так
procedure TnmStick.FStickDelBtnClick(Sender: TObject);
begin
 destroy;
end;
Объект уничтожается но при этом вываливается экзепшн. Access violation. Подскажите что я не так делаю


 
Плохиш ©   (2012-01-25 18:16) [1]


> Подскажите что я не так делаю

Попробуй выстрелить себе в голову, а потом вызвать скорую, тот же самый Access violation получишь.


 
jacksotnik   (2012-01-25 18:24) [2]

Блин ну в принципе я это и понял. Вот и спрашиваю как уничтожить правильно


 
brother ©   (2012-01-25 18:27) [3]

извини, но тут у тебя каша...


 
Плохиш ©   (2012-01-25 18:29) [4]


>  как уничтожить правильно

Кто создал, тот и уничтожает.

> TnmStick = class(TObject)
>  private
>   FStickDelBtn    : TsSpeedButton;
>   procedure FStickDelBtnClick(Sender: TObject);
>

А этому вообще в данном классе не место. Структура изначально не правильная.


 
brother ©   (2012-01-25 18:29) [5]

вместо этого
> destroy;

вызови FStickDelBtn.Free


 
brother ©   (2012-01-25 18:30) [6]

хотя, самому себя уничтожать нельзя...


 
brother ©   (2012-01-25 18:31) [7]

> В деструкторе

чьем? код совсем не полон, диагноз не поставить...


 
jacksotnik   (2012-01-25 18:33) [8]

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


 
Плохиш ©   (2012-01-25 18:43) [9]


> jacksotnik   (25.01.12 18:33) [8]
>
> У меня в этом объекте лежит панелька а на ней кнопочка,
> на мейнформе по нажатии на кнопку я создаю эти объекты,
> но уничтожать их мне надо именно при нажатии на эту динамически
> созданную кнопочку.
>

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


 
Плохиш ©   (2012-01-25 18:45) [10]

+ к

> Плохиш ©   (25.01.12 18:43) [9]

При нажатии кнопки проверяешь, присвоено ли что-то событию, если присвоено, то выполняешь.


 
jacksotnik   (2012-01-25 18:48) [11]

Вот это другое дело. Спасибо большое



Страницы: 1 вся ветка

Текущий архив: 2012.05.27;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.008 c
2-1327559321
rusmus
2012-01-26 10:28
2012.05.27
Использование edit1


2-1327052281
3asys
2012-01-20 13:38
2012.05.27
копирование изображения формы


15-1327091402
Юрий
2012-01-21 00:30
2012.05.27
С днем рождения ! 21 января 2012 суббота


2-1327400950
Григорий
2012-01-24 14:29
2012.05.27
помогите разобраться с кодом


2-1327425569
sem
2012-01-24 21:19
2012.05.27
Вызов процедуры