delphi как связать две формы

Работа с несколькими формами. Модальная форма. Создание диалогового окна ввода пароля — Delphi(Делфи)

Большие программы, как правило, состоят более чем из одной формы. Рассмотрим некоторые особенности работы с несколькими формами.

Главная форма по умолчанию. Выбор главной формы.

Главная форма-это основная форма, с которой начинается построение программы. Если программа запущена на выполнение, то закрытие главной формы, например методом Close, приведет к закрытию всей программы. В Delphi, по умолчанию главной формой является форма Form1. Если программа содержит более одной формы, то любую из этих форм можно сделать главной по своему усмотрению. Для этого надо выполнить:

-Project | Options… | В выпадающем списке Main Form выбрать нужную форму | Нажать OK

Пример1: Создать программу, состоящую из двух форм и сделать форму Form2 главной формой.

Решение:
1) Создать новый проект
2) Создать новую форму-Form2
3) Выполнить: Project | Options… | В выпадающем списке Main Form выбрать нужную форму | Нажать OK
4) Сохранить программу в рабочей папке под произвольным именем
5) Откомпилировать проект
6) Проверить работу программы

Переход между формами в процессе разработки программы.

-Переходить между формами можно щелкая левой кнопкой мыши по нужной форме, но это требует визуального контакта с формой.

-Выполнить View | Forms… | Выбрать нужную форму

-Нажать + F12 и выбрать нужную форму

Организация перехода между формами в процессе работы программы.

В процессе работы программы можно из одной формы вызвать другую в двух основных режимах: обычный режим и режим модальной формы. Если активной является форма Form1, то вызвать из нее форму Form2 можно, как обычную форму (в обычном режиме) или как модальную форму (в режиме модальной формы). Модальная форма-это форма, которая появляется перед пользователем и не исчезает пока не получит ответа. Пока не закрыта модальная форма, программа не может продолжать работу. При обычной вызове обычной формы используется метод show. При вызове формы как модальной используется метод showmodal.

Пример2: Написать программу, состоящую из двух форм и позволяющую переходить между формами.

Решение:
1) Создать новый проект
2) Создать новую форму-Form2
3) Перейти на Form1 (одним из трех способов)
4) Создать на Form1 кнопку (Button1) и назвать ее “На Form2”
5) Связать первую форму со второй. Для этого надо выполнить: File | Use Unit…| Выбрать имя модуля второй формы.
6) В обработчике события OnClick кнопки Button1 написать код:
form2.show;
7) Перейти на Form2
8) Создать на Form2 кнопку (Button2) и назвать ее “На Form1”
9) Связать вторую форму с первой. Для этого надо выполнить: File | Use Unit…| Выбрать имя модуля первой формы.
10) В обработчике события OnClick кнопки Button2 написать код:
form1.show;
11) Откомпилировать и запустить программу
12) Проверить работу программы
13) Завершить работу с программой
14) Сохранить программу в рабочей папке под произвольным именем

Пример3: Написать программу, состоящую из двух форм Form1 и Form2 и вызывающую из первой формы вторую, как модальную.

Решение:
1) Создать новый проект
2) Создать новую форму-Form2
3) Перейти на Form1 (одним из трех способов)
4) Создать на Form1 кнопку (Button1) и назвать ее “Вызов модальной формы”
5) Связать первую форму со второй. Для этого надо выполнить: File | Use Unit…| Выбрать имя модуля второй формы.
6) В обработчике события OnClick кнопки Button1 написать код:
form2.showmodal;
7) Перейти на Form2
8) Создать на Form2 кнопку (Button2) и назвать ее “Выход”
9) Для кнопки “Выход” написать код закрытия второй формы.
10) Откомпилировать и запустить программу
11) Проверить работу программы
12) Завершить работу с программой
13) Сохранить программу в рабочей папке под произвольным именем

Пояснение: При ссылке в коде программы одного модуля на объект, который описывается в другом модуле, необходимо связать эти модули между собой. В нашем случае надо связать между собой две формы Form1 и Form2, так как они описываются в различных модулях.

Создание диалогового окна ввода пароля.

Пример4. Создать диалоговое окно ввода пароля, которое позволяет заменить старый пароль на новый если старый пароль введен верно и подтверждение нового пароля прошло успешно.

