私はTObjectListを使ってラベルの特定のリストを処理します。しかし、私が推奨する.Free in Try Finalを行うと、リストからコントロールも削除されます。なぜTObjectListを解放するとコントロールも削除されますか?
3つのラベルを使用した簡単な例:この場合
Procedure GetHeaderLabels(var aList:TObjectList<TLabel>);
begin
aList.Add(Form1.lblHeaderCars);
aList.Add(Form1.lblHeaderBrands);
aList.Add(Form1.lblHeaderModels);
end;
procedure TForm1.Button1Click(Sender: TObject);
var vHeaderLabelsList:TObjectList<TLabel>;
begin
vHeaderLabelsList:=TObjectList<TLabel>.Create;
try
GetHeaderLabels(vHeaderLabelsList);
{... process Header Labels }
finally
vHeaderLabelsList.Free;
end;
end;
私はこのコードを実行し、私は不足しているラベルコントロールで終わる - 彼らは、フォームから削除され、デバッグに私はコントロールが皆無であることを参照してください。
私はそうではありません。無料TObjectList?どのようにしてTObjectlistを解放し、コントロールを保持することができますか?
いいえ、それぞれのラベルに同じコードをコピーしないようにするには、そのリストのみが必要です。 –