Помощь - Поиск - Пользователи - Календарь
Полная версия: Взаимодействие между двумя Form
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
marwell
Имеются две формы Form1 и Form2. Form1 - главная. В процессе работы при клике на Button3 открывается модально Form2, в этой второй форме пользователь выбирает чекбоксы, жмет кнопку, Form2 скрывается, показывается form1, в которой обрабатываются эти данные. На первом нажатии все работает, но если нажать второй раз этот Button3, то уже вылезает ошибка "cannot make a visible window modal". Смысл ошибки я понимаю, но как исправить - не знаю.
в Form1:

procedure TForm1.Button3Click(Sender: TObject);
begin
if Edit1.Text='' then MessageDLG('Не заполнено поле "Name"',mtError,[mbOK],0)
else begin
Save:=True;
Form1.Hide;
Form2.ShowModal; //если тут делать просто Show, то получается не то что надо
end;
Save:=False;
end;

в Form2:
procedure TForm2.Button1Click(Sender: TObject);
begin
Form2.Hide;
Form1.Button1.Click;
Form1.Button2.Click;
Form1.Show;
end;

в form1.button1.click и form1.button2.click после обработки чекбоксы снимаются
IUnknown
Не надо скрывать форму, закрывай ее:

procedure TForm1.Button3Click(Sender: TObject);
begin
if Edit1.Text='' then MessageDLG('Не заполнено поле "Name"',mtError,[mbOK],0)
else begin
Save:=True;
Form1.Hide;
Form2.ShowModal; //если тут делать просто Show, то получается не то что надо
Form1.Show;
end;
Save:=False;
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
//Form2.Hide;
Form1.Button1.Click;
Form1.Button2.Click;
//Form1.Show;
Self.Close; // Закроет Form2
end;
, тогда не будет этой ошибки...
marwell
Цитата(IUnknown @ 6.12.2012 19:02) *

Не надо скрывать форму, закрывай ее:

procedure TForm1.Button3Click(Sender: TObject);
begin
if Edit1.Text='' then MessageDLG('Не заполнено поле "Name"',mtError,[mbOK],0)
else begin
Save:=True;
Form1.Hide;
Form2.ShowModal; //если тут делать просто Show, то получается не то что надо
Form1.Show;
end;
Save:=False;
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
//Form2.Hide;
Form1.Button1.Click;
Form1.Button2.Click;
//Form1.Show;
Self.Close; // Закроет Form2
end;
, тогда не будет этой ошибки...

а ведь была такая мысль, только проверить не успел smile.gif спасибо!
nishaknapp
Why not settling on games that is fun and at the same time your earning. Well it'll make suspense because the game is well but dude just try it and it gave me hope while pandemic is real rn. Tips For First-Time Gamblers
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.