|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
20.01.2011, 09:50 | #1 |
Форумчанин
Регистрация: 15.11.2007
Сообщений: 229
|
Уничтожить кнопку при нажатии на неё же.
Добрый день!
Есть два Edit'а, за ними сразу же идёт button, и таких наборов несколько, создаются динамически. Кнопке присваиваю на нажатие: уничтожение двух Edit, и уничтожение самой себя. Что странно: На разных GroupBox'ах реагирует по разному. На первом иногда выводит ошибку (т.е. при одной последовательности действий реагирует по-разному), на втором всё время выдаёт ошибку, процедуры создания и удаления идентичны. Но не в этом даже суть. Как можно удалить конпку при нажатии на неё? Должен ли работать Free. И вообще реально ли из собственной же процедуры удалить себя?
Компьютер не подчиняется законам физики: глюки возникают из ниоткуда, файлы исчезают в никуда, а вес измеряется в метрах.
Последний раз редактировалось NoName_emaNoN; 20.01.2011 в 09:54. |
20.01.2011, 10:15 | #2 |
!=
Участник клуба
Регистрация: 08.09.2008
Сообщений: 1,751
|
вроде
Код:
|
20.01.2011, 10:45 | #3 |
Подтвердите свой е-майл
Регистрация: 19.12.2010
Сообщений: 808
|
Не-а... не должнo...
Вот правильный код: Код:
|
20.01.2011, 10:48 | #4 | ||||
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
Цитата:
Цитата:
Цитата:
Цитата:
Но более того. Даже если вы уничтожите объект внутри него самого ничего страшного не произойдет. Тело процедуру продолжит выполнятся как ни в чем не бывало. Ведь оно не уничтожено, и продолжает болтаться в пямяти. Главное не использовать Sender после Sender.Free (ну и далее не обращатся к полям объекта по этому адресу). P.S.: Даже такое проканает Код:
Последний раз редактировалось Sibedir; 20.01.2011 в 11:00. |
||||
20.01.2011, 11:15 | #5 | ||
Старожил
Регистрация: 20.04.2008
Сообщений: 5,528
|
Цитата:
Цитата:
чаще всего это сработает но об абсолютной гарантии (для любого объекта) не может быть и речи.
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 20.01.2011 в 11:19. |
||
20.01.2011, 12:45 | #6 | ||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
так что все нормально вернется, мы уничтожили Sender, а не Self. во вторых с освобождением обьекта код не изменяется. Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
||
20.01.2011, 14:12 | #7 | ||
Старожил
Регистрация: 20.04.2008
Сообщений: 5,528
|
Цитата:
procedure Tbuton.Click; которая принадлежит самому объекту (в данном случае кнопке). Код:
Код:
Цитата:
Tbutton наследник Tcontrol Код:
Код:
Код:
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 20.01.2011 в 14:39. |
||
20.01.2011, 15:56 | #8 | |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
2 evg_m
Да все может быть. Но ТС говорил про button. Я так понимаю это простой BTutton. И к тому же я написал: Цитата:
А если вам не нравится наше решение - предложите своё. Вариант с таймером чёт тоже не вдохновил. |
|
20.01.2011, 16:18 | #9 |
Заблокирован
Регистрация: 27.05.2010
Сообщений: 1,099
|
Грамотно это делается это так: форме, на которой находится кнопка, асинхронно (PostMessage) посылается некое заранее предопределенное сообщение. По получении сообщения форма преспокойно разрущает контрол-отправитель сообщения.
|
20.01.2011, 17:13 | #10 |
Подтвердите свой е-майл
Регистрация: 19.12.2010
Сообщений: 808
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
при нажатии на кнопку Delete | vik85 | Помощь студентам | 0 | 20.12.2009 20:34 |
Скрытие интерфейса при нажатии на кнопку | kostghost | Общие вопросы Delphi | 3 | 28.08.2009 11:10 |
прокрутка при нажатии на кнопку | neformat | JavaScript, Ajax | 0 | 20.06.2008 20:40 |
При нажатии на кнопку добавить в PageControl | VenMaster | Компоненты Delphi | 5 | 25.04.2008 01:41 |
Загрузка файла при нажатии на кнопку | Simply-Art | Общие вопросы Delphi | 15 | 23.01.2007 14:00 |