TScrollBox内の多数のフレーム(通常は25)からなるインターフェイスに問題があります。Delphi:TList of Framesの問題
あり2つの問題がある、と私は一方が他方の結果であることを期待しています...
背景:アプリケーションが起動すると
が、私は25のフレーム、約それぞれ含むを作成。 20個のコントロールが表示され、デフォルトの情報が入力されます。ユーザー(検索が< 25レコードを返すことのように)、私は解放された時点での情報のサブセットに検索を制限し、私のフレームを再作成するコントロールに
をクリックすることができます問題:
の場合私は最初の検索の後にアプリケーションを終了してから約2時間かかる。 Delphiに戻るには5秒。 2回目の検索(およびフレームの廃棄/再作成)後には、 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;
私は何をしないのです。ここ
は、私の日常の作成ですか?
どのようなタイプのFrameListですか?ところで、ClearFramesでは、forループ内のMF.Framelistを参照しています。ここでは見えません。 –
フレームリストは、TMFメインフォームのパブリックセクションで宣言されたTListです。 ClearFramesのMFは無関係ですが、それ自体問題はありませんか? More Belt&Braces ... –