编程时往往需要用到不同的组件,例如 画图时在form上放一个Timage组件,
 作动画时直接在form.canvas进行,
 写Help时用一个Scrollbox,并在其上放一个很大的Timage,以便写很长的文档并加插图,
 等等这样就出现了问题:如何使各种组件相互不影响?我以前处理的办法是,所有组件预先都设计好但平时都禁止,在进入某事件处理过程时Enable所用的那些组件。这种方法在组件很多时很繁琐,我现在想改为在事件处理程序中临时创建,这当然可以,但我不知道在退出此过程时如何把所建的组件删掉?

解决方案 »

  1.   

    可以的,你可以用控件名.free释放掉就行;
    还不清楚的话,附上源代码
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        btn1: TButton;
        edt1: TEdit;
        procedure btn1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.btn1Click(Sender: TObject);
    begin
      edt1.Free;
    end;end.
      

  2.   

    但我需要在创建组件的procedure退出时,由自己来free创建的Timage组件,
    如同free BMP 那样来 free image,这样行吗?
      

  3.   

    抱歉,原题有误,不是Image.Enabled的true与false问题,而是Image.Visible的true与false问题。
      

  4.   

    用到图片时或载入图片前,visible:=true;释放可以放到FormClose里FreeAndNil(Image);
      

  5.   

    创建组件时如果parent填入了父窗体句柄则你的父窗体会帮你释放的,如果填空,则自己调用free释放即可,我以前经常这么用没问题的
      

  6.   

    不想用它了直接free就行了!
    想用它了再Create!