Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Destroy себя - ошибка! 
:(
    Опции темы
e5620
Дата 28.2.2010, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 21.2.2010

Репутация: нет
Всего: нет



Доброго времени,
Проблема заключается в следующем, пишу для себя компонент, Родителем является TsScrollBox, а дочерними TsPanel (со свойствами alTop).

user posted image

Дочерние элементы создаю динамически, и присваиваются через "добавленную" к родителю функцию Add.

Ошибка заключается в следующем, в каждой строке имеется кнопка "Х" закрыть (удалить строку), При нажатии на нее вызывается встроенное событие doCloseClick, в котором выполняется Free;и переход в destructor:
Код

 DestroyComponents;
 inherited Destroy;


после этого осуществляется возврат к концу doCloseClick и "ОШИБКА" доступа к памяти по адресу 0х00000030.


PS: В аттачменте добавил компонент и тестовый пример (удалил где-то 60% кода, для удобочитаемости). 
PPS: пробывал решить через "SendMessage => в родитель" об удалении, тоже ничего не вышло.

Это сообщение отредактировал(а) e5620 - 28.2.2010, 17:53

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  test.rar 3,41 Kb
PM MAIL   Вверх
Frees
Дата 28.2.2010, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 9
Всего: 54




Цитата
 sScrollBox,sPanel,sLabel,sButton,sGauge
 что за зверки?



--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
e5620
Дата 28.2.2010, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 21.2.2010

Репутация: нет
Всего: нет



 
Цитата

sScrollBox,sPanel,sLabel,sButton,sGauge


альфаскины - http://alphaskins.com/index_rus.php
PM MAIL   Вверх
Frees
Дата 28.2.2010, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 9
Всего: 54



гдето нет ошибки, закрывается все..


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
e5620
Дата 28.2.2010, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 21.2.2010

Репутация: нет
Всего: нет



user posted image  
PM MAIL   Вверх
Frees
Дата 28.2.2010, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 9
Всего: 54



у меня нету такой ошибки

D2006

Это сообщение отредактировал(а) Frees - 28.2.2010, 19:25


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
e5620
Дата 28.2.2010, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 21.2.2010

Репутация: нет
Всего: нет



а у меня на 7й или 6-й ошибки, и в чем беда непойму, 

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

Это сообщение отредактировал(а) e5620 - 28.2.2010, 19:33
PM MAIL   Вверх
kami
Дата 28.2.2010, 20:15 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 23
Всего: 72



Цитата(e5620 @  28.2.2010,  17:31 Найти цитируемый пост)
пробывал решить через "SendMessage => в родитель"

Было и не раз. Путь правильный, только через PostMessage.
PM MAIL WWW   Вверх
e5620
Дата 28.2.2010, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 21.2.2010

Репутация: нет
Всего: нет



Попробывал на BDS2006:

user posted image

user posted image

Цитата

Было и не раз. Путь правильный, только через PostMessage. 

можно рабочий пример?

Это сообщение отредактировал(а) e5620 - 28.2.2010, 21:51
PM MAIL   Вверх
kami
Дата 28.2.2010, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 23
Всего: 72



Цитата(e5620 @  28.2.2010,  17:31 Найти цитируемый пост)
 вызывается встроенное событие doCloseClick,

В DoCloseClick:
Код

begin
  PostMessage(Parent.Handle{или как-там-он-называется}, WM_USER, integer(Self), 0);
  // далее - что угодно, кроме прямых и косвенных вызовов деструкторов себя
end;


в объявлении родителя:
Код

private
  procedure WMUserHandler(var Message:TMessage); message WM_USER; // или перекрыть метод WndProc
......


реализация:

Код

procedure MyParentConrtol.WMUserHandler(var Message:TMessage); message WM_USER;
begin
  TObject(Message.WParam).Free;
end;


Хотел выложить ссылки на предыдущие темы того же содержания, но лень искать, простите smile.

Цитата(e5620 @  28.2.2010,  21:39 Найти цитируемый пост)
Попробывал на BDS2006:

Код, как пробовали?

Это сообщение отредактировал(а) kami - 28.2.2010, 22:00
PM MAIL WWW   Вверх
e5620
Дата 28.2.2010, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 21.2.2010

Репутация: нет
Всего: нет



Решил, спасибо...


закоментировал 
// DestroyComponents;
и вместе с PostMessage идеально заработало.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0503 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.