2

実行時にネストされたコンポーネントを作成しています。Parent内の子コンポーネントのプロパティを割り当てるにはどうすればよいwithですか?

with Tspanel.Create(categorypanel) do
begin
  parent:=categorypanel;  // categorypanel, is a declared variable
  height:=30;
  visible:=true;

  button1 := tsbutton.Create();
  // Here is my problem! I want the parent to be the
  // panel I've created with the "with tspanel.create(...)"
  button1.Parent := ...
end;

私の目標は、すべてのコンポーネントに対して変数を宣言しないことです。

4

1 に答える 1

8

withステートメントでやりたいことを行うことはできません。with ステートメントの対象であるオブジェクトに名前を付ける方法はありません。

代わりにローカル変数を使用してください。例えば:

var
  Panel1: TPanel
  Button1: TButton;
....
Panel1 := TPanel.Create(Form1);
Panel1.Parent := Form1;
Button1 := TButton.Create(Panel1);
Button1.Parent := Panel1;

追加の利点として、withあらゆるコードのスコーピング ブライトであるこれらのステートメントを削除できます。

于 2013-06-07T14:06:06.433 に答える