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


たぬ吉  2009-10-01 20:18:10  No: 35794

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 20:24:14  No: 35795

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


けど  2009-10-02 05:20:34  No: 35796

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


たぬ吉  2009-10-03 02:16:36  No: 35797

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

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

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

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

よろしくお願いします。


けど  2009-10-03 06:39:40  No: 35798

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


たぬ吉  2009-10-06 01:11:05  No: 35799

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

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


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

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






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