ScrollBox1上に複数配置したTLabelを全部解放

解決


とも  2013-01-30 01:55:18  No: 43708

こんにちは、お世話になります。

LabelがScrollBox1を親としていくつか配置してあるのですが、
これら全ての、しかもLabelのみを解放したいのですが、
どういう方法がありますか?

動的生成で作ることは見よう見まねでできたのですが、
それを消してクリアーにする方法がわかりません。

よろしくお願いいたします。


今一  2013-01-30 03:11:52  No: 43709

コードがわからぬので何とも・・・だが

>Labelのみを解放したいのですが

そのまま、動的に生成したオブジェクトを解放すれば良いだけだが

var
  ObjLbl :TLabel;
begin
  ObjLbl :TLabel.Create(Self);//生成
  try
    {処理、処理}
  finally
    ObjLbl.Free;//解放
  end;
end;

何故、できぬ???

>それを消してクリアーにする方法がわかりません。

この文章の意味するところがよくわからんのだが
目的とするところが、動的に生成したオブジェクト
が破棄されているかどうかがしりたい?

ならば

  ObjLbl.Free;   
  ObjLbl := nil; 

または

  FreeAndNil(ObjLbl);

if ObjLbl = nil then //True なら生成されていないか、破棄されている


けど  2013-01-30 08:07:53  No: 43710

えと
procedure TForm1.FormCreate(Sender: TObject);
var
  i:integer;
begin
  for i:=0 to 9 do
    with TLabel.Create(ScrollBox1) do
    begin
      Parent:=ScrollBox1;
      Caption:=IntToStr(i);
      Top:=i * Height *2;
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i:integer;
begin
  for i:=ScrollBox1.ComponentCount-1 downto 0 do
    if ScrollBox1.Components[i] is TLabel then
      TLabel(ScrollBox1.Components[i]).Free;
end;


とも  2013-01-30 17:55:32  No: 43711

的確な用語がわからず、すみません。
そうそう、破棄でした。

「けど」さんの
begin
  for i:=ScrollBox1.ComponentCount-1 downto 0 do
    if ScrollBox1.Components[i] is TLabel then
      TLabel(ScrollBox1.Components[i]).Free;
end;

この方法が知りたかったです。
ありがとうございました。


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

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






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