コンポーネントを実行時に作成した場合,
そのコンポーネントの上下関係を設定したいのですが,
どのようにすれば良いでしょうか。
例えば
Label 設計時に作成
↑
Panel 実行時に追加
↑
Panel 設計時に作成
こんな感じにしたいのですが。
上下関係って、Parent を設定するだけですが。
こんな感じです。
public
MyPanel:TPanel;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
MyPanel := TPanel.Create(self);
MyPanel.Parent := Panel1;
MyPanel.Left := 10;
MyPanel.Top := 10;
MyPanel.Caption := 'MyPanel';
Label1.Parent := MyPanel;
Label1.Left := 10;
Label1.Top := 10;
end;
ありがとうございます。
少し質問の仕方がまずかったようです。すみません。
例としてパネルを出しましたが,パネルに限らず上下関係を設定する方法
が知りたいのです。
要するに,設計時にフォームのビジュアルコンポーネントを右クリックして,
「コントロール」−「前面に移動・背面に移動」
を実行時にコードで設定する方法が知りたいのです。
よろしくお願いします。
BringToFront メソッドのことですか?
重なっているときの「手前に持ってくる」ときの手前っていう概念には、z-order
と親子関係があります。Label と Panel では親子関係以外でラベルをPanelの上
に表示できません。一方、重なりあった Image1 と Image2 のどちらかを手前に
持ってくるには、BringToFront メソッドを実行します。
要するに、TWinCotrol の派生クラスであるかないかによって違う概念を用います。
>要するに、TWinCotrol の派生クラスであるかないかによって違う概念を用います。
正確には、親子関係で解決しない(例えばどちらも Form1 が親の二つのパネル
の一部が重なっている)ときも BringToFront で動的に z-order を変更できます
ありがとうございました。詳しい説明でよく分かりました。
ツイート | ![]() |