PDA

View Full Version : TtreeNode



(امید)
یک شنبه 06 اردیبهشت 1383, 11:38 صبح
سلام

در Treeview وقتی از تابع

Add( Node:TtreeNode; Const S:String):Ttreenode;
استفاده می کنیم TtreeNode رو چطور باید تعریف کنیم؟
لطفا راهنمایی کنید.

آناهیتا
یک شنبه 06 اردیبهشت 1383, 13:24 عصر
با سلام ، لطفا کد زیر را امتحان کنید


procedure TForm1.Button1Click(Sender: TObject);
var
t:ttreenode;
begin
treeview1.Items.Add(t,'aaaaa');
end;

(امید)
یک شنبه 06 اردیبهشت 1383, 16:14 عصر
مرسی آناهیتا

چرا قبل از تابع فوق متغییری از نوع string رو نمی تونیم مقدار دهی کنیم؟

کسی نمونه برنامه یا مثالی از کار با treeview سراغ داره؟ ( حذف و اضافه شاخه و زیر شاخه و... )

متشکرم

Behzad_Asharkhan
یک شنبه 06 اردیبهشت 1383, 17:17 عصر
سلام


چرا قبل از تابع فوق متغییری از نوع string رو نمی تونیم مقدار دهی کنیم؟
مقدار بازگشتی این تابع از نوع TTreeNode است. به روش زیر میتونی شاخه و زیر شاخه تعریف کنی.


procedure TForm1.Button1Click(Sender: TObject);
var
MyTreeNode: TTreeNode;
begin
TreeView1.Items.Clear;

MyTreeNode := TreeView1.Items.Add(nil, 'Node_A');
TreeView1.Items.AddChild( MyTreeNode, 'Node_A0');
TreeView1.Items.AddChild( MyTreeNode, 'Node_A1');

MyTreeNode := TreeView1.Items.Add(nil, 'Node_B');
TreeView1.Items.AddChild( MyTreeNode, 'Node_B0');
TreeView1.Items.AddChild( MyTreeNode, 'Node_B1');
TreeView1.Items.AddChild( MyTreeNode, 'Node_B2');
end;

اینطوری هم میشه یه کارای دیگه انجام داد. فهمیدن نود select شده و حذف آن


procedure TForm1.Button2Click(Sender: TObject);
var
MyTreeNode: TTreeNode;
begin
MyTreeNode := TreeView1.Selected;

if (MyTreeNode <> nil) then
TreeView1.Items.Delete( MyTreeNode );
end;

موفق باشید. 8)

amirrf
یک شنبه 06 اردیبهشت 1383, 17:48 عصر
سلام،

تابع Add از TTreeNodes (که TTreeView.Items از این نوع است) یک گره در آخر سطح مشخص شده با پارامتر Node داده شده اضافه می کند. برای اضافه کردن نخستین آیتم آن را nil بدهید. تابع دیگری هست به نام AddChild که گره جدید را زیر گره داده شده اضافه می کند. و تابع های مشابه دیگر. در هر صورت مرجع گره اضافه شده را بر می گردانند که می تواند برای اضافه کردن گره های بعدی به عنوان پارامتر Node به کار رود. بر خلاف آنچه در ابتدا ممکن است به نظر برسد TTreeNode شباهتی به TTreeNodes ندارد و مدیریت از طریق همان TTreeView.Items انجام می شود.

برنامه db\DbxExplorer از دموهای دلفی 7 را ببینید.


چرا قبل از تابع فوق متغییری از نوع string رو نمی تونیم مقدار دهی کنیم؟ منظورتون چیه؟

(امید)
یک شنبه 06 اردیبهشت 1383, 17:53 عصر
خیلی ممنون بهزاد جان
:flower:

بار اول خواستم مقدار s رو با یک متغییر مقدار دهی کنم:



s:='aaa';
treeview1.Items.AddFirst(t2,s);


که error دسترسی غیر مجاز به آدرس حافظه رو می ده . در صورتی که اگر متغییر رو سراسری تعریف و مثلا در Onshow فرم مقدار دهی کنم مشکلی پیش نمی یاد ( همینطور بعد ار تابع مورد نظر )
به چه طریق می تونیم برای ایجاد item ها از متغییر استفاده کنیم ؟

امیر جان از اینکه باز در سایت می بینمت خوشحالم

(امید)
یک شنبه 06 اردیبهشت 1383, 18:38 عصر
به چه طریق می تونیم برای ایجاد item ها از متغییر استفاده کنیم ؟
مشکل من رفع شد.
بازم ممنونم