TScrollBox内の多数のフレーム(通常は25)で構成されるインターフェイスに問題があります。
2つの問題があり、一方が他方の結果であることを願っています...
バックグラウンド:
アプリケーションが起動すると、25個のフレームを作成します。各フレームには約 20個のコントロール。これらのコントロールには、デフォルトの情報が入力されます。次に、ユーザーはコントロールをクリックして、検索を情報のサブセットに制限し、その時点でフレームを解放して再作成できます(検索で25レコード未満が返される場合があるため)
問題:
最初の検索後にアプリケーションを終了すると、約1時間かかります。Delphiに戻るまで5秒。2回目の検索(およびフレームの破棄/再作成)の後、約1時間かかります。20秒)
フレームを1回だけ作成するようにアプリケーションを書き直すことはできましたが、何が起こっているのかを理解したいと思います。
これが私の作成ルーチンです:
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;
私は何が欠けていますか?