Delphi - формируется в форме

По эстетическим причинам я хочу показать форму сверху другой формы, так же, как если бы это было компонентом, говорит как TPanel. Это должно изменить размер с родителем, переместиться, когда th eparent перетаскивается его строкой заголовка и т.д.

-----------------------------
| main form component 1     |
-----------------------------
| main |  the 'embedded'    |  
| form |  form goes here    |
|comp 2|                    |
-----------------------------

я могу сделать это? Раз так, как?


Я теперь склоняюсь к MDI...

9
задан Mawg 19 March 2010 в 12:54
поделиться

3 ответа

Во время проектирования поместите панель туда, где должна находиться встроенная форма. Во время выполнения создайте форму, затем установите свойство 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@

22
ответ дан 4 December 2019 в 06:30
поделиться

Вы можете использовать фрейм .

12
ответ дан 4 December 2019 в 06:30
поделиться

Стандартный Win32 MDI считается "устаревшим". Я думаю, вы можете искать что-то вроде библиотеки JEDI JvDocking. Я использую его для эмуляции MDI, но без поддержки Win32 MDI.

3
ответ дан 4 December 2019 в 06:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: