
HandleSlideControl.last כשהשקף הנוכחי שווה לגודל הרשימה פחות אחד, ומגדירים Enabled = !last.Enabled לפי ההופכי של first.last נכתב בלי סוגריים, וזה תקין כי ההשוואה מתבצעת לפני ההשמה. אפשר להוסיף סוגריים כדי להיות בטוחים.הטקסט המלא של הדקות הראשונות בהרצאה «פרויקט מעשי ב-#C - תוכנת צייר - חלק 16» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
טוב, אז בשיעור הקודם ראינו שכאשר אנחנו הולכים אחורה וקדימה הכל עובד מצוין, אבל כאשר אנחנו גולשים אל מעבר לנהלך אנחנו מקבלים חריגה.
אז שני דברים אפשר לעשות. א', אפשר לפרוץ פה את החריגה, אבל בוא נגיד שאין שום סיבה להגיע אל החריגה הזו. למה בעצם לאפשר ליוזר ללחוץ על כפתור אם הכפתור לא אמור להיות זמין?
אז אפשר להפוך את הכתפתור ה-next, אם אני בסוף הרשימה, או את ה-prev, אם אני בתחילת הרשימה, אפשר להפוך אותם ל-disabled או ל-visible false.
אני אוהב דווקא לעשות דברים disabled, אני לא אוהב שדברים פתאום נעלמים לי על המסך. אז אוקיי, אז בהתחלה כשהמערכת עולה, אפשר להגיד שזה אמור להיות disabled, אמור להיות disabled זה עוד תכף נחשוב עליו זה אמור להיות enable זה אמור להיות disabled כל עוד יש רק איבר אחד אבל בואו נטפל קודם כל בפרב ובנכס שהם עושים את הבעיות אז
בהתחלה אנחנו נעשה את פרב נעשה אותו disabled אז יש לנו פה מה שנקרא enable double click עליו מחליף אותו לdisabled ואת זה דאבל קליק מחליף אותו לדיסייבלד האמת היא שזה אמור להיות read only יוזר אמור רק לראות איזה
סלייד אנחנו נמצאים לא אמור לכתוב לתוכו אוקיי אז כשהיוזר מוציא סלייד זה אמור להיות enabled אבל מה שאני חושב זה אולי נעשה איזושהי פונקציה אחת שפשוט בוחנת איזה כפתורים אמורים להיות enabled בגדול היא בוחנת את גודל המערך לעומת המיקום הנוכחי,
ולפי זה היא מחליטה בעצם איזה כפתור אמור להיות Enabled ואיזה Disabled. אז אולי בהתחלה דווקא נשאיר את זה Enabled וניתן לפונקציה הזו להתחיל. הפונקציה הזו פשוט תופעל עבור כל לחיצה עבור כל אחד מהכפתורים האלה, הפונקציה הזו תופעל, וגם בעליית המערכת היא תופעל, זו אותה פונקציה, שתהיה משותפת להרבה קריאות, להרבה פונקציות אחרות, אז נגדיר אותה כפונקציה נפרדת.
וזה נקרא Handle, נקרא לזה Slide Control. תספרי בבקשה ב-Slide Control ונקרא לה כאן Handle Slide Control. מפה נקרא לה ואולי מעוד מקומות, או אם כבר באותה הזדמנות ב-Add New Slide אני שוקל אם לעשות את זה לפני או אחרי, לדעתי כדאי לפני.
ה-invalidate, next, רב, רב החזה אפשר לנטרל, וזהו. ומה אנחנו עושים בעצם בפונקציה הזו? אז בואו נעבור כפתור כפתור.
אז לדוגמה, הכפתור נגיד next, בוטון next slide, ה-enable שלו אמור, מה הוא אמור לרפוץ? אז השאלה היא, איפה אנחנו נמצאים יחסית לגודל המערך? אם, אז בואו נגדיר פה את Current Slide, טוב, נגדיר פה Int Slide שווה ל-Int.parse של הטקסט בוקס Slide Number.txt, אז יש לי את Current Slide.
אם Current Slide, ול.., אם אנחנו בסוף, שווה ל.., למה? אולי נפריד את זה למשתנה נפרד נקרא לו b בינתיים ונשאל את השאלה האם ה-current slide שווה ל-array list הכללי זה drawings במקום ה-current slide זה ה-list view ה-array list הנוכחי אז נגדיר פה את סלייד או את ליינס, עכשיו
באנו לקרוא לזה ריי-ליסט נקרא לזה ליינס כדי לשמר קונסיסטנטיות, שווה לריי-ליסט במקום הנוכחי, אז יש לנו את ליינס, אם קארנט סלייד סליחה, לדרואוינגס לגודל טוב, זה לא יכול להיות, קארנט סלייד אף פעם לא יכולה ויכול להגיע לפחות אחד אם הוא שווה לפחות אחד, אז זה אומר שאנחנו באחרון.
אנחנו באלאסט שווה לטרו. ואם זה ככה, אז ניקח את ההופכי. אנחנו רוצים שאם אנחנו באחרון, זה לעשות את זה ככה. מה זה בעצם אומר?
אם התנאי הזה הוא נכון, אז לאט תהיה טרו. ואם התנאי הזה הוא לא נכון, אז לאט תהיה פולט. האם צריך סוגריים סביב משהו פה? האם צריך סוגריים סביב זה?
התשובה היא שלא צריך. אני יכול תמיד להוסיף סוגריים, סוגריים סוגר וסוגריים פותח וסוגריים סוגרים, כדי להיות משוכנע שזה נכון, שזה מה שאנחנו רוצים, אבל אם לא היינו שמים אז אין בעיה.
זאת אומרת, יש פה שווה ושווה שווה ומינוס. בעצם השאלה הנשאלת היא מה בעצם הולך לקרות פה? לאן תקבל את הערך הזה ואת זה נשווה לזה ומזה נחסיר, ניקח את כאן, נחסיר ממנו, נשווה את זה לסלייד או נשווה את זה לזה ואז נחסיר.
בקיצור, אין בעיה בגלל שאופרטור ההשוואה יש לו קדימות נמוכה יותר מאופרטור ההחזרה. זה כאילו בעצם שיש סוגריים סביב הדבר הזה, זה יתבצע ראשון, אחריו יתבצע ההשוואה כי