【发布时间】:2014-09-30 06:08:46
【问题描述】:
在设计时,我创建了一个 TScrollBox,它将作为在运行时创建的 TLayouts 的父级。 布局还将包含 Tlabels 和 Tedits,如下所示:
var
Layout1: TLayout;
Label1: TLabel;
Edit1: TEdit;
begin
Layout1 := TLayout.Create(self);
Layout1.Parent := ScrollBox1;
Label1 := TLabel.Create(self);
Label1.Parent := Layout1;
Label1.Text := 'abc';
end;
现在我想删除所有内容,就像这个过程从未被调用过一样。
我尝试了以下方法,但程序会崩溃。
var
i : integer;
Item : TControl;
begin
for i := 0 to Scrollbox1.ControlCount - 1 do
begin
Item := Scrollbox1.controls[i];
Item.Free;
end;
end;
谁能给我一个提示?
【问题讨论】:
-
看到你在这个和其他一些问题中发布的代码,你似乎在做一些事情,比如动态创建通常完全不必要的组件,并因此遇到问题。如果您能解释为什么要创建这些组件,也许读者可以提出其他更不容易出错的方法。例如。如果这与从数据库读取的记录有关,您是否查看过标准 TDBCtrlGrid,它基本上是一个滚动框,您可以使用 DB 感知控件填充它,这些控件会为其源数据集中的每一行复制?
-
感谢您的回复。是的,我确实查看了 TDBCtrlGrid 的详细信息并学习了如何使用它。但是,后来我发现它不支持我正在开发的移动应用程序。
-
啊,好的。通常,我会删除我的评论,因为不是很相关,但在这种情况下,我会留下它,以防其他读者和我有类似的想法。您的控件是允许用户更改数据还是仅用于显示?
-
我的控件是允许用户添加/删除数据,这给我带来了很多麻烦......对不起,我问的所有问题,因为我是 delphi 新手。这只是我给自己的一个小任务,用于学习如何编写与数据库交互的移动应用程序。非常感谢任何回应。
标签: delphi components runtime vcl