【发布时间】:2011-01-10 16:30:56
【问题描述】:
我在使用由 TScrollBox 内的多个帧(通常为 25 个)组成的界面时遇到问题。
有 2 个问题,我希望其中一个是另一个的结果...
背景:
当应用程序启动时,我创建了 25 个帧,每个帧包含大约 25 个帧。 20 个控件,然后填充默认信息。然后,用户可以单击控件以将搜索限制为信息子集,此时我释放并重新创建我的框架(因为搜索可能返回
问题:
如果我在初始搜索后退出应用程序,则大约需要 10 分钟。 5秒返回Delphi。在第二次搜索(并处理/重新创建帧)之后,大约需要。 20 秒)
虽然我可以重写应用程序以仅创建一次框架,但我想了解发生了什么。
这是我的创建例程:
procedure TMF.CreateFrame(i: Integer; var FrameBottom: Integer);
var
NewFrame: TSF;
begin
NewFrame := TSF.Create(Self);
NewFrame.Name := 'SF' + IntToStr(i);
if i = 0 then
NewSF.Top := 8
else
NewSF.Top := FrameBottom + 8;
FrameBottom := NewFrame.Top + NewFrame.Height;
NewFrame.Parent := ScrollBox1;
FrameList.Add(NewFrame);
end;
这是我的删除例程:
procedure TMF.ClearFrames;
var
i: Integer;
SF: TSF;
begin
for i := 0 to MF.FrameList.Count -1 do
begin
SF := FrameList[i];
SF.Free;
end;
FrameList.Clear;
end;
我错过了什么?
【问题讨论】:
-
FrameList 是什么类型的?顺便说一句,在 ClearFrames 中,您指的是 for 循环内的 MF.Framelist 。这里看起来不正确。
-
Framelist 是在 TMF 主窗体的 Public 部分中声明的 TList。 ClearFrames 中的 MF 是无关紧要的,但它本身不应该引起任何问题吗?更多腰带和牙套...