GridPanelで実行時に行を挿入する方法


たぬ吉  2009-10-01 11:18:10  No: 35794  IP: 192.*.*.*

GridPanelで実行時に行を挿入する方法を教えてください。
下記のコードはフォームにScrollBoxを貼り付け、その上にGridPanelを配置している状態です。(GridPanelのAlign=alTopにして)
そしてボタンを一個配置してボタンを押す度にフレームをGridPanelの1行として追加しています。
現状追加はできているのですが、行の挿入をしたくてヘルプを見ているのですが良く分かりません。
行の追加自体は何もしていなくて、FrameのParentをGridPanelにしているだけです(これも正しいのか分かりませんが...)

※GridPanelはColumnCollectionを列0を100%、RowCollectionは行0を自動としています。

よろしくお願いします。

procedure TForm1.Button1Click(Sender: TObject);
var
  F: TFrame2;
begin
  F := TFrame2.Create(Self);
  Inc(Counter);     //CounterはIntegerのデータです
  F.Name := 'FrameRow' + IntToStr(Counter);
  F.Parent := GridPanel1;
  GridPanel1.Height := F.Height * Counter;
end;

編集 削除
たぬ吉  2009-10-01 11:24:14  No: 35795  IP: 192.*.*.*

すみません、バージョンはD2009です。

編集 削除
けど  2009-10-01 20:20:34  No: 35796  IP: 192.*.*.*

これかな?
http://docs.embarcadero.com/products/rad_studio/radstudio2007/RS2007_helpupdates/HUpdate4/JA/html/delphivclwin32/Controls_TWinControl_InsertControl.html

編集 削除
たぬ吉  2009-10-02 17:16:36  No: 35797  IP: 192.*.*.*

けどさん、ありがとうございます。

InsertControlを下記のようにしてみました。

  F := TFrame2.Create(Self);
  Inc(Counter);
  F.Name := 'FrameRow' + IntToStr(Counter);
  GridPanel1.InsertControl(F);
  GridPanel1.Height := F.Height * Counter;

ですが、最後の行に追加されました。
すでに存在する行の途中に挿入したいです。

よろしくお願いします。

編集 削除
けど  2009-10-02 21:39:40  No: 35798  IP: 192.*.*.*

すみません、思いっきり挿入場所の引数がなかったですね
InsertControlという名前だけで書いてしまいました
で、ExtCtrls.pas の TCustomGridPanel あたりを見たのですが
「グリッド内の次のセル」というのは決め打ちっぽいですね

編集 削除
たぬ吉  2009-10-05 16:11:05  No: 35799  IP: 192.*.*.*

けどさん、ありがとうございます。
>すみません、思いっきり挿入場所の引数がなかったですね
いえいえ

やっぱり、挿入はできなさそうですね。
GridPanel以外で実装する方法を検討してみます。

編集 削除