自动生成界面的问题

wlq 2000-03-28 06:20:00
这是一数据库的录入界面,label的edit都是自动生成,请看代码,运行后,
我用componentcount方法没有发现组件生成,不知何故



......
type Label1=array[1..30] of Tlabel; //要生成的label和edit放在数组中
type edit1=array[1..30]of Tedit;
var
Form1: TForm1;
mylabel:label1;
myedit:edit1;
implementation
......
procedure TForm1.test1Click(Sender: TObject); //请看这一段,窗体上已经有了一个edit和
label,它们是两个数组mylabel[i]和myedit[i]的
第一个元素,为以后的元件提供基准位置
var i:integer;
llabel:Tlabel;
eedit:Tedit; //我把eedit,llabel做中间变量,create后赋给数组,赋完了
把它destroy,不知可否
begin
llabel:=Tlabel.Create(self);
eedit:=Tedit.Create(self);
mylabel[1]:=llabel;
myedit[1]:=eedit;
mylabel[1].caption:=content[0].field_bz;
myedit[1].text:=table1.FieldByName(content[0].field_name).asstring;
llabel.Destroy;
eedit.Destroy;
for i:=2 to count do begin //count是表的字段数
llabel:=Tlabel.Create(self);
mylabel[i]:=llabel;
myLabel[i].caption:=content[i-1].field_bz; //content是一个记录类型的数组,放数据字
典的,不必理它
mylabel[i].top:=mylabel[i-1].top+25;
mylabel[i].left:=mylabel[i-1].left;
mylabel[i].width:=mylabel[i-1].width;
mylabel[i].height:=mylabel[i-1].height;
mylabel[i].parent:=self;
mylabel[i].visible:=true;
llabel.Destroy;
end;
end;

我用form1的componentcount方法看不到组件生成.按理说在初始化时就该为两个Tlabel和Tedit类型的数组分配内存的?

...全文
237 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jll 2000-03-29
  • 打赏
  • 举报
回复
你的Button不是有编号的吗?
bitter 2000-03-29
  • 打赏
  • 举报
回复
设定button的tag不就可以了。
wlq 2000-03-29
  • 打赏
  • 举报
回复
我会了:
if sender=mybutton[i] then
...
多谢各位
wlq 2000-03-29
  • 打赏
  • 举报
回复
具体怎么写?
我delphi用了才两个月的说
wlq 2000-03-29
  • 打赏
  • 举报
回复
问题解决了
去掉destroy就好了
谢谢kxy
末了我想再问个问题,某些字段后我又生成了一个button,
因为是动态生成所以让所有的button共用一个事件处理过程那么,我
如何判断是哪一个 button按下
kxy 2000-03-28
  • 打赏
  • 举报
回复
把label.Destory去掉,delphi在form释放时会自动处理。
你的form要动态创建,
也可以在FormOnClose时手工释放。
wlq 2000-03-28
  • 打赏
  • 举报
回复
to kxy:
那么,我该如何做呢?
kxy 2000-03-28
  • 打赏
  • 举报
回复
delphi中对象的变量是引用而不是指针,这和C++中不同。
var
slist : TStringList;
begin
slist := TSTringList.Create;//这里,一定要Create.
end;
TLabel等VCL可视控件也一样。
我们假设 C++中有一个TLabel的类,C++中 TLabel alabel; 会分配内村。
但是delphi中 var label : TLabel 是声明了一个引用。相当于C++中
TLabel &alabel ;
kxy 2000-03-28
  • 打赏
  • 举报
回复
OK,你把它Destroy了,自然没有了。
delphi 中 如 label : TLabel; bLabel:TLabel; label,blabel是引用
label := TLabel.Create(Self); blabel := label,
blable和alable指向同一个内存地址, label.Destroy, blabel也没有了。
另,使用Free,不要用Destory. Free后要 := nil;
简介: 1、多级目录,每个目录下面可以有更深一级目录,并列出属于该目录的网站 管理:选择分类管理,添加需要的分类,或者选择下一级目录,同时可以选择删除(删)修改(修)制作(制)某一个目录 2、静态页面,所有目录页面均使用程序生成了html页,不用读取数据库,大大节省了服务器资源 管理:选择制作下属页面,系统会列出搜索的类别,请选择需要生成的类别 3、目录模版,在数据库中存放了大量的页面模版,每一个目录都可以订制自己的网面 管理:选择模板管理,系统会列出目前已经存在的模板,你可以修改,添加,删除,添加时请按照示例进行制作,建议先将数据库备份再修改 4、即时登陆网站,站长可以随时登陆自己的网站,但是登陆以后只能在他选定的目录所显示的页面中的“更多”网站页面中显示出来,只有在管理员审查并生成页面以后才能直接在目录页面看到 5、模糊查找, 6、布尔查找,支持and(*) or(|) not(-)等布尔表达式 例如:烟台*一百-新闻 或者:烟台 and 一百 not 新闻 如果只需要and连接,可以只输入 烟台 一百,这与 烟台*一百、烟台 and 一百 效果等同 搜索结果将会把相关关键词以特殊的颜色显示出来 7、常用关键词页面自动生成,用户输入查找的关键词都保存在数据库中,如果有相同的关键词则这些关键词数量累加,管理员管理的时候可以生成排名在头几位的关键词页面,也就是提前替用户把这些关键词提前搜索出来了,并且生成了静态的html页面,用户在搜索这些关键词时,就可以直接显示这些已经生成的页面,避免了大量的查询数据库,节省了服务器资源 管理:选择关键词管理,系统会列出数据库中已经存在的可以生成的关键词,以及网友在使用这个搜索引擎时用的关键字(只选取排名头100个),管理员可以随意生成需要的关键词页面 8、网站顺序,在某个目录下的网站数目很多的时候,排在上面的网站被访问的几率比排在下面的网站几率要大得多,因此我又增加排名功能,管理员可以设定某个网站在该目录下的排名 9、单目录搜索,当用户在某个目录浏览的时候,可以选择在该目录下搜索和搜索全部目录,选择在该目录下搜索可以只搜索属于该目录以及该目录的子目录下的网站 10、静态页面在线生成,在管理界面可以在线生成所有目录下的页面以及关键词页面 11、二次搜索功能,当用户在搜索某个关键词以后,系统列出了〉20个结果以后,就会出现二次搜索界面,用户可以选择在这些结果中再次搜索,比如要求结果必须不包含某个关键词或者必须再包含某个关键词 12、模版的在线修改,不同的页面模版有不同的规则 14、所有目录在线动态修改,自动更新以前的页面 15、动态生成网站首页(需要模版支持) 16、分类参照:指一个分类类目名分在一个上级类目下,而在另一个类目下作参照。以@作后缀的类目名。

604

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 控件与界面
社区管理员
  • 控件与界面社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