По эстетическим причинам я хочу показать форму сверху другой формы, так же, как если бы это было компонентом, говорит как TPanel. Это должно изменить размер с родителем, переместиться, когда th eparent перетаскивается его строкой заголовка и т.д.
-----------------------------
| main form component 1 |
-----------------------------
| main | the 'embedded' |
| form | form goes here |
|comp 2| |
-----------------------------
я могу сделать это? Раз так, как?
Я теперь склоняюсь к MDI...
Во время проектирования поместите панель туда, где должна находиться встроенная форма. Во время выполнения создайте форму, затем установите свойство Parent встроенной формы на панель.
procedure TParentForm.FormCreate(ASender: TObject);
begin
FEmbeddedForm := TEmbeddedForm.Create(self);
FEmbeddedForm.Parent := Panel1;
FEmbeddedForm.Align := alClient;
FEmbeddedForm.Visible := True;
end;
Edit:
Если вы хотите остановить отображение заголовка и границы окна, добавьте это в нижнюю часть FormCreate()
LForm.Caption := '';
LForm.BorderStyle := bsNone;
BTW, я не выступаю за использование родительских форм вместо фреймов, просто отвечаю на вопрос. Фреймы - это здорово (я использую их постоянно), но они не точно такие же, как формы. Они почти точно такие же, как панель с элементами управления на ней.
Например, у фрейма нет ни события OnCreate, ни события OnShow, что иногда может быть болезненным, когда вы используете их повторно и нуждаетесь в таком поведении.
N@
Стандартный Win32 MDI считается "устаревшим". Я думаю, вы можете искать что-то вроде библиотеки JEDI JvDocking. Я использую его для эмуляции MDI, но без поддержки Win32 MDI.