سؤال

في مستواي لدي 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;

وهذا يعمل. لا تزال مفتوحة للحلول أفضل، ربما لا تنطوي على حلقة من خلال جميع البنود الفرعية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top