Hast du es wenigstens mal mit Begin/EndUpdate versucht? Das würde dann so aussehen...
Delphi-Quellcode:
DSData.Open;
DSData.First;
vst_network_subnetdetails.BeginUpdate; // Neu
vst_network_subnetdetails.Clear; // Neu
for i := 0 to DSData.RecordCount - 1 do
begin
SubnetDetailsData := TOSubnetDetailsData.Create;
with SubnetDetailsData do
begin
id := DSData.FieldByName('id').AsString;
ipaddress := DSData.FieldByName('ipaddress').AsString;
device := DSData.FieldByName('device').AsString;
dhcp_exclude := DSData.FieldByName('dhcp_exclude').AsInteger;
dhcp_mac := DSData.FieldByName('dhcp_mac').AsString;
site := DSData.FieldByName('site').AsString;
building := DSData.FieldByName('building').AsString;
floor := DSData.FieldByName('floor').AsString;
position := DSData.FieldByName('position').AsString;
vlan := DSData.FieldByName('vlan').AsString;
subnetdevice := DSData.FieldByName('subnetdevice').AsString;
description := DSData.FieldByName('description').AsString;
sid := DSData.FieldByName('subnet_id').AsString;
end;
vst_network_subnetdetails.AddChild(nil, SubnetDetailsData);
Application.ProcessMessages;
DSData.Next;
end;
vst_network_subnetdetails.EndUpdate; // Neu
DSData.Close;
Ansonsten: Kommentier nach und nach deinen Code in den Ereignissen des VT aus und arbeite dich langsam vor. Dann sollte sich das Problem schnell zeigen...