Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ Взаимодействие между двумя Form

Автор: marwell 6.12.2012 21:36

Имеются две формы 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 6.12.2012 23: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;
, тогда не будет этой ошибки...

Автор: marwell 6.12.2012 23:11

Цитата(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 16.01.2023 7:37

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. https://imgupload.co.uk/tips-for-first-time-gamblers/