| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > как удалить компонент |
| Автор: chikistbuch 26.5.2012, 17:21 | ||||||
| Хочу сделать чтобы при нажатии на Enter в Edit'е он исчезал, да не просто исчезал, а вообще удалялся из формы. Edit'ы созданы в run-time (MyEdit1, MyEdit2, и т.д.) К примеру в MyEdit1 нажали Enter, вот код:
а вот и сама процедура удаления DestroyComponent:
Вопрос в том, что после завершения процедуры TForm1.EditKeyPress, выскакивает ошибка. Как я понимаю, приложение не может завершить выполнение процедуры несуществующего компонента http://s2.ipicture.ru/ При выполнении этого же кода в TForm1.EditExit, вызываемое как onExit, все ок
Подскажите, как удалить edit при нажатии в нем enter |
| Автор: northener 26.5.2012, 17:58 |
| Посылайте форме ваше собственное сообщение с помощью PostMessage. В обработчике этого сообщения и уничтожайте компонент. |
| Автор: chikistbuch 26.5.2012, 18:12 | ||
| расскажи, пожалуйста конкретнее: как именно послать сообщение и написать свой обработчик. Вот что я нашел в нете
|
| Автор: kami 26.5.2012, 18:13 |
| Почти оффтоп: northener, да, статья нужна Добавлено @ 18:23 Расшифровка ответа northener: http://forum.vingrad.ru/index.php?showtopic=253299&view=findpost&p=1826869 Настоятельно рекомендую прочитать пост БелАмор-а |
| Автор: northener 26.5.2012, 18:30 | ||
|
| Автор: chikistbuch 26.5.2012, 18:45 |
| kami, northener, да вы просто боги!!! СПС |
| Автор: Akella 26.5.2012, 23:16 |
| chikistbuch, а ты сомневался? ;) |
| Автор: northener 27.5.2012, 02:41 |
Вот ещё раз полазил по нашим форумам и по всемирной помойке. Но так и не нашел статью, в которой подробно и с объяснениями было бы описано как правильно уничтожать объекты! И не только из обработчиков их событий. Но и вообще. Нет нормальной (и не только нормальной - просто никакой) статьи, где бы описывалось различие между методами Free, Destroy, Release. |
| Автор: Akella 27.5.2012, 09:57 | ||
так можно в исходниках посмотреть |
| Автор: northener 27.5.2012, 17:39 |
Так их "жевать" надо |
| Автор: northener 27.5.2012, 23:58 | ||
По ссылке которую дал kami именно так и сделано. |
| Автор: northener 28.5.2012, 01:00 | ||
Ну хорошо. Пусть не статья. Пусть ссылка на FAQ. Лично для меня проще иметь под рукой готовую ссылку на то, где автор вопроса сможет получить подробную информацию о том как решить его задачу, чем всякий раз "набивать" пример в своём ответе. (Пальцы чай не казённые, а мои собственные. |
| Автор: Akella 28.5.2012, 09:25 | ||||
тут может быть проблема, если несколько раз создаешь и уничтожаешь объект если уничтожаешь просто Obj.Free, то потом при проверке if obj <> nil результат будет True поэтому лучше уничтожать так
или
|