حذف IWTreeViewItems يسبب استثناء على الافراج عن شكل
-
22-07-2019 - |
سؤال
في مستواي لدي IWTreeView واثنين من الأزرار. زر واحد حذف بعض IWTreeViewItems، الإصدارات الأخرى النموذج:
procedure TIWForm1.IWButton1Click(Sender: TObject);
begin
IWTreeView1.Items[0].Subitems.Clear;
end;
procedure TIWForm1.IWButton2Click(Sender: TObject);
begin
Release;
end;
والإفراج عن النموذج بعد حذف IWTreeViewItems يسبب استثناء:
<اقتباس فقرة>ورسالة خطأ التي أثارتها التطبيق: انتهاك وصول في معالجة 004E0D8A في وحدة "TryTree.exe. قراءة العنوان 00000000
اقتباس فقرة>وعندما يكون هناك شكل آخر نشطة ولم يتم إنهاء التطبيق قبل هذا الإصدار النموذج، رسالة الخطأ هي:
<اقتباس فقرة>ورسالة خطأ التي أثارتها مؤشر قائمة من: تطبيق حدود (-1)
اقتباس فقرة>وعن طريق IntraWeb 9.0.42 (بسبب الضوابط TMS ودلفي 2006، كما لم تختبر TMS مع 10.0.17 ودلفي 2006).
وحاولت أن IWTreeView1.ClearAll في شكل تدمير، والتي لم تساعد على الإطلاق.
المحلول
وبدلا من SubItems.Clear أنا الآن استخدام
for i := IWTreeView1.Items[0].SubItems.Count-1 downto 0 do begin
TIWTreeViewItem(IWTreeView1.Items[0].SubItems[i]).Free;
end;
وهذا يعمل. لا تزال مفتوحة للحلول أفضل، ربما لا تنطوي على حلقة من خلال جميع البنود الفرعية.