ה- TTreeView דלפי רכיב מציג רשימה היררכית של פריטים - צמתים לעץ. צומת מוצג על ידי טקסט צומת ותמונה אופציונלית. כל צומת בתצוגת עץ הוא מופע של מחלקת TTreeNode.
אמנם אתה יכול למלא את תצוגת העץ בפריטים בזמן העיצוב, באמצעות עורך פריטי TreeView, ברוב המקרים היית ממלא את תצוגת העץ שלך בזמן ריצה - תלוי על מה היישום שלך עוסק.
עורך פריטי TreeView מגלה שיש רק קומץ מידע שאתה יכול "לצרף" לצומת: טקסט וכמה אינדקסים של תמונות (למצב רגיל, מורחב, נבחר וכדומה).
בעיקרו של דבר, קל לתכנת את רכיב תצוגת העץ. ישנן כמה שיטות להוסיף צמתים חדשים לעץ ולהגדיר את ההיררכיה שלהם.
כך ניתן להוסיף 10 צמתים לתצוגת העץ (בשם "TreeView1"). שים לב שהמאפיין פריטים מספק גישה לכל הצמתים בעץ. ה- AddChild מוסיף צומת חדש לתצוגת העץ. הפרמטר הראשון הוא צומת האב (לבניית ההיררכיה) והפרמטר השני הוא טקסט הצומת.
ה- AddChild מחזיר את ה- TTreeNode החדש שנוסף. באמור לעיל מדגם קוד, כל 10 הצמתים מתווספים כצומת שורש (אין להם צומת אב).
במצבים מורכבים יותר תרצו שהצמתים שלכם ישאו מידע נוסף - רצוי שיהיו לכם כמה ערכים (תכונות) מיוחדים הספציפיים לפרויקט שאתם מפתחים.
נניח שאתה רוצה להציג נתונים על פריט הזמנת לקוח ממסד הנתונים שלך. לכל לקוח יכול להיות יותר הזמנות וכל הזמנה מורכבת מפריטים נוספים. זהו קשר היררכי שניתן להציג בתצוגת עץ:
במסד הנתונים שלך יהיה מידע נוסף עבור כל הזמנה ולכל פריט. תצוגת העץ מציגה את המצב הנוכחי (לקריאה בלבד) - ואתה רוצה לראות את ההזמנה שנבחרה לפי הזמנה (או אפילו לפריט).
כאשר המשתמש בוחר את הצומת "Order_1_1", ברצונך שפרטי ההזמנה (סכום כולל, תאריך וכו ') יופיעו למשתמש.
אתה יכול, באותה עת, להביא את הנתונים הנדרשים מהמאגר, אך תצטרך לדעת את המזהה הייחודי (נניח ערך שלם) של הסדר שנבחר כדי לתפוס את הנתונים הנכונים.
אנו זקוקים לדרך לאחסון מזהה הזמנה זה יחד עם הצומת, אך איננו יכולים להשתמש במאפיין טקסט. הערך המותאם אישית שאנחנו צריכים לאחסן בכל צומת הוא מספר שלם (רק דוגמא).
כאשר מצב כזה קורה יתכן שתתפתו לחפש את המאפיין Tag (ישנם רכיבים רבים של דלפי) אך נכס ה- Tag לא נחשף על ידי המחלקה TTreeNode.
הוסף נתונים מותאמים אישית לצמתי העץ: ה- TreeNode. נכס נתונים
מאפיין הנתונים של צומת עץ מאפשר לך לשייך את הנתונים המותאמים אישית שלך לצומת עץ. נתונים הם א מצביע והוא יכול להצביע על אובייקטים ורשומות. נתוני הצגת XML (עדכון RSS) ב- TreeView מראים כיצד לאחסן סוג הקלטה משתנה לנכס הנתונים של צומת עץ.
הרבה כיתות מסוג פריט חושפות את המאפיין Data - באפשרותך להשתמש בכדי לאחסן כל אובייקט יחד עם הפריט. דוגמה לכך היא TListItem של רכיב TListView. הנה כיצד להוסיף אובייקטים למאפיין הנתונים.
הוסף נתונים מותאמים אישית לצמתי עץ: The TreeView. CreateNodeClass
אם אינך מעוניין להשתמש במאפיין הנתונים של TTreeNode, אלא תרצה להרחיב את TreeNode משלך בכמה מאפיינים, לדלפי יש גם פיתרון.
נגיד שאתה רוצה להיות מסוגל לעשות
כך תוכלו להרחיב את ה- TTreeNode הרגיל בכמה מאפיינים משלכם:
- צור את ה- TMyTreeNode שלך על ידי הרחבת ה- TTreeNode.
- הוסף לו מאפיין מחרוזת MyProperty.
- טפל ב- OnCreateNodeClass עבור תצוגת העץ כדי לציין את מחלקת הצומת שלך יש ליצור.
- חשוף משהו כמו נכס TreeView1_SelectedNode ברמת הטופס. זה יהיה מסוג TMyTreeNode.
- טפל ב- OnChange של תצוגת העץ בכדי לכתוב ל- SelectedNode את ערך הצומת שנבחר.
- השתמש ב- TreeView1_Selected.myProperty כדי לקרוא או לכתוב ערך מותאם אישית חדש.
להלן קוד המקור המלא (TButton: "כפתור 1" ו- TTreeView: "TreeView1" בטופס):
הפעם לא נעשה שימוש במאפיין Data של מחלקת TTreeNode. במקום זאת, אתה מרחיב את מחלקת TTreeNode כך שיהיה לך גרסה משלך לצומת עץ: TMyTreeNode.
באמצעות האירוע OnCreateNodeClass בתצוגת העץ, אתה יוצר צומת של המחלקה המותאמת אישית שלך במקום המחלקה הרגילה של TTreenode.