|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
Как закрыть форму?
Задача очень простая. При активизации формы проверяется некое условие. Если оно выполняется, то корректная работа формы невозможна, и её надо закрыть до устпанения причин.
Имеем текст программы Код:
procedure TF_AddValueParam.FormActivate(Sender: TObject); begin .... .... if n =0 then Close; .... .... end; Наверно все правильно. Только вот мне то что делать? |
#2
|
||||
|
||||
Application.Terminate
Gravitas |
#3
|
|||
|
|||
Способ кардинальный. Закрывается программа, а не форма.
Дело в том, что вызываю и уничтожаю эту форму так: Код:
F_AddValueParam := TF_AddValueParam.Create(Self); F_AddValueParam.User := User; F_ValueList.Visible := False; F_AddValueParam.ShowModal; F_AddValueParam.Free; F_ValueList.Visible := True; |
#4
|
||||
|
||||
Цитата:
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#5
|
|||
|
|||
Мне надо выйти из формы, а выходит только из процедуры. В любой другой процедуре Close закрывает форму где бы он ни стоял. Exit завершает работу процедуры. В обработчике события OnActivate Close не хочет закрывать форму, просто выходит из процедуры. Форма, из которой надо выйти, создаётся динамически см. #3
Последний раз редактировалось VANNIK002, 09.07.2011 в 23:18. |
#6
|
||||
|
||||
1. Обязательно закрыть, спрятать недостаточно?
2. В каком контексте используется Close? Как привёл в примере, или имеется что то ещё? 3. Зачем вообще активизировать форму? Сделай проверку раньше. Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#7
|
|||
|
|||
Цитата:
1. Спрятал, а дальше что, Вернуться то в вызывающую форому всёравно надо. Мало того, хотелось бы через выход, а не через другое место. 2. В этом Unit два Close. Один почти один в один как в примере. Другой в обработчике события кнопки Выход. К кнопке Выход вопросов нет. 3. Зачем активизировать форму? Я не знаю как работать с не активизированной формой. Сделать проверку раньше конечно можно, но это повлечёт серьёзное усложнение и увеличение кода. Более - менее "нормальный" выход я нашел. Сделал на форме неактивным всё, кроме кнопки Выход. Работает, но смотреть противно. Проблема закрыта, вопрос остался. Почему с помощью функции Close не закрывается форма, и не происходит возврат в вызывающую форму. Неужели я первый, кто столкнулся с этой проблемой??? |
#8
|
|||
|
|||
Выйти из формы?
Код:
Form2.close; Серьёзное усложнение и увеличение кода? Код:
... if твоя_переменная = нужному_значению then Form2.show; ... |
#9
|
|||
|
|||
Я ЧАЙНИК но прежде, чем беспокоить занятых людей, читаю книги. У меня их много. Ваш вариант в одной из них описан и мной опробован....
Чтобы определить, можно ли работать с этой формой, делается запрос к базе данных. Прежде, чем сделать запрос, надо определиться с параметрами запроса. Если в запросе нет ни одной записи, то тогда не стоит открывать форму. |
#10
|
|||
|
|||
Тебе нужно написать еще один метод, например Execute. Как это сделано в Диалогах.
Код:
procedure TF_AddValueParam.Execute; begin .... .... if n = 0 then Exit; ShowModal; .... .... end; Код:
F_AddValueParam := TF_AddValueParam.Create(Self); F_AddValueParam.User := User; F_ValueList.Visible := False; F_AddValueParam.Execute; // <<==-- здесь F_AddValueParam.Free; F_ValueList.Visible := True; |
#11
|
|||
|
|||
VANNIK002, не могу посмотреть исходники. Я не могу качать с этого сайта
|