CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

帮程序员女友问的问题(动态控件数组& Tdxmemdata)

楼主mrweiliu(牛蛙)2004-08-01 08:10:49 在 Delphi / VCL组件开发及应用 提问

1.   想动态创建timer   组件,代码如下      
  xcd:   array   of   TTimer;  
  procedure   TForm1.Button1Click(Sender:   TObject);  
  var  
      i,j:   integer;  
  begin  
      for   i   :=   0   to   2   do  
          RemoveComponent(xcd[i]);  
      xcd   :=   nil   ;  
      label1.caption   :=   inttostr(self.ComponentCount);  
      setlength(xcd,3);  
      for   i   :=0   to   2   do  
      begin  
          xcd[i]   :=   Ttimer.create(self);  
      end;  
      label2.Caption   :=   inttostr(self.ComponentCount);  
  end  
   
  但是在第一个for循环就报错,为什么?  
   
  2.   想动态创建某组组件,个数是不定的,  
  发现如果每次只是将动态数组置为nil时,对于动态数组本身是释放的,但是创建出来的组件仍然存在的,这个可以从两个label.caption中看出来,请问如何彻底把创建出来的组件释放掉  
   
  3.   还有对于Tdxmemdata这个组件谁用过,里面的field如何用程序实现添加的?      
   
  女朋友这几天为这几个问题弄的心烦烦,给各位253了  
   
  问题点数:50、回复次数:7Top

1 楼linzhisong(無聊)回复于 2004-08-01 08:53:21 得分 10

procedure   TForm1.Button1Click(Sender:   TObject);  
  var  
      i,j:   integer;  
  begin  
      for   i   :=   0   to   2   do  
          if   Assigned(xcd[i])   then  
              FreeAndNil(xcd[i]);  
      label1.caption   :=   inttostr(self.ComponentCount);  
      setlength(xcd,3);  
      for   i   :=0   to   2   do  
      begin  
          xcd[i]   :=   Ttimer.create(self);  
      end;  
      label2.Caption   :=   inttostr(self.ComponentCount);  
  end  
   
  Top

2 楼linzhisong(無聊)回复于 2004-08-01 08:55:30 得分 0

unit   Unit1;  
   
  interface  
   
  uses  
      Windows,   Messages,   SysUtils,   Variants,   Classes,   Graphics,   Controls,   Forms,  
      Dialogs,   StdCtrls,   ExtCtrls;  
   
  type  
      TForm1   =   class(TForm)  
          Button1:   TButton;  
          Label1:   TLabel;  
          Label2:   TLabel;  
          Timer1:   TTimer;  
          procedure   Button1Click(Sender:   TObject);  
          procedure   FormCreate(Sender:   TObject);  
      private  
          {   Private   declarations   }  
      public  
          {   Public   declarations   }  
      end;  
   
  var  
      Form1:   TForm1;  
      xcd:   array   of   TTimer;  
   
  implementation  
   
  {$R   *.dfm}  
   
  procedure   TForm1.Button1Click(Sender:   TObject);  
  var  
      i,j:   integer;  
  begin  
      for   i   :=   0   to   2   do  
          if   Assigned(xcd[i])   then  
              FreeAndNil(xcd[i]);  
      label1.caption   :=   inttostr(self.ComponentCount);  
      setlength(xcd,3);  
      for   i   :=0   to   2   do  
      begin  
          xcd[i]   :=   Ttimer.create(self);  
      end;  
      label2.Caption   :=   inttostr(self.ComponentCount);  
  end   ;  
   
  procedure   TForm1.FormCreate(Sender:   TObject);  
  begin  
      setlength(xcd,3);  
  end;  
   
  end.  
  Top

3 楼linzhisong(無聊)回复于 2004-08-01 08:56:10 得分 0

有些不要得变量不要就删除掉,不要定义Top

4 楼zswangII(伴水清清)(一贴不灌,何以灌天下?)回复于 2004-08-01 09:14:21 得分 40

//linzhisong已经说了,xcd没有初始化~~  
  //补充一下,用Low()和High()更方便一些~~  
  var  
      i,   j:   Integer;  
  begin  
      //第一次循环,xcd还没有初始化,所以访问xcd[0]、xcd[1]、xcd[2]都是错误的~~  
      for   i   :=   Low(xcd)   to   High(xcd)   do   RemoveComponent(xcd[i]);   //建议用   xcd[i].Free;  
      //这就是第二个问题的答案,用循环释放数组里的元素  
      Label1.Caption   :=   IntToStr(ComponentCount);  
      SetLength(xcd,   3);  
      for   i   :=   Low(xcd)   to   High(xcd)   do  
      begin  
          xcd[i]   :=   TTimer.Create(Self);  
      end;  
      Label2.Caption   :=   IntToStr(ComponentCount);  
  end;Top

5 楼linzhisong(無聊)回复于 2004-08-01 10:08:28 得分 0

zswangII到处都是马甲。。Top

6 楼cduck(cduck)回复于 2004-08-01 12:01:58 得分 0

zswangII(伴水清清)(一贴不灌,何以灌天下?)   (  
  思想不错   收藏了Top

7 楼mrweiliu(牛蛙)回复于 2004-08-01 17:34:24 得分 0

已结帖Top

相关问题

  • 数组与控件
  • *****控件数组何处寻?*****
  • 控件数组的load , unload
  • 关于控件数组
  • 关于控件数组
  • 关于数组控件
  • 控件数组怎用?
  • 怎样做控件数组
  • 关于控件数组
  • vb的控件数组

关键词

  • 组件
  • xcd
  • 数组
  • ttimer
  • componentcount
  • 动态
  • tform
  • button1click
  • inttostr
  • caption

得分解答快速导航

  • 帖主:mrweiliu
  • linzhisong
  • zswangII

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo