Если заглянуть в объектный инспектор, то по свойствам может показаться, что перед нами действительно форма, но это фрейм. В заголовке объектного инспектора можно увидеть надпись:
Если вы перейдете в исходный код и посмотрите на объявление класса формы, то в качестве предка снова увидите класс TFrame.
Вы можете располагать компоненты на фрейме точно так же, как и на форме, и писать необходимый код, и все это будет корректно работать. Хотя на фрейме можно устанавливать большинство компонентов, но не все. Например, нельзя поставить Action компоненты.
Для иллюстрации примера, поместите на форме по одному компоненту Button, Edit и Memo. По нажатии кнопки напишем строку кода:
Здесь мы просто добавляем в мето-компонент новую строку, в качестве текста в которой будет содержимое поля ввода Edit.
Сразу же переименуем компонент в TestFrame и сохраним его в файле. Да, фреймы, как и формы, сохраняются в файле, причем также в двух файлах — код в .pas-файле, а визуальная форма в .dfm.
Теперь посмотрим, как можно использовать эти компоненты. Для этого выполняем следующие действия.
- Переходим в главную форму программы.
- Выбираем компонент Frames (Фреймы) с вкладки Standard (Стандартная).
- Щелкните в любом месте формы, и перед вами появится окно, в котором нужно выбрать фреймы, существующие в проекте. Если в вашем проекте нет фреймов, то Delphi сообщит об ошибке, и ничего не появится.
- Выбрав нужный фрейм (у нас он один), нажмите кнопку ОК.
В главной форме программы появится содержимое фрейма. Если сейчас скомпилировать программу и запустить, то по нажатии кнопки строка из поля ввода будет добавляться в Memo компонент. Таким образом, визуальная форма фрейма вместе с кодом становится частью выбранной формы. Вы можете создать еще одно окно, которое будет вызываться как дочернее, и туда вставить этот же фрейм, и все будет работать корректно.