50分为本题
感谢帮助过的朋友,感谢答题朋友,感谢捧场的朋友。 特别感谢:
乌龙哈里
kenshinggg,
fangsp
Harryfin
小和
老之
老于
僵哥
鹏哥
qkhhxkj102自由自在
秀峰
madyak无天
z_yxIP
SmallHand火龍
shuihan20e 
gzmhero
刀友
suton
风中聆听
lake_cx  
fly_man
megyrr
小呆之家
一代程序巨浆
还有很爱吵分的 孒淵
以上只是我目前的理解能力印象深刻的,名单太长不能俱列,但都同样感谢。
50分答本题,100分给顶贴的朋友,300分给以往帮助过的朋友,分不多,聊表心意。以往不当之处见谅。
本贴可能要等某些朋友会结得慢一点。
题目
我在模板里定义了用了var obj1:Tobject ,单独开关一个窗口时没问题,当开两个用这模板的窗口,关了一个以后,再关另一个时就会出错提示obj1已关,怎么会,它不能用在模板里吗,它是使用的时候才能creat的吧,不能模板里creat吗,为什么它只creat1个,而不是每个用这个模板的每个子窗口?

解决方案 »

  1.   

    var obj1:Tobject 
    这是一个全局变量.如果自处创建实例的时候拥有自己的指针操作的不是全局变量,就不会有问题了.一般情况下,建议把这个全局变量注释掉.
      

  2.   

    我的理解是你的用法是这样的情况,每开一个模板就创建一个obj1,当创建多个模板时,会有多个 obj1,当你关闭一个模时会释放掉 obj1 ,再关闭第二个模版时,由于 obj1已经释放了,再释放时会报错。
    有时不可避免要创建一类的多个实例,这种情况一般需要创建对象管理对象来维护多个实例,常用的有TList,TObjectList,还有TStringList等。
    obj1变量名,只起临时对象的作用,使用时需要将管理对中取出指针或对象来进转换,可以用Obj1用来接收这个转换的结果再使用。
    释放它时,也是需将管理类中的对象,逐个释放。
    如果不用管理来维护这多个对象,只能释放一个obj1,如果创建了多个,会有内存泄露。