سلام
اينطور كه من متوجه شدم درختي كه شما در TreeView داريد ، 2 سطح بيشتر نداره . سطح
Parent و سطح Child . براي پيمايش درخت به ترتيبي كه خواسته بوديد ، ميتونيد از الگوريتم
زير استفاده كنيد :
var
i,Counter,Root_index:integer;
begin
Root_index:=0;
Counter:=TreeView1.Items.Count;
while Counter <> 0 do
begin
// Store parent in parent table
ListBox1.Items.Add(TreeView1.Items[Root_index].Text);
for i := 1 to TreeView1.Items[Root_index].Count do
begin
// Store parent's child in child table
ListBox1.Items.Add(TreeView1.Items[i+Root_index].Text);
Dec(Counter);
end;
Root_index:=Root_index+TreeView1.Items[Root_index].Count+1;
Dec(Counter);
end;
در اين كد من به جاي ذخيره Parent و Child در Table ، اونها رو به ترتيب پيمايش شده در يك
ListBox قرار دادم كه كد هاي ذخيره كردن شما در Database به جاي اين خط ها بايد قرار بگيرند.
يه نكته ديگه : با استفاده از روش id , p_id ميتونيد تمام گره هاي درخت رو در يك Table ذخيره
كنيد و ازش بعدا بازيابي كنيد . اگر در برنامتون مجبور به تفكيك گره ها نيستيد ، پيشنهاد ميكنم
از اين روش استفاده كنيد .
موفق باشيد .