コンポーネントの上下の設定

解決


マリオ  2005-02-08 06:01:00  No: 13105

コンポーネントを実行時に作成した場合,
そのコンポーネントの上下関係を設定したいのですが,
どのようにすれば良いでしょうか。
例えば

Label 設計時に作成

Panel 実行時に追加

Panel 設計時に作成

こんな感じにしたいのですが。


りおりお  2005-02-08 07:00:36  No: 13106

上下関係って、Parent を設定するだけですが。


りおりお  2005-02-08 07:06:17  No: 13107

こんな感じです。

  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;


マリオ  2005-02-08 07:41:19  No: 13108

ありがとうございます。
少し質問の仕方がまずかったようです。すみません。
例としてパネルを出しましたが,パネルに限らず上下関係を設定する方法
が知りたいのです。
要するに,設計時にフォームのビジュアルコンポーネントを右クリックして,
「コントロール」−「前面に移動・背面に移動」
を実行時にコードで設定する方法が知りたいのです。
よろしくお願いします。


りおりお  2005-02-08 07:54:46  No: 13109

BringToFront メソッドのことですか?
重なっているときの「手前に持ってくる」ときの手前っていう概念には、z-order
と親子関係があります。Label と Panel では親子関係以外でラベルをPanelの上
に表示できません。一方、重なりあった Image1 と Image2 のどちらかを手前に
持ってくるには、BringToFront メソッドを実行します。

要するに、TWinCotrol の派生クラスであるかないかによって違う概念を用います。


りおりお  2005-02-08 08:00:53  No: 13110

>要するに、TWinCotrol の派生クラスであるかないかによって違う概念を用います。

正確には、親子関係で解決しない(例えばどちらも Form1 が親の二つのパネル
の一部が重なっている)ときも BringToFront で動的に z-order を変更できます


マリオ  2005-02-08 08:40:41  No: 13111

ありがとうございました。詳しい説明でよく分かりました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加