TObjectList を使用して、ラベルの特定のリストを処理します。しかし、Try Final で推奨される .Free を実行すると、リストからコントロールも削除されます。
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;
この場合、このコードを実行すると、ラベル コントロールが欠落してしまいます。フォームから削除され、デバッグでコントロールが nil であることがわかります。
TObjectList を .Free にするべきではないのでしょうか? TObjectlist を解放し、コントロールを保持するにはどうすればよいですか?