В приложении сложно обойтись одной главной формой. Поэтому приходиться добавлять другие формы и взаимодействовать с ними.
Для того чтобы добавить новую форму в проект заходим в пункт меню File -> New -> Form. Или нажимаем на значок создания новой формы в панели инструментов.
Добавив новую форму, она будет выглядеть также как и основная. При создании форма получит имя Form2 (число обозначает номер создаваемой формы) и связанный модуль формы Unit2. В новую форму можно добавлять компоненты также как и в главную. Но для чтобы дополнительная форма отобразилась в программе нам нужно будет создавать обработчик события.
Мы можем отображать формы в Delphi двумя способами:
- Модально - пользователь имеет возможность работать только в одной форме и прежде чем перейти к другой, необходимо закрыть модальную форму.
- Немодально - пользователь может одновременно работать с несколькими формами.
Для того чтобы отобразить форму модально нужно записать такой код:
Form2.ShowModal;
для не модальной:
Form2.Show;
При ссылке на другую форму необходимо помнить о взаимосвязи между формами и модулями. Любая форма имеет свой модуль, при создании формы Delphi автоматически создает код модуля и в процессе работы добавляются разнообразные участки кода или пользователем или автоматически средой Delphi.
Поэтому модуль второй формы должен быть включен с помощью зарезервированного слова uses текущего модуля. Проще это сделать выбрав команду File -> Use Unit (файл использовать модуль). Выбрав нужный модуль ссылка на него автоматически добавиться.
Но если мы забудем это сделать то при компиляции программы появиться диалоговое окно. В нем будет сказано, что первая форма использует вторую, но модуль второй формы отсутствует в списке uses модуля первой формы. Нам достаточно нажать на кнопку Yes и необходимая ссылка будет добавлена.
Можно также производить изменения с отдельными компонентами и свойствами другой формы.
Для закрепления материала создадим вторую форму. Присоединим модуль второй формы к первой, описанным выше способом. В первой форме расположим простую кнопку и компонент Edit. В обработчике кнопки запишем следующий код:
Form2.Caption := Edit1.Text; Form2.ShowModal;
Запустив программу и нажав на кнопку, мы откроем вторую форму модально, заголовок у нее будет взят из свойства Text компонента Edit первой формы.
Итог: мы научились отображать формы модально и немодально. Выполнять ссылки на элементы управления из других форм.
а как изменить текс в combobox
Для изменения второго по счету значения (устанавливается – ‘Новое значение’ компонента ComboBox1 пишем такой обработчик кнопки:
procedure TForm1.Button1Click(Sender: TObject);
begin
ComboBox1.Items[1]:= ‘Новое значение’;
end;
Я с главной формы Form1 создаю новую Form2. При свертывании Form1 свертывается и Form2. Как этого избежать?
так и должно быть. Можно как вариант создать 2-й проект с Form2 и вызывать его как отдельную программу…
а как сделать что бы все сохранялось одним файлом, а то у меня при сохранении отдельно сохраняется или Form1 или Form2
Чтобы сохранялись все файлы проекта при работе с ним необходимо использовать меню: File -> Save All или с помощью клавиш нажать Shift + Ctrl + S (нажать все три клавиши одновременно).
Доброго времени суток! У меня 2 формы. Я с главной(1 формы) перешёл на вторую(1 свернулась, то есть я использовал form2.show), на второй форме есть кнопка выход(close;), закрывается форма2, но 1-я свёрнута всё так же и сидит в памяти, как можно реализовать так, чтобы при нажатии закрывалась именно сама программа?
Приложение можно закрыть с помощью команды – Application.Terminate;
Подробнее смотрите в статье – Способы завершения приложения https://delphi-prg.ru/sposoby-zaversheniya-prilozheniya
Я вот создал Form1, по кнопке перехожу на Form2.
Вопрос: Как из Edit2 что на Form2, перенести данные в Edit1 что на Form1 ?
Спасибо!
Создайте обработчик события (можно кнопку).
Подключите к Form2 Form1, как описано выше. Если этого не сделать то при запуске программа задаст вопрос, следует согласиться и нажать “Ok”/
В обработчике события напишите следующий код:
Form1.Edit1.Text := Form2.Edit2.Text;
Вечер добрый! Подскажите, пожалуйста, вот с каким вопросом.
Имеется dbgrid на form1. На правую кнопку мыши сделано открытие form 2. В ней отображаются дополнительные сведения о выбранном в dbgrid элементе. НО: данные на form2 изменяются только при нажатии любой кнопки на клавиатуре. Как сделать, чтобы при выборе другой строки в dbgrid сразу менялась информация и на form2.
Надеюсь, что понятно изъяснил вопрос)))
в программировании не силен…)
Как я понимаю Вы работаете с базой данных и возможно используете компонент DataSource. У него есть метод onDataChange попробуйте им воспользоваться.
Здравствуйте, создал органайзер с 2 формами, первая форма главная, вторая соответственно второстепенная. В первой форме есть ShellListView1, подскажите пожалуйста как из ShellListView1 передать данные (текстовые) в форму 2 ?
form2.Show;//для видимости 2-й формы
form2.edit1.text:= ShellListView1.RootFolder.PathName;
//компонент edit1 2-й формы получает имя выбранной папки
Здравствуйте, как сделать 3 форму главной, 1 форму 3?
Delphi Project -> Options открыть вкладку Forms. В поле MainForm выбрать главную форму.