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

Cвязать два модуля

СообщениеДобавлено: 10.07.2015 12:25:45
jenny
Всем привет!

Xотелось бы связать два модуля. Чтобы модуль 1 подключался к модулю 2 и наобород. Один unit поместила в uses а другой в implementation. Все работает (нажимаю в unit 1 на кнопку, выскакивает unit 2, на кнопку в unit 2 выскакивает unit 1) по одному кругу.

Re: связать два модуля

СообщениеДобавлено: 10.07.2015 12:36:12
Лекс Айрин
jenny, а зачем такие сложности?
Код: Выделить всё
procedure TForm2.Button1Click(Sender: TObject);
begin
  Form1.Showmodal; 
  Form2.Hide;
//  Form1.Showmodal; {вы закрыли форму, как вы собираетесь что-то в ней дальше делать? Может, и получится, но неаккуратно...}
end;


Закрытие основной формы вызывает закрытие программы. Поэтому, для него лучше использовать visible=false

непонятно зачем нужно использовать Showmodal? Если для поднятия окна, то почему бы не использовать SetFocus?

Re: Cвязать два модуля

СообщениеДобавлено: 10.07.2015 12:40:09
jenny
только что попробoвала, выскакивает та же самая ошибка. :(

Re: Cвязать два модуля

СообщениеДобавлено: 10.07.2015 12:47:02
Лекс Айрин
jenny А весь проект дать слабо? Возможно, ошибка где-то еще. Ну или хотя бы описания TForm1 и Tform2.

Re: Cвязать два модуля

СообщениеДобавлено: 10.07.2015 12:56:34
jenny
begin
Form2.Hide;

Re: Cвязать два модуля

СообщениеДобавлено: 10.07.2015 13:04:38
Лекс Айрин
Замени showmodal на Show скорее всего, дело в этом.

Re: Cвязать два модуля

СообщениеДобавлено: 10.07.2015 13:07:32
jenny
Программа по одному кругу работает, а повторому нет. Я думаю тут проблема в unit2, так как ошибка указывает на него (что форма видима)

Re: Cвязать два модуля

СообщениеДобавлено: 10.07.2015 13:08:33
Лекс Айрин
и если использовать visible=false, то для показа лучше использовать visible=true

Re: Cвязать два модуля

СообщениеДобавлено: 10.07.2015 13:10:44
jenny
и правда дело в Show. А чем они отличаются?

Re: Cвязать два модуля

СообщениеДобавлено: 10.07.2015 13:21:35
Лекс Айрин
итоговая, работоспособная версия, с учетом всех моих слов.
unit1
Код: Выделить всё
procedure TForm1.Button2Click(Sender: TObject);
begin
  form1.Visible:= false;
  form2.Show;
end;     


unit2
Код: Выделить всё
procedure TForm2.Button1Click(Sender: TObject);
begin

  Form1.Visible:=true;
  Form2.Hide;
end;


Добавлено спустя 1 минуту 52 секунды:
showmodal открывает окно, которое должно быть всегда наверху. И, как насколько мне известно, не применимо для главного окна.

Re: Cвязать два модуля

СообщениеДобавлено: 10.07.2015 13:24:36
jenny
спасибо за помощь :D

Re: Cвязать два модуля

СообщениеДобавлено: 10.07.2015 13:26:45
Лекс Айрин
visible, просто скрывает элемент управления. Чисто на нем можно делать самомодифицирующиеся окна.


Да не за что.