PDA

View Full Version : نمایش گروه های کالا بصورت ساختار درختی که دارای Check Box باشد



mahdy.asia
یک شنبه 28 دی 1393, 11:21 صبح
من می خواهم محتوای جدول گروه های کالا را بصورت درختی نمایش دهم بطوری که Check Box هم داشته باشد کد زیر را نوشتم

var CurrentDeptID, RecordDeptID: Integer;
RootNode, DeptNode: TTreeNode;
begin
CurrentDeptID := 0;
TreeView1.Items.Clear;
DeptNode := nil;
try
SpCategoryGoods_Brw.First;
while not SpCategoryGoods_Brw.Eof do
begin
RecordDeptID := SpCategoryGoods_Brw.FieldByName('ParentCategoryID' ).AsInteger;
if (DeptNode = nil) or (RecordDeptID <> CurrentDeptID) then
begin
DeptNode := TreeView1.Items.AddChild(RootNode, SpCategoryGoods_Brw.FieldByName('NameParent').AsSt ring);
DeptNode.StateIndex := 1 ;
CurrentDeptID := RecordDeptID;
end;
DeptNode2 := TreeView1.Items.AddChild(DeptNode, SpCategoryGoods_Brw.FieldByName('Name').AsString);
DeptNode2.StateIndex := 1 ;
SpCategoryGoods_Brw.Next;
end;
finally
SpCategoryGoods_Brw.Close ;
end;
اما CheckBox را برای همه نودها ایجاد نمی کند

mahdy.asia
یک شنبه 28 دی 1393, 11:30 صبح
کد-پدر- نام گروه
NULL 1 مواد غذايي
NULL 2 بوتيک
1 16 مواد پروتئيني
1 17 آجيل و خشکبار
1 24 چيپس و پفک و تنقلات
2 25 پيراهن و شلوار
2 26 کت و کاپشن
2 28 لباس شب
2 29 کيف و کفش و کمربند

یوسف زالی
یک شنبه 28 دی 1393, 12:32 عصر
الان چک باکس کدتون کجاست؟؟
چه کامپوننتی استفاده کردید؟ دیفالت دلفی چک باکس نداره.

hadisalahi2
دوشنبه 29 دی 1393, 10:36 صبح
از کامپوننت Virtual Tree view استفاده کنید

توی همین سایت بگردی لینک دانلودش وجود داره که تا XE 7 v رو پشتیبانی میکنه

البته TMS , Jedi , Alpha هم این کنترل رو دارند

اما اون اولی از همشون حرفه ای تره

یا حق

mahdy.asia
دوشنبه 29 دی 1393, 18:28 عصر
الان چک باکس کدتون کجاست؟؟
چه کامپوننتی استفاده کردید؟ دیفالت دلفی چک باکس نداره.
کامپوننت استاندارد دلفی استفاده کردم وقتی DeptNode2.StateIndex رو مقدار دهی کنی اگر 1 باشد CheckBox در وضعیت True اگر 2 باشد CheckBox در وضعیت False اگر 3 و 4 باشد Radio در TreeView قرار می گیرد می تونید در حالت Desigen time راحت موضوع رو چک کنید.

mahdy.asia
دوشنبه 29 دی 1393, 18:29 عصر
از کامپوننت Virtual Tree view استفاده کنید
با توجه به اینکه کامپوننت استاندارد دلفی این قابلیت رو داره نمی خوام از کامپوننت دیگری استفاده کنم

یوسف زالی
دوشنبه 29 دی 1393, 18:59 عصر
خب البته این اتفاق در نسخه من نیفتاد! احتمالا نسخه های بالاتر اینطور شده باشه، ممنون برای این نکته.
از روی همین نکته خودتون تست کنید ببینید مثلا جای State اگر Text رو مقدار بدید، همه نودها مقدار می گیرند یا نه، اگر بله، ایراد از کامپوننت و اگر نه، ایراد از کد شماست.

mahdy.asia
سه شنبه 30 دی 1393, 10:06 صبح
خب البته این اتفاق در نسخه من نیفتاد! احتمالا نسخه های بالاتر اینطور شده باشه، ممنون برای این نکته.
این امکان رو من در نسخه دلفی 7 و دلفی XE7 تست کردم بدون خطا اجرا شد و نام نود رو درست پر می کنه و به احتمال زیاد کد من قابل اصلاح است ولی من نتونستم این کار رو انجام بدم (تا الان) StateIndex روی بعضی از نودها یا مقدار دهی نمی شود یا اینکه عملکرد صحیح رو از خود نشان نمی دهد.

یوسف زالی
سه شنبه 30 دی 1393, 10:44 صبح
خب ایراد داره پس، از کامپوننت های دیگه استفاده کنید.
TMS مجموعه خوبی رو ارائه داده.
اگر هم خواستید می تونید خودتون مثل من بنویسیدش. دست به کار بشید کمکتون می کنم.

mahdy.asia
شنبه 04 بهمن 1393, 19:02 عصر
من هنوز نتونستم به شکل دلخواه کارم رو راه بندازم حتی کامپوننت های دیگر رو هم استفاده کردم و به همون مشکل قبلی برخورد کردم برای بعضی از نودها ChecBox نمی زاره اما توی این لینک گفته که با کامپوننت دلفی هم می شه این کار رو کرد
http://delphi.about.com/od/vclusing/l/aa092104a.htm

یوسف زالی
شنبه 04 بهمن 1393, 20:59 عصر
ببینید نمی شه که یک بام و دو هوا،
اگر تکست رو درست می گذاره، باید چک رو هم درست بگذاره.