Страница 1 из 1

пробема с закрытием окон

Добавлено: 02 янв 2006, 15:17
scorpi.on
Проблема вот в чем. У меня есть форма(Form4), на которой располагается
двенадцать кнопок. При нажатии на каждую из этих кнопок
должно открывать новое окно(Form5) с параметром ShowModal, а Form4 должно закрыться.
Вы спросите зачем делать 12 кнопок для открытия одного окна? Дело в том, что открывается
одно и тоже окно, однако это окно будет содержать разную информацию в зависимости от нажатой кнопки,
т.е. Form2 я буду строить динамически. У меня есть две процедуры :

procedure reopen;
begin
Form4.Close;
Form5.ShowModal;
end;

procedure TForm4.Button1Click(Sender: TObject);
begin
Form5.Caption:='какой-то текст';
reopen;
end;

По идее все должно работать, но у меня Form5 открывается как и положено, а вот Form4 не закрывается. Form4 закрывается только
тогда, когда закрывается Form5. Подскажите что делать :(

Добавлено: 02 янв 2006, 20:53
Duncon
Ну если я правильно понял 4 форма у тебя главная, да даже не суть делай ее невидимой лучше чтоб наследование не потерялось.
А 5 форму, ну во первых зачем тебе метод ShowModal просто Show или лучше Visible := True... Ну здесь как тебе больше нравится..
А в обработчике нажатия пиши типа
procedure TForm4.Button1Click(Sender: TObject);
begin
With Form5 do
begin
Form5.Caption:='какой-то текст';
end;
после чего делаешь ее видимой, все...
end;

Добавлено: 15 янв 2006, 01:37
Naeel Maqsudov
Если в приложении фактически всего 2 формы и надо чтобы вторая была им енно модальной, то вместо ShowModal Вы можете делать просто Show, но вторая форма может на показ делать

EnableWindow(Form4.Handle,false);

а на скрытие, соответственно

EnableWindow(Form4.Handle,true);

PS
Кстати модальность тем и достигается, что все окна данного приложения дизейблятся (см исходники! ShowModal делает цикл по всем окнам).