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

自动生成控件遇到的问题

楼主Mcy(机动工程车)2004-11-03 22:35:30 在 Delphi / VCL组件开发及应用 提问

我在程序中自动生成了一组image和label控件,程序运行时可以显示控件但是提示   Invalide   pointer   operation,出错指在project文件的最后一行.  
   
  下面是整个单元的源代码  
  unit   Unit1;  
   
  interface  
   
  uses  
      Windows,   Messages,   SysUtils,   Variants,   Classes,   Graphics,   Controls,   Forms,  
      Dialogs,   ExtCtrls,   StdCtrls;  
   
  type  
      TForm1   =   class(TForm)  
          procedure   FormDblClick(Sender:   TObject);  
          procedure   FormShow(Sender:   TObject);  
      private  
          {   Private   declarations   }  
      public  
          {   Public   declarations   }  
      end;  
   
  var  
      Form1:   TForm1;  
   
  implementation  
   
  {$R   *.dfm}  
   
  procedure   TForm1.FormDblClick(Sender:   TObject);  
  begin  
      Close;  
  end;  
   
  procedure   TForm1.FormShow(Sender:   TObject);  
  var  
      stImage:   Array   of   TImage;  
      stLabel:   Array   of   TLabel;  
      i,j,Rows,Space1,ColWidth:   integer;  
   
  begin  
      Rows:=6;  
      Space1:=5;  
      ColWidth:=150;  
      SetLength(stImage,10);  
      SetLength(stLabel,10);  
   
      for   i:=1   to   10   do  
      begin  
          j:=   (i   div   Rows)+1;  
   
          stImage[i]:=TImage.Create(self);  
          stImage[i].Parent:=form1;  
          stImage[i].Picture.LoadFromFile('d9.ico');  
          stImage[i].Name:='image'+IntToStr(i);  
          if   i<Rows   then   stImage[i].Top:=2+35*((i   mod   Rows)-1)  
          else   stImage[i].Top:=2+35*(i   mod   Rows);  
          stImage[i].Left:=2+ColWidth*(j-1);  
   
          stLabel[i]:=TLabel.Create(self);  
          stLabel[i].Parent:=form1;  
          stLabel[i].Caption:=IntToStr(i);  
          stLabel[i].Width:=100;  
          stLabel[i].Name:='label'+IntToStr(i);  
          stLabel[i].Top:=stImage[i].Top+10;  
          stLabel[i].Left:=stImage[i].Left+32+Space1;  
   
      end;  
  end;  
   
  end. 问题点数:50、回复次数:2Top

1 楼boatzm(晓舟怕麻烦)【IUnKnown】(#_#!)回复于 2004-11-03 22:48:01 得分 50

for   i:=1   to   10   do  
   
  //   动态数组下标是从0   开始的。   所有没有10   这个上标。。。。明白怎样改了吧。Top

2 楼Mcy(机动工程车)回复于 2004-11-03 22:50:37 得分 0

晕倒,我怎么印象中pascal的数字是从1开始.      
   
  不过问题解决了.非常感谢!Top

相关问题

  • 自动生成textbox控件!!!
  • 自动生成控件排列问题
  • 如何得到repeater控件中自动生成的控件的ID?急!!!!!!
  • 怎样用验证控件RangeValidator1来验证datagrid自动生成的textbox控件?
  • 用activexform生成的控件,怎么屏蔽掉自动生成的属性啊?
  • 如何在窗体上自动生成控件?
  • 如何在程序中自动生成控件??着急~~~~~~~~~
  • 代码中自动生成的控件如何保持状态
  • 怎么设置自动生成控件的样式呢?
  • 如何获得自动生成控件的消息.

关键词

  • 控件
  • stimage
  • tform
  • tobject
  • sender
  • procedure
  • rows
  • begin
  • form

得分解答快速导航

  • 帖主:Mcy
  • boatzm

相关链接

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

广告也精彩

反馈

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