Страница 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
спасибо за помощь
Re: Cвязать два модуля
Добавлено:
10.07.2015 13:26:45
Лекс Айрин
visible, просто скрывает элемент управления. Чисто на нем можно делать самомодифицирующиеся окна.
Да не за что.