Форум: "Начинающим";
Текущий архив: 2012.05.27;
Скачать: [xml.tar.bz2];
ВнизПомогите с деструктором Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.003 c