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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2009, 13:51   #1
girz
Пользователь
 
Регистрация: 12.05.2009
Сообщений: 43
По умолчанию Закрытие формы

Имеется две формы после перехода с первой на вторую нужно чтобы первая форма закрылась. Переход на вторую форму осуществляется командой Form2.Show.
girz вне форума Ответить с цитированием
Старый 13.05.2009, 14:04   #2
VadEr
Форумчанин
 
Аватар для VadEr
 
Регистрация: 24.03.2009
Сообщений: 375
По умолчанию

После Form2.Show; надо написать Form1.Close;
VadEr вне форума Ответить с цитированием
Старый 13.05.2009, 14:11   #3
girz
Пользователь
 
Регистрация: 12.05.2009
Сообщений: 43
По умолчанию

Цитата:
Сообщение от VadEr Посмотреть сообщение
После Form2.Show; надо написать Form1.Close;
Уже использовали такой код но закрываются обе формы.

procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.Show;
Form1.Close;
end;
end.
girz вне форума Ответить с цитированием
Старый 13.05.2009, 14:46   #4
VadEr
Форумчанин
 
Аватар для VadEr
 
Регистрация: 24.03.2009
Сообщений: 375
По умолчанию

Тогда не Form1.Close;, а Form1.Free;
VadEr вне форума Ответить с цитированием
Старый 13.05.2009, 20:58   #5
girz
Пользователь
 
Регистрация: 12.05.2009
Сообщений: 43
По умолчанию

При использований Form1.Free
При закрытие второго окна, само приложение не закрывается.(остоется процесс)
Имеется Form1 с авторизацией пользователей.
После авторизаций переходит на Form2, и дальше работа ведется именно в этой форме и выходят из нее.
Кто может еще что посоветовать?
girz вне форума Ответить с цитированием
Старый 13.05.2009, 21:26   #6
maLoy*508
Форумчанин
 
Аватар для maLoy*508
 
Регистрация: 28.03.2008
Сообщений: 672
По умолчанию

можно просто прятать ее.... правда перед выходом надо будет закрывать...
то есть
Form1.Hide; - формы не видно потом на второй форме кнопку выхода и там закрыть две формы...
form2.close;
form1.close;
_____________________
а можно воспользоваться следующим способом...
на процедуру активации первой формы повесить вывод второй то есть:
Код:
 
procedure TForm1.FormActivate(Sender: TObject);
begin
form2.ShowModal;
end;

Последний раз редактировалось maLoy*508; 13.05.2009 в 21:38.
maLoy*508 вне форума Ответить с цитированием
Старый 13.05.2009, 21:41   #7
koma_grusha
Редкий обитатель
Форумчанин
 
Аватар для koma_grusha
 
Регистрация: 08.04.2009
Сообщений: 170
По умолчанию

Цитата:
При использований Form1.Free
При закрытие второго окна, само приложение не закрывается.(остоется процесс)
Имеется Form1 с авторизацией пользователей.
После авторизаций переходит на Form2, и дальше работа ведется именно в этой форме и выходят из нее.
Кто может еще что посоветовать?
если у тебя вся работа ведется в форме2, то сделай ее главной, тогда при ее закрытии процесс висеть не будет. А авторизацию можешь сделать 2мя способами (на выбор):

1) на form2.show или form2.create сделать вызов form1, примерно так

Код:
try
    form1 := Tform1.Create(nil);
    if form1.ShowModal <> mrOk then
        form2.Close; //или TerminateProcess(GetCurrentProcess, 0) или Application.Terminate
finally
    form1.Free;
end;
а на form1 - собственно сама авторизация

2)в самом проекте вызвать сначала form1 и после удачной авторизации вызвать form2, иначе выход



имхо: а прятать формы и т.п конечно можно, но нехорошо мусорить, ведь форма авторизации нужна только для входа, а не для основной работы.
Мозг, хорошо устроенный, стоит больше, чем мозг, хорошо наполненный (Мишель Монтень)

Последний раз редактировалось koma_grusha; 13.05.2009 в 21:45.
koma_grusha вне форума Ответить с цитированием
Старый 13.05.2009, 22:54   #8
qpokyc
Форумчанин
 
Аватар для qpokyc
 
Регистрация: 07.04.2009
Сообщений: 117
По умолчанию

Заменить
Код:
program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas' {Form2};

{$R *.res}

begin

  Application.Initialize;
  Application.CreateForm(TForm1, Form2);
  Application.CreateForm(TForm2, Form2);
  Application.Run;

end.
на
Код:
program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas' {Form2};

{$R *.res}

function CheckValid: Boolean;
begin
  Form1 := TForm1.Create(nil);
  Form1.ShowModal;
  //
  // Результат можно вывести двумя способами:
  // 1) сравнить результат ShowModal
  // c константой
  // 2) через свойства TForm1 и его потомков.
  //
  Form1.Free;
end;

begin

  if NOT CheckValid
    then Application.Terminate;

  Application.Initialize;
  Application.CreateForm(TForm2, Form2);
  Application.Run;

end.
PS: Объектная модель делфи далека от совершенства.
Copyright © qpokyc (qpy[the dog]bk.ru), 2008-2009 г.
qpokyc вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрет на закрытие формы Хамяг Общие вопросы Delphi 10 09.01.2009 14:40
Закрытие формы MDIChild в MDI приложении Avalonix Общие вопросы Delphi 4 29.05.2008 16:45
Странное закрытие joker Win Api 18 29.03.2008 07:45
Запретить закрытие окошка формы крестиком "Х" Slim Microsoft Office Excel 5 28.03.2007 19:39