Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.09.2010, 17:42   #1
misher
Участник клуба
 
Аватар для misher
 
Регистрация: 26.05.2010
Сообщений: 1,648
По умолчанию Form.Close

Цитата:
procedure TForm1.N1Click(Sender: TObject);
begin
if Form2.ShowModal = Form2.ShowModal then
Form1.Close;

end;
Почему первая форма не закрывается?
This world will never be What I expected (c)
misher вне форума Ответить с цитированием
Старый 04.09.2010, 17:56   #2
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Потому что код закрытия не там немного. А если так?:
Код:
procedure TForm1.N1Click(Sender: TObject);
begin
 if Form2.ShowModal = Form2.ShowModal then
 begin
  Form1.Close;
 end;
end;
а вообще, мне кажется, что правильным было бы без всяких условий. Вот так:
Код:
procedure TForm1.N1Click(Sender: TObject);
begin
 Form2.ShowModal;
 Form1.Close;
end;
или можно просто
Код:
Form2.Show;
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 04.09.2010, 18:54   #3
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

А что вы хотите сделать этой строчкой?

Код:
Form2.ShowModal = Form2.ShowModal
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 04.09.2010, 19:59   #4
misher
Участник клуба
 
Аватар для misher
 
Регистрация: 26.05.2010
Сообщений: 1,648
По умолчанию

откроеться 1 форма а 2 закроеться...ну я на это планировал
This world will never be What I expected (c)
misher вне форума Ответить с цитированием
Старый 04.09.2010, 22:51   #5
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Этой строчкой вы два раза вызываете Form2. У вас в условии слева стоит ShowModal для Form2 и справа стоит ShowModal для Form2. Чтобы вычислить условие (истинно оно или ложно) компилятору нужно вызвать два раза ShowModal. Что приведёт к двум показам Form2 подряд.

При этом, если вы закроете Form2 крестиком, а второй раз - как-то иначе, то у вас ничего не произойдёт.

Если же вы закроете Form2 крестиком, а потом (когда она появится второй раз) - снова крестиком, то у вас пропадёт форма Form1.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 05.09.2010, 01:31   #6
misher
Участник клуба
 
Аватар для misher
 
Регистрация: 26.05.2010
Сообщений: 1,648
По умолчанию

Цитата:
Потому что код закрытия не там немного. А если так?:
Код:

procedure TForm1.N1Click(Sender: TObject);
begin
if Form2.ShowModal = Form2.ShowModal then
begin
Form1.Close;
end;
end;
а вообще, мне кажется, что правильным было бы без всяких условий. Вот так:
Код:

procedure TForm1.N1Click(Sender: TObject);
begin
Form2.ShowModal;
Form1.Close;
end;
Пробовал по 2 методу не закрывалась 1 форма, оказалось что и так по условию она не закрывается, в чем тут может быть дело?

Цитата:
Этой строчкой вы два раза вызываете Form2. У вас в условии слева стоит ShowModal для Form2 и справа стоит ShowModal для Form2. Чтобы вычислить условие (истинно оно или ложно) компилятору нужно вызвать два раза ShowModal. Что приведёт к двум показам Form2 подряд.
К сожалению как я не пробовал написать(if Form2.ShowModal then и if OpenForm2.ShowModal then) и так много раз нечего не палучалось я такое пример нашёл в хелпе...Может подкинеш правильный код(нечего что на ты?)...
This world will never be What I expected (c)

Последний раз редактировалось misher; 05.09.2010 в 01:34.
misher вне форума Ответить с цитированием
Старый 05.09.2010, 01:54   #7
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
if Form2.ShowModal then
ShowModal возвращает вовсе не boolean. Это для информации.

Теперь по сути вопроса, если ты закроешь главную форму, то у тебя все приложение закроется, нельзя этого делать. Или прячь ее - Hide, или меняй видимость - Visible.
Пример:
Код:
Form1.Hide;
Form2.Show;
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 05.09.2010, 13:43   #8
misher
Участник клуба
 
Аватар для misher
 
Регистрация: 26.05.2010
Сообщений: 1,648
По умолчанию

Спасибо!!!
This world will never be What I expected (c)
misher вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ShowModal, close!!!! Ital1cs Помощь студентам 3 02.04.2010 19:50
Open&Close в С++ sabov Помощь студентам 8 11.12.2009 23:30
activeWorkBook.Close на вылет tolikman Microsoft Office Excel 3 05.09.2008 23:43
Form.Show в Form.Create UnD)eaD)Snake Общие вопросы Delphi 6 07.09.2007 11:13
Open Close CD-ROM Door Nick757 Общие вопросы Delphi 1 07.08.2007 09:03