| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Как удалить динамически созданую кнопку самой себя |
| Автор: Zero 1.4.2005, 17:07 |
| САБЖ. Короче, у меня создаётся динамически панель на которой находится кнопка, и при нажатии на неё надо чтобы панель в месте с кнопкой удалялась. Но при удалении кнопки, т.к. она удаляет сама себя появляется ошибка, как этого избежать. PS: Альтернативные варианты не подходят, т.е. кнопка должна полюбому создаватся динамически, и потом удалятся при нажатии на неё. |
| Автор: z-END 1.4.2005, 17:15 | ||||
это первоапрельское помешательство-)
|
| Автор: Zero 1.4.2005, 17:29 |
| z-END я понимаю что сегодня 1-ое апреля, но мне не смешно... Я уже со вчерашнего вечера не могу исправить эту ошибку. Ты лучше покажи как её удалить и чтобы ошибка не выскакивала. |
| Автор: fess 1.4.2005, 17:40 | ||
| Попробуй уничтожать через Timer, т.е. в событии кнопки OnClick включаешь таймер, а в событии OnTimer уничтожаешь панель и кнопку. Пример кода:
У меня работает без ошибок. |
| Автор: z-END 1.4.2005, 17:41 | ||
| Zero я тебе показал данным примером, что при удалении кнопки никакой ошибки нет и возникать не может... положи мой код на пустой форме - при запуске создастся кнопка при нажатии на нее удалится. ЗЫ прошу прощения, про панель не заметил в таком случае менеям первоапрельскую процедуру на такую:
|
| Автор: Zero 1.4.2005, 21:41 | ||||||||
Дык я то что до этого и сделал, и при выполнении строки:
Ну до ладно, я только что сам нашёл один материал, и работает:
Вот так, учись студент!!! |
| Автор: Alex 2.4.2005, 01:38 | ||||||
Мда... Студент, учиться вам еще долго. Если ты уничтожаешь панель, то всем объектам владельцам, которых является панель, также отправляется сообщение об удалении. Именно поэтому ты и получал ошибку при удалении кнопки. Скорей всего ты удалял панель, а потом уже кнопку, которой уже не существует т.к. при удалении панели кнопка, принадлежащая панели уже удалилась. Вот тебе два кода удаления кнопки и панели по нажатию на кнопку и не один из них не приведет к ошибке: 1.
2.
Button9 лежит на panel1 |
| Автор: Zero 2.4.2005, 09:32 | ||||||||
Alex да ты бы хоть сам то для начала проверил, первый твой код. Как раз он и приводит к той же ошике что и у меня получалась, т.к. у тебя сначала удаляется панель, а потом Assigned выдаёт ложную информцию, а потом удаляется не существующая кнопка.
Нет.
Ето я знаю, поэтому удалял только одни панели, но при удалении кнопки, так как у меня на панельках есть кнопка удалить (ну типа поста), то при удалении этой кнопки (самой себя и возникала ошибка). Хотя сейчас просто попробывал удалить так:
Alex а мож есть офицально признаный код для "удаления самого себя", чтобы 100% работал, самое главное при показе преподу чтобы не возник. А то у некотрых так бывает, что пока делаешь в Wib'XP, то работает нормально, хотя и должно глюкать, а потом приносишь в радик свой курсач, там на 98-ых сразу что-ниюудь да глюканёт, и пятёрка накроется, а точнее переделывать придётся и потом приходить через неделю. |
| Автор: Girder 2.4.2005, 09:42 |
| http://forum.vingrad.ru/index.php?showtopic=42822&view=findpost&p=329564 |
| Автор: Alex 2.4.2005, 14:29 |
| Zero, приношу свои извинения за примеры. Я их проверял, но так вышло, что они работали. Сделай как говорит Girder и все будет нормально. |
| Автор: Zero 2.4.2005, 14:44 |
| Alex а вообщето тот код который у меня, я его взял в одной теме где отвечал Посол, а его коды обычно у меня работают нормально. Girder а ты не мог бы пояснить, в твоём примере всё на API-функциях сделано, а я их терпеть не могу, как тогда сделать, с учётом что у меня всё в том числе и кнопка которой я удаляю находится на панели, а удаляю я сами панели, а на них мнго компонентов находятся, и они автоматически удаляются при удалении панели... Короче какой код посоветуешь для удаления панели самой? |
| Автор: December 2.4.2005, 15:18 |
| Проблему можно решить с помощью ApplicationEvents.OnIdle - будет работать на любой системе. |
| Автор: Girder 2.4.2005, 20:16 | ||||||
Но... вот ентот код... для любых... созданный компонентов
PS: Кнопка Button2 и хреново туча компонентов... лежит на Panel1 Или вот так:
|
| Автор: Zero 2.4.2005, 23:48 | ||
Спасибо, Girder, твой код самый лучший из всех на данный момент предложенных, |
| Автор: Alex103 3.4.2005, 01:11 | ||
Может так!!!
|
| Автор: Girder 3.4.2005, 02:19 | ||
PS: Т.е. не надежно |
| Автор: Alex103 3.4.2005, 02:28 | ||||
буду знать сенкс. |
| Автор: Zero 3.4.2005, 08:01 | ||||
Типо того оно и было.
|