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

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
scorpi.on
Сообщения: 32
Зарегистрирован: 03 июн 2005, 18:51
Откуда: Могилёв, Беларусь

Проблема вот в чем. У меня есть форма(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. Подскажите что делать :(
Аватара пользователя
Duncon
Сообщения: 2085
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

Ну если я правильно понял 4 форма у тебя главная, да даже не суть делай ее невидимой лучше чтоб наследование не потерялось.
А 5 форму, ну во первых зачем тебе метод ShowModal просто Show или лучше Visible := True... Ну здесь как тебе больше нравится..
А в обработчике нажатия пиши типа
procedure TForm4.Button1Click(Sender: TObject);
begin
With Form5 do
begin
Form5.Caption:='какой-то текст';
end;
после чего делаешь ее видимой, все...
end;
[syntax=Delphi] [/syntax]
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Если в приложении фактически всего 2 формы и надо чтобы вторая была им енно модальной, то вместо ShowModal Вы можете делать просто Show, но вторая форма может на показ делать

EnableWindow(Form4.Handle,false);

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

EnableWindow(Form4.Handle,true);

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