生成控件的程序:
procedure Tdingegl_w.dtsckj;
var
i:Integer;
//lb:TLabel;ed:TEdit;
begin
for i:=1 to 10 do
begin
lb:=TLabel.Create(Application);
lb.Parent:=ScrollBox2;
lb.name:='lbn'+IntToStr(i);
lb.Caption:=memo1.Lines[i];
lb.Height:=13;
lb.Top:=8+i*26;
lb.Width:=120 ;
lb.Left:=5;
lb.OnClick:=Label14Click;
ed:=TEdit.Create(Application);
ed.Parent:=ScrollBox2;
ed.name:='edn'+IntToStr(i);
ed.Height:=21;
ed.Top:=5+i*26;
ed.Width:=120 ;
ed.Left:=141;
try ed.text:=Adoquery2.Fields[i].Value;except ed.text:='';end;
ed.OnClick:=Edit5Click;
end;
end;这是成功的。但是在执行删除这些控件的时候,无论怎么做都是无效的。根本没删除掉,好像下面这段代码没执行过的删除的程序如下
for i:=1 to 10 do
begin
Tlabel(findcomponent('lbn'+inttostr(i))).Free;
TEdit(findcomponent('edn'+inttostr(i))).Free;
end;还有一个怪现象:
明明Edit1-Edit10都有数据。(我是程序里面赋值的)
但是为什么showmessage(Edit1.text)却是空的
为什么
procedure Tdingegl_w.dtsckj;
var
i:Integer;
//lb:TLabel;ed:TEdit;
begin
for i:=1 to 10 do
begin
lb:=TLabel.Create(Application);
lb.Parent:=ScrollBox2;
lb.name:='lbn'+IntToStr(i);
lb.Caption:=memo1.Lines[i];
lb.Height:=13;
lb.Top:=8+i*26;
lb.Width:=120 ;
lb.Left:=5;
lb.OnClick:=Label14Click;
ed:=TEdit.Create(Application);
ed.Parent:=ScrollBox2;
ed.name:='edn'+IntToStr(i);
ed.Height:=21;
ed.Top:=5+i*26;
ed.Width:=120 ;
ed.Left:=141;
try ed.text:=Adoquery2.Fields[i].Value;except ed.text:='';end;
ed.OnClick:=Edit5Click;
end;
end;这是成功的。但是在执行删除这些控件的时候,无论怎么做都是无效的。根本没删除掉,好像下面这段代码没执行过的删除的程序如下
for i:=1 to 10 do
begin
Tlabel(findcomponent('lbn'+inttostr(i))).Free;
TEdit(findcomponent('edn'+inttostr(i))).Free;
end;还有一个怪现象:
明明Edit1-Edit10都有数据。(我是程序里面赋值的)
但是为什么showmessage(Edit1.text)却是空的
为什么
解决方案 »
- 用Delphi生成SWF文件应该怎么做
- 路过的看下有益无害的
- 无法捕捉错误,希望出错后关闭程序,该怎么做?
- ms-sql server2000数据库相连
- 手机发短信的非一般问题!!!
- ◆◆◆100分求:如何编程实现将某个硬盘分区设置为共享????
- 如何用数据库的表动态生成treeview?
- 诚招项目开发伙伴
- delphi TServerSocket与TClientSocket传送文件 Client发送一次文件server的read事件被触发了几千次
- 又如何用IBQuerty删除当前记录IBQuerty没有RequestLive这个属性!,
- 控件重绘是不是有图层的概念
- ShockwaveFlash控件连接swf(用资源文件)
改成
for i:=10 downto 1 do
不要动不动就说程序怪现象,是你自己的原因好不好.删除的时候用Tlabel(Application.findcomponent('lbn'+inttostr(i))).Free;就可以了.
另外,你动态创建的控件的Owner不应该用Application,虽然你这个代码中可以正常,但总不是一个好思路.你的代码为什么不行,可以自己跟踪一下源码.话说还在用DELPHI作为初学工具的,一般都是看VCL源码去的吧
TEdit.Create(self)
这时候才能用FindComponent找到。
var
CList:TObjectList;
CList.Add(lb);
用完后
CList.Clear;就全部删除了。
for i:=1 to 10 do
begin
Tlabel(ScrollBox2.findcomponent('lbn'+inttostr(i))).Free;
TEdit(ScrollBox2.findcomponent('edn'+inttostr(i))).Free;
end;
URL:http://www.docin.com/p-116784103.html这篇文章讲解改良TButton界面的方法,使其具有圆角和渐变背景图。
这个DelphiDemos.zip中就是这个改良后的新按钮:TJHLButton
完全源代码,欢迎下载。文档Flash:http://www.docin.com/DocinViewer-116784103-144.swf