Решение:
1) Форме Form1 задать заголовок “Change Password”
2) Создать три метки, три строки ввода и две кнопки, разместить и назвав их так, как показано на рисунке.

wpe1 jpg 28884 bytes

Метки и строки ввода должны быть расположены по порядку одна над другой (т.е. самой верхней меткой должна быть метка Label1, самой нижней-Label3 тоже самое должно быть справедливо и для строк ввода). Кнопки должны быть расположены по порядку слева направо.
3) Выбрать кнопку OK, а также две нижние метки и две нижние строки ввода и установить для их свойства Enabled значение False.
4) Выбрать все три строки ввода, удалить значения их свойств Text и установить их свойства PasswordChar в значение @.
5) Для кнопок OK и Cancel ввести код закрытия формы.
6) Для обработчика OnChange строки ввода Edit1 ввести код:
edit2.enabled:=edit1.text=’Delphi’;
edit3.enabled:=edit2.enabled;
label2.enabled:=edit2.enabled;
label3.enabled:=edit2.enabled;
7) Выбрать две нижние строки ввода и для их обработчиков события OnChange ввести код:
button1.enabled:=(edit2.text<>’ ‘) and (edit2.text=edit3.text);
8) Сохранить программу в рабочей папке под произвольным именем
9) Откомпилировать программу
10) Проверить работу программы

Самостоятельная работа

1) Изменить пример 2 так, чтобы при переходе на следующую форму предыдущая форма закрывалась, объясните почему при закрытии формы Form1 с использованием метода Close происходит выход из программы, выясните можно ли не закрыть форму Form1, а скрыть ее.
2) Изменить оба фрагмента кода в примере 4 так, чтобы новый код использовал условный оператор.
3) Задача1: Написать программу, которая на одной форме запрашивает имя человека, а на другой форме выводит его в строке ввода.

Источник

Две формы

Итак приветствую всех,

столкнулся с программой в которой мне пришлось написать 2 формы в одном проекте, и теперь нужно мне из первой формы использовать пару переменных во второй форме, уже голову сломал. никак не получается. sad

Прошу помощи, заранее спасибо wink

tickДве формы
Доброго вам времени суток. Помогите пожалуйста! Вопрос есть задача: имею 2 формы, на главной.

Две формы
Всем привет! Подскажите пожалуйста, как сделать так чтобы при выборе пункта в RadioGroup в одной.

RadioButton и две формы
Есть две формы. на 1ой на панели несколько радио батонов. С неё вызываю ShowModal 2ой формы. На.

Связать две формы
как осуществить работу в делфи с 2 формами одновременно?

Ничего не понимаю теперь вообще. теперь работает.

Так, возможно только использование глобальных переменных, а ни как не можно использовать локальные? sadБлин знал бы заранее начал бы писать по другому, а то сейчас переделывать много чего, уже 500 строчек накатал.

Мешает то что первый раз с таким столкнулся и я не опытный еще wink

Вот последний раз задаю в этой теме вопрос, так как достал уже вас всей своей тупизной.

Простите если достал.

агаааааааааа воооот как. ну теперь другое дело, теперь я снова что-то понимаю smile3

tickЕсть две формы
Помогите пожалуйста. Есть две формы. На первой форму есть Edit1 и Button1. При нажатии на кнопку.

tickдве связанные формы
Подскажите, пожалуйста, как бы сделать так, чтоб по нажатию на кнопку на первой форме.

Разделение программы на две формы
Здравствуйте. Есть программа тест, на одной форме находится прохождение теста и выбор.

Источник

Связать две формы

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Связать две кнопки
Имеется кнопка в меню выполняющаяя определенную команду(например Сохранить). Сделал панель.

Связать формы
Помогите, плиз. У меня есть две формы в программе, мне нужно их связать между собой. Я объявляю их.

Связать две формы
Нужно сделать так, чтобы из одной формы можно было обратиться ко второй и из второй к первой. Делаю.

В разделе uses обоих форм допиши:
В первой:
Unit2;
Во второй:
Unit1;

Тогда ты сможешь открыть две формы и делать с ними что захочешь.

Или тебе не это надо?

Тогда у тебя появятся две формы.
И обе будут активны

tickСвязать две формы
Здравствуйте, форумчане Подскажите, пожалуйста, как связать две формы (Форма1 – основная, Форма 2.

tickСвязать две формы
Доброе время суток. Имеется программа с двумя формами. На первой textbox, а на второй кнопка.

tickСвязать две формы
подскажите, как связать две формы на первой форме есть Frame, и по двойному клику на него должна.

Связать две формы
Здравствуйте, у меня такая проблема : создал одну форму без источника, на неё добавил две, одну.

Источник

Связать две формы для одновременного использования.

Помощь в написании контрольных, курсовых и дипломных работ здесь.

tickСвязать две формы по координатам, в том числе, для одновременного перемещения
Здравствуйте. у меня есть две формы. Вторая ( прозрачная и имеет некие инструменты ) вызывается.

tickСвязать две формы
Доброе время суток. Имеется программа с двумя формами. На первой textbox, а на второй кнопка.

Связать две формы
Нужно сделать так, чтобы из одной формы можно было обратиться ко второй и из второй к первой. Делаю.

Связать две формы
как осуществить работу в делфи с 2 формами одновременно?

Kovbaska, а попробуйте так. В модуле юнит1 в разделе interface к uses допишите Unit2, а в модуле юнит2 в разделе implementation допишите uses Unit1;. Здесь важно, чтоб модули форм прописывались в разных разделах.

Добавлено через 28 минут
Что писал по этому поводу Архангельский (может быть вам пригодится)

Предложение, определяющее подключаемые к проекту или используемые в данном модуле другие модули, начинается с ключевого слова uses, после которого следует список имен модулей, разделяемый запятыми. Например:

uses Windows, Messages, SysUtils, Classes, Unit2, MyUnit;

Предложение в головном файле программы может также содержать после имени модуля ключевое слово in, после которого указывается имя файла, в котором содержится модуль. Например:

uses Unit1 in ‘Unit1.pas’, Unit2
in ‘c:\exampes\Unit2.pas’;

Форма с in используется в случаях, если Delphi неясно, где надо искать соответствующие файлы.

В предложениях uses, включаемых в модули, использование in не допускается.

При взаимных ссылках модулей друг на друга не разрешаются циклические ссылки с помощью предложений uses, размещенных в разделах interface. Такие циклы надо разрывать, перенося одно или все предложения uses из разделов interface в разделы implementation модулей. Например, недопустимыми циклическими ссылками являются следующие предложения uses в модулях Unit1 и Unit2:

Источник

Взаимодействие между окнами в дельфи

Если одна форма выполняет какие-либо действия с другой формой, то в списке uses раздела implementation модуля первой формы должна быть ссылка на модуль второй формы.

Form1 Form2 2

При нажатии кнопки Button1 первой формы на экране отображается вторая форма, до этого невидимая. Поскольку операция со второй формой совершается из модуля первой формы, в разделе implementation первого модуля помещен код uses Unit2.

Use Unit

После выбора нужного модуля и нажатия кнопки ОК ссылка на него добавляется автоматически.

Use Unit 2

Если ссылка на требуемый модуль отсутствует, то при компиляции программы появляется диалоговое окно Information (см. скриншот).

Form1 Form2

Оно сообщает, что одна форма использует другую, но модуль второй формы отсутствует в списке uses модуля первой формы. Для автоматического добавления ссылки на модуль достаточно нажать кнопку Yes.

Форма может выполнять различные операции не только с другой формой, но и дельными компонентами. В этом случае также нужна ссылка на модуль другой формы.

Здесь при нажатии кнопки Button2 формы Form1 в надписи Label1 отображается текст редактора Edit1, расположенного в форме Form2.

Можно выполнять операции с компонентами формы, свернутой или невидимой на экране. Однако в любом случае форма должна быть создана до выполнения любых операций с ней.

Источник

Понравилась статья? Поделить с друзьями:
Добавить комментарий
  • Как сделать успешный бизнес на ритуальных услугах
  • Выездной кейтеринг в России
  • Риски бизнеса: без чего не обойтись на пути к успеху
  • delphi как открыть форму по кнопке
  • delphi как закрыть приложение