w
ראשי >>עבודה עם אוביקטים >>
איך קשורים עצמים אחד לשני
מפת הפרק:

5.2 איך קשורים עצמים אחד לשני

5.2.1 עבודה עם אוסף עצמים
5.2.2 עצמים המכילים עצמים
5.2.3 אוספים נפוצים ב VisualBasic

 

כאשר אתה שם שני פקדים על טופס, הם עצמים נפרדים בעלי מאפיין שם (Name ) שונה ,אולם הם שייכים לאותה מחלקה- CommandButton . הם ג"כ שווים בתכונה שהם שייכים לאותו טופס . אתה ראית בשלב מוקדם בפרק זה שפקד שנמצא על טופס מוכל בטופס. זה שם את הפקדים במדרג. בכדי להתיחס לפקד לפעמים תצטרך לפנות קודם לטופס אליו הוא שייך , באותה מידה שעליך להוסיף קידומת של מדינה כאשר אתה מתקשר ממדינה אחרת. שני הפקדים גם חולקים גם את עובדת היותם פקדים. כל הפקדים חולקים מספר מאפיינים אשר שונים מיתר העצמים ב VisualBasic .החלק הבא יסביר איך VisualBasic משתמשת באוסף בכדי לאחד עצמים דומים.

מדרג העצמים

מדרג העצמים מיצג את הסדר שבו קשורים העצמים אחד לשני , ואיך אתה יכול לגשת אליהם. בד"כ אתה לא צריך להיות מוטרד מנושא זה חוץ מכמה מקרים:

  • כאשר אתה משתמש בעצמים של יישום אחר,אתה צריך להיות בקי במדרג העצמים שלו.
  • בזמן עבודה עם עצמים בעלי גישת נתונים ,אתה צריך להיות בקי במדרג העצמים שלהם.
ישנם כמה מקרים נפוצים ב VisualBasic שעצמים מכילים עצמים אחרים , בהם נעסוק בחלק הבא:

עבודה עם אוסף עצמים

לאוסף עצמים יש את המאפיינים והשיטות שלו.אנו מתיחסים לכל עצם כחבר באוסף. כל חבר הוא מספר רציף אשר מתחיל מ 0 -זהו מספרו הסידורי. לדוגמא, אוסף הפקדים כולל את כל הפקדים הנתונים על הטופס, כמו שרואים בתמונה 5.3 .אתה יכול להשתמש באוסף בכדי לפשט את הקוד כאשר אתה צריך לבצע את אותן פעולות על כל איברי האוסף.

תמונה 5.3 אוסף פקדים

לדוגמא, הקוד הבא עובר על כל אוסף הפקדים ומכניס את שמם לקופסת רשיממות:

Dim MyControl as Control
For Each MyControl In Form1.Controls
List1.AddItem MyControl.Name
Next MyControl

החלה של מאפיין או שיטה על חבר באוסף

ישנן שתי תכניקות כלליות בכדי לפנןת לחבר באוסף:
לפנות אליו בשמו . הדרכים הנ"ל שוות:

Controls("List1)
Controls!List1

להשתמש במספרו הסידורי:

Controls(3)

אתה יכול לפנות לכל האוסף ,או לכל אחד בנפרד, אתה יכול ליישם מאפיינים ושיטות בשתי הגישות:

'של פקד קופסת רשימות ל - 200 Top משנה את מאפיין
Controls!List1.Top = 200
-או-
Dim MyControl as Control
For Each MyControl In Form1.Controls() 'של כל חבר בנפרד ל - 200 Top משנה את מאפיין
MyControl.Top = 200
Next MyControl

עצמים המכילים עצמים

מספר עצמים ב VisualBasic מכילים עצמים אחרים. לדוגמא, טופס בד"כ מכיל פקד אחד או יותר. היתרון בהכלת עצם אחד בשני הוא שע"י הפניה לעצם המכיל אנו יודעים לאיזה פקד התכוונתה. לדוגמא בתמונה 5.4 אנו מדמים שני טפסים שונים שיכולים להיות ביישום אחד בכדי להכניס חשבון הכנסות והשני הוצאות:

תמונה 5.4 שני טפסים המכילים פקד בעל שם זהה

לשני הטפסים יכולה להיות קופסת רשימות בשם lstAccNo . אתה יכול לפנות לאחת באופן ספציפי ע"י ייחוס לטופס המכיל אותו:

frmReceivable.lstAcctNo.AddItem 1201
-או-
frmPayable.lstAcctNo.AddItem 1201

אוספים נפוצים ב VisualBasic

ישנם כמה מקרים נפוצים ב VisualBasic שעצם מכיל עצמים אחרים. הטבלה הבאה מתארת בקיצור את האוספים השכיכים ביותר ב VisualBasic . אוסף תיאור Forms(טפסים ) מכיל טפסים שנטענים Controls(פקדים ) מכיל פקדים בטופס Printers(הדפסה ) מכיל עצמים הניתנים להדפסה

מאפיין המכיל(Container )

אתה יכול להשתמש במאפיין העצם Container בכדי לשנות את העצם המכיל את העצם בתוך הטופס.הפקדים הבאים יכולים להכיל פקדים אחרים: ·

  • פקד מסגרת(Frame )
  • פקד קופסת תמונה (Picture Box )
  • פקד סרגל כלים (Toolbar )-בגירסאות Professional ,Enterprise בלבד

בדוגמא הבאה תוצג העברת פקד כפתור ממכיל אחד לשני בתוך הטופס. פתיחת פרויקט חדש, ציור פקד מסגרת, פקד קופסת טקסט, ופקד כפתור ע"ג טופס. הקוד הבא בשיגרת האירוע "קליק" של הטופס יגדיל את המשתנה counter וישתמש ברוטנה "Select Case " בכדי לסובב את פקד הכפתור ממכיל למכיל:

 

Private Sub Form_Click()

Static intX as Integer

  Select Case intX
   Case 0
Set Command1.Container = Picture1
       Command1.Top= 0
       Command1.Left= 0

     Case 1
      
Set Command1.Container = Frame1
       Command1.Top= 0
       Command1.Left= 0

     Case 2
      
Set Command1.Container = Form1
       Command1.Top= 0
       Command1.Left= 0

   End Select
 intX = intX + 1
End Sub

 

יסודות העבודה עם אוביקטים איך קשורים עצמים אחד לשני פרק - 6