Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 09.07.2011, 19:40
VANNIK002 VANNIK002 вне форума
Прохожий
 
Регистрация: 01.06.2011
Сообщения: 28
Репутация: 10
По умолчанию Как закрыть форму?

Задача очень простая. При активизации формы проверяется некое условие. Если оно выполняется, то корректная работа формы невозможна, и её надо закрыть до устпанения причин.
Имеем текст программы
Код:
procedure TF_AddValueParam.FormActivate(Sender: TObject);
begin
  .... 
  ....
  if n =0 then Close;
  ....
  ....
end;
В данном случае, Close работает как Exit.
Наверно все правильно. Только вот мне то что делать?
Ответить с цитированием
  #2  
Старый 09.07.2011, 19:45
Аватар для Gravitas
Gravitas Gravitas вне форума
Новичок
 
Регистрация: 12.06.2011
Сообщения: 61
Версия Delphi: 7
Репутация: 38
По умолчанию

Application.Terminate
__________________
Gravitas
Ответить с цитированием
  #3  
Старый 09.07.2011, 20:52
VANNIK002 VANNIK002 вне форума
Прохожий
 
Регистрация: 01.06.2011
Сообщения: 28
Репутация: 10
По умолчанию

Способ кардинальный. Закрывается программа, а не форма.
Дело в том, что вызываю и уничтожаю эту форму так:
Код:
  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  
Старый 09.07.2011, 22:54
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Цитата:
Сообщение от VANNIK002
Close работает как Exit
Всмысле, выход из процедуры? Или как Exit из программы? Во втором случае - у тебя эта форма является главной? Если да, то всё логично. В первом случае - вроде так и должно быть.
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #5  
Старый 09.07.2011, 23:14
VANNIK002 VANNIK002 вне форума
Прохожий
 
Регистрация: 01.06.2011
Сообщения: 28
Репутация: 10
По умолчанию

Мне надо выйти из формы, а выходит только из процедуры. В любой другой процедуре Close закрывает форму где бы он ни стоял. Exit завершает работу процедуры. В обработчике события OnActivate Close не хочет закрывать форму, просто выходит из процедуры. Форма, из которой надо выйти, создаётся динамически см. #3

Последний раз редактировалось VANNIK002, 09.07.2011 в 23:18.
Ответить с цитированием
  #6  
Старый 09.07.2011, 23:34
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

1. Обязательно закрыть, спрятать недостаточно?
2. В каком контексте используется Close? Как привёл в примере, или имеется что то ещё?
3. Зачем вообще активизировать форму? Сделай проверку раньше.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #7  
Старый 10.07.2011, 22:34
VANNIK002 VANNIK002 вне форума
Прохожий
 
Регистрация: 01.06.2011
Сообщения: 28
Репутация: 10
По умолчанию

Цитата:
Сообщение от angvelem
1. Обязательно закрыть, спрятать недостаточно?
2. В каком контексте используется Close? Как привёл в примере, или имеется что то ещё?
3. Зачем вообще активизировать форму? Сделай проверку раньше.


1. Спрятал, а дальше что, Вернуться то в вызывающую форому всёравно надо. Мало того, хотелось бы через выход, а не через другое место.
2. В этом Unit два Close. Один почти один в один как в примере. Другой в обработчике события кнопки Выход. К кнопке Выход вопросов нет.
3. Зачем активизировать форму? Я не знаю как работать с не активизированной формой. Сделать проверку раньше конечно можно, но это повлечёт серьёзное усложнение и увеличение кода.

Более - менее "нормальный" выход я нашел. Сделал на форме неактивным всё, кроме кнопки Выход. Работает, но смотреть противно.
Проблема закрыта, вопрос остался. Почему с помощью функции Close не закрывается форма, и не происходит возврат в вызывающую форму. Неужели я первый, кто столкнулся с этой проблемой???
Ответить с цитированием
  #8  
Старый 10.07.2011, 22:43
ART ART вне форума
Продвинутый
 
Регистрация: 13.02.2006
Адрес: Магнитогорск
Сообщения: 669
Репутация: 14745
По умолчанию

Выйти из формы?

Код:
 Form2.close;

Серьёзное усложнение и увеличение кода?

Код:
 ...
 if твоя_переменная = нужному_значению then
  Form2.show;
 ...
Ответить с цитированием
  #9  
Старый 10.07.2011, 23:01
VANNIK002 VANNIK002 вне форума
Прохожий
 
Регистрация: 01.06.2011
Сообщения: 28
Репутация: 10
По умолчанию

Я ЧАЙНИК но прежде, чем беспокоить занятых людей, читаю книги. У меня их много. Ваш вариант в одной из них описан и мной опробован....

Чтобы определить, можно ли работать с этой формой, делается запрос к базе данных. Прежде, чем сделать запрос, надо определиться с параметрами запроса. Если в запросе нет ни одной записи, то тогда не стоит открывать форму.
Ответить с цитированием
  #10  
Старый 11.07.2011, 17:30
icWasya icWasya вне форума
Местный
 
Регистрация: 09.11.2010
Сообщения: 499
Репутация: 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  
Старый 11.07.2011, 18:13
ART ART вне форума
Продвинутый
 
Регистрация: 13.02.2006
Адрес: Магнитогорск
Сообщения: 669
Репутация: 14745
По умолчанию

VANNIK002, не могу посмотреть исходники. Я не могу качать с этого сайта
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 07:41.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter