Delphi - дочерние формы имеют рамку родителя - PullRequest
0 голосов
/ 05 января 2012

У меня есть приложение Delphi с несколькими формами. Первоначально я попробовал настройку, в которой каждая вновь открытая форма представляла собой рамку, а «родитель» этой формы (в зависимости от того, что вызывалось для открытия формы) был скрыт, так как дочерний элемент отображался с изменением размера и перемещением дочернего элемента, чтобы получить плавный эффект с одним окном, когда дочерний элемент закрыт, родительский объект перемещается и снова становится видимым. Все формы имеют стиль границы bsSingle для блока заголовка Windows. Этот подход хорошо работал для позиционирования, однако проблема, которую я имею, заключается в заметном мерцании, поскольку родительская форма закрыта, а дочерний открыт, а также в течение небольшого периода времени, когда никакая форма не открыта, значок / панель на стартовой панели будет смещаться вокруг и сам стал скрытым и видимым.

У кого-нибудь есть советы по решению этой проблемы? Я подумал, что, возможно, если бы у меня была только одна форма с границей в приложении, и открывал каждую новую форму внутри этой границы, она бы работала лучше - хотя я не уверен, как именно это сделать.

Любая помощь очень ценится.

Ответы [ 2 ]

1 голос
/ 05 января 2012

У меня был успех с этим дизайном, и я думаю, что это помогло также содержать содержимое "главной формы" в TFrame.Если вы хотите показать основную форму, вам нужно просто поменять кадр.

1 голос
/ 05 января 2012

Легко заставить одну форму выглядеть как ребенок внутри другой.Создайте новую форму, которая будет содержать и создайте ваши другие формы:

procedure TMainForm.FormCreate(Sender: TObject);
var
  F : TForm;
begin
  F := TOneOfYourChildForms.Create(Self);
  F.Parent := Self;
  F.Show();
end;

Создайте обе ваши дочерние формы, аналогичные этой, затем просто сделайте Показать на одной, которую хотите отобразить, и Скрыть на другой.Установите BorderStyle в bsNone на дочерних формах, чтобы удалить заголовок.Отключите автоматическое создание в формах в настройках проекта, если вместо этого вы создадите их самостоятельно.

...