8

私はよく子孫を次のようTFormに別の子孫に埋め込みます。TForm

var
  Form1: TForm1;
  Form2: TForm2;
begin
  Form2.Parent      := Form1;
  Form2.BorderStyle := bsNone;
  Form2.Align       := alClient;
  Form2.Show;
end;

通常、これは問題なく機能しますが、Form2のコントロールが正しく配置されていない場合があります。この種の問題の一般的な回避策はありますか?

この「ミスアライメント」の原因を誰かが知っていますか?

この種の仕事に使用できることは知っていますが、書き直さなければならないライブラリコードがたくさんあり、 inアプローチが機能しないTFrame理由がわかりません。TFormTForm

編集:ここでコンポーネントを原因として特定しTcxListViewました。コンポーネントベンダー(DevExpress)にバグレポートを送信しました。

http://www.devexpress.com/issue=B194161

編集2:TGridPanel DevExpressの開発者は問題を分析し、実際にはEmbarcaderoによるコンポーネントの欠陥であると述べました。

http://qc.embarcadero.com/wc/qcmain.aspx?d=90324

4

2 に答える 2

8

私もこれを行い、次のルーチンを使用してそれを実現します。

procedure TMyForm.PlaceInsideContainer(Container: TWinControl);
begin
  Parent := Container;
  Align := alClient;
  BorderIcons := [];
  BorderStyle := bsNone;
  ParentBackground := True;
  Show;
end;

これで問題ありません。関連する可能性があると想像できる唯一の違いは、BorderIcons の割り当てですが、それが問題を引き起こすとは思えません。

于 2010-12-08T09:53:16.653 に答える
1

私は同様の質問を読みました(グーグルで検索する必要があります)。TeamBからの回答は、動作が予測できず、代わりにTFrameを使用する必要があるため(これは私がいつも行っていることです)、これを行わないことでした。

于 2010-12-08T11:01:17.767 に答える