
CheckOnClick, או בקוד על ידי היפוך הערך הבוליאני של Checked.FormatDigitGrouping שנקראת מכל מקום שבו המספר מתעדכן. באג בפורמט יתוקן במקום אחד בלבד.Checked = !Checked להחלפת הסימון.TextBox1.Text.IndexOf('.') למציאת הנקודה העשרונית.TextBox1.Text.Insert(מיקום, ",") להכנסת פסיק.הטקסט המלא של הדקות הראשונות בהרצאה «פרויקט ב-#C - מחשבון פשוט - חלק 16» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
טוב, היום אנחנו רוצים לעשות דיג'יט גרופינג, בואו נריץ את המחשבון ובואו גם נריץ את המחשבון של ווינדאוז, זה של ווינדאוז, אז במחשבון של ווינדאוז יש לי פה view digit grouping in checkbox, אם אני מסיר את הצ'ק ואני אומר לו 1, 2, 3, 4, 5, 6,
אז הוא לא שם לי פה פסיקים, אבל אם אני אומר לו digit grouping אז הוא שם לי פה את הפסיק, וגם אם אני אגיד לו עכשיו 7, 8, 9, אז הוא מטפל לי בפסיקים נכון גם אם אני עובד עם Backspace הוא מטפל לי בפסיקים נכון גם אם אני עובר למספר שלילי ומוסיף הוא מטפל לי בפסיקים נכון אז אנחנו רוצים שכל הדברים האלה יהיו נכונים גם לגבינו
אז דבר ראשון שאנחנו רוצים לעשות זה כשאני אומר הוא Digital Grouping אני עושה לו קליק אז הוא צריך להפוך להיות צ'ק נכון כמו המחשבון של Windows הוא צ'ק ולפי זה שהוא צ'ק בעצם המחשבון יודע לפרמט לצייר את הטקסטבוקס להציג את הטקסט בוקס עם הפסיקים לפי זה שכתוב דיג'יט גרופינג
אם אני מסיר את הדיג'יט גרופינג זה כבר לא מסומן ובאמת המחשבון יודע לא להציג פסיקים אז בואו נעשה קודם כל שהצ'ק יופיע וייעלם בצורה מתואמת נסגור את המחשבון שלנו, נחזור לקוד, נחזור לדיזיין ופה נגיד לו view, רק שנייה, טוב אז בואו נעשה דאבל קליק על דיג'יט גרופינג וזו הפרוציה שמטפלת בדיג'יט גרופינג אז כאשר
היוזר עושה קליק על דיג'יט גרופינג אנחנו רוצים להפוך את המניו אייטם לצ'קט עכשיו המניו אייטם אני יכול להגיד לו את זה ניקח את זה נגרור את זה עם עכבר ימני לכאן קופי טאב לא קונטרול z הום טאב טאב טאב יפה נקודה צ'קט שווה לטרו זה יהפוך אותו לטרו בואו נריץ את זה אם אני אומר לו view digit grouping, view הוא checked.
אם אני אלחט עליו שוב ואסתכל עליו, הוא עדיין checked. זאת אומרת, אני צריך שכש-e הוא לחוץ, אז להפוך אותו ל-unchecked.
בואו נעשה את זה. יפה. אז אם הוא, ניקח אותו. אם הוא שווה ל-true אם הוא לחוץ, אז להפוך אותו ל-false.
אלס, להפוך אותו ל-true. הוא כבר מסומן עם check, אז להפוך אותו ל-false. אם הוא לא מסומן, אז להפוך אותו לתור שהוא כן יהיה מסומן.
בואו נריץ את זה, view, עכשיו הוא לא, נגיד לו, עכשיו הוא כן, נגיד לו עוד פעם, ועכשיו הוא לא, נגיד לו, עכשיו הוא כן, נגיד לו, עכשיו הוא לא.
מצוין. אבל האמת היא שאפשר לעשות את זה בשורה אחת של קוד. בואו נסגור את זה. אז בעצם מה אני רוצה להגיד לו? אני רוצה להגיד לו שהצ'קט שלו צריך פשוט להתהפך.
אני בעצם לא צריך לשאול פה את העיף הזה. נעיף את השורה הזו, אני אסמן את זה ככה ואת זה אני מסיר ועושה copy and שווה paste כל השאר השורות אני מעיף ובעצם אני אומר לו אתה צריך להיות שווה להפוך ממה שהיית אז אני יכול להגיד לו להפוך ממה שהיית הרי התכונה checked היא מסוג בול כן או לא אז אם אני אומר לו לא זה סימן של לא
הפוך ממה שהוא אז אם הוא צ'קט אז זה יהיה לא צ'קט ואם הוא לא צ'קט אז זה יהיה כן צ'קט בואו נריץ את זה view ועכשיו הוא צ'קט ועכשיו הוא לא צ'קט עכשיו הוא צ'קט עכשיו הוא לא צ'קט מצוין האמת היא שאני בכלל צריך קוד כדי לכתוב את זה זאת אומרת אני יכול בכלל בלי קוד אני יכול לחזור לדיזיין לגשת לפרופרטיז של הדיג'יט גרופינג טול סטרים מניו אייטם
לגשת ל-check on click, לעשות את זה כרגע הוא ב-false Specify as well as a button, זה מניו אייטם, should automatically check and uncheck when clicked.
מצוין, נגיד לו double click, עכשיו הוא נהיה true. אוקיי, בואו נריץ את זה. ונגיד לו, עכשיו אתה כן, ועכשיו אתה לא.
עכשיו אתה כן, ועכשיו אתה לא. מצוין, אז את זה סידרנו. אבל הדבר הבא שאנחנו רוצים לעשות זה כשהיוזר לוחץ על דיג'יט גרופינג אני רוצה בעצם לפרט את הטקסטבוקס לפי דיג'יט גרופינג, לדוגמה 123,456 עכשיו סליחה נגיד שזה היה ככה עכשיו אני רואה ואני אגיד לו עכשיו תהיה דיג'יט גרופינג הוא צריך פה אחרי 456 להוסיף פסיק אם אני אגיד לו עכשיו תסיר את הדיג'יט גרופינג הוא
צריך להסיר את הפסיקים אז בואו נעשה את זה דאבל קליק יפה אז פה אני עכשיו באמת האמת אני צריך כן לשאול אותו if נשכפל את זה בר ימני copy here נסיר רק את הקליק אם זה checked שווה ל true דרך אגב אני לא חייב לשאול אם הוא שווה ל true אני יכול פשוט להגיד האם הוא checked checked בפני עצמה היא בוליאנית אז אני לא צריך לשאול האם הוא שווה ל true
טוב אז האם הוא checked אם הוא checked אז אז בעצם אנחנו רוצים לפרמט אותו לפי ה... עם הפסיקים. אז איך נעשה שיהיה לו פסיקים? זו שאלה טובה.
טוב, אז מה בעצם אנחנו רוצים לעשות? בואו נשים פה breakpoint ונריץ. בואו ניקח את המספר 123,456, ונגיד לו עכשיו. יפה.
בואו נסתכל עכשיו כאן, נעבור ל-Watch, ונכתוב לו פה textbox1. Enter, יפה. אז טקסטבוקס אחד, אני בווטש אחד, טקסטבוקס אחד מראה לי שיש לי 1, 2, 3, 4, 5, 6. ובעצם פה באמצע, אני יכול פה לשים פסיק, אני רוצה בעצם פה לשים את הפסיק.
אז מה זה בעצם המיקום הזה? אז למעשה זה בעצם אם נספור פה את מספר הקרקטרים שיש לנו, האמת היא אם נתחיל מהנקודה העשרונית יותר נכון, ונספור אולי נוריד את הפסיק, ונספור מהנקודה העשרונית את מספר הפרות או מספר התווים שיש לנו ונחלק את זה בשלוש.
טוב, אם נחלק את זה בשלוש נקבל שתיים אז זה כאילו שני פסיקים, לא. אני רוצה לחלק את זה בשלוש אבל קודם להחסיר מזה אחד. אני רוצה לקחת את מספר הספרות להוריד ממנו אחד ואז לחלק בשלוש וזה ייתן לי את מספר הפסיקים שבעצם אני אמור לקבל.
נכון? בואו נבדוק את זה. אם אני אגיד לו פה שבעצם יש לי ככה ספרות, אם אני אחלק את זה, יש לי בעצם שבע ספרות, שבע פחות אחד חלקי שתיים חלקי שלוש זה שש חלקי שלוש זה שתיים. בואו נראה אם זה נכון.
פסיק אחד כאן ופסיק אחד כאן, בדיוק. זאת אומרת, מספר הפסיקים הוא מספר הספרות פחות אחד חלקי שלוש. אוקיי, אז בואו נסיר את הפסיקים, invalid, לא יודע מה הוא רוצה.
אוקיי, ובואו נחזור לכאן. עכשיו מה שאני רוצה זה בעצם לחשב את מספר הפסיקים. ולמה אני צריך את מספר הפסיקים?
מספר הפסיקים בעצם יגיד לי כמה פעמים אני צריך לעשות איזושהי לולאה, ובכל איטרציה של הלולאה להחדיר פסיק במקום הנכון בתוך ה-string שלנו. זאת אומרת, אני רוצה לעשות איזושהי לולאה, ובכל איטרציה לספור 1, 2, 3 להכניס פה פסיק.
אחת, שתיים, שלוש, להכניס פה פסיק. בכל איתרציה אני בעצם רוצה פלוס שמאלה שלוש ולהכניס פסיק. עוד איתרציה, טוב, פה באיתרציה השנייה אני כבר אצא.
אבל אם שוב נחזור, אני עושה קליקים ואז הוא מאפשר לי לשנות. אם במספר הזה, האיתרציה הראשונה אני סופר שלוש, שם פסיק. איתרציה שנייה, סופר שלוש, שם פסיק.
מכיוון שיש לי פה רק שתי איתרציות, אז זה כל מה שאני צריך ואז אני יוצא מהלולאה. אז בואו נעשה את זה. אז אני אומר לו כאן, אז בואו, קודם כל אני צריך לחשב את מספר הספרות.
אז int num of digits שווה לtextbox.length, לא, .count, לא, .text.length, זה מספר הספרות, אבל אני רוצה את זה מהנקודה העשרונית, נכון? כי אם יש לי מספר שהוא רציונלי, שיש לו גם פה בהמשך איזה, ויופי, שיש לו גם בהמשך ספרות.
אז בעצם אני תמיד רוצה, המכנה המשותף של כל המספרים הוא שאם אני אתחיל מהנקודה העשרונית ומשם אני אספור כמה ספרות יש לי, מזה אחסיר אחד, ואת זה אחלק בשלוש, אני אקבל את מספר הפסיקים שאני אמור להחדיר באיתרציות.
אוקיי, אז קודם כל בעצם אני צריך לאתר את הנקודה העשרונית. קודם כל נגדיר int, זה נקרא decimal. הנקודה העשרונית, המיקום שלה, אני אקרא לזה decimal-location, לא להתבלבל.
decimal-location שווה לטקסטבוקס נקודה טקסט נקודה אינדקס אוב, יש להם פה אינדקס אוב, כי המצא לי את המיקום של נקודה עשרונית, וזה כמו שאתם רואים, הוא רוצה צ'ארט, צ'ארט זה כאילו גרש וגרש, וזה מחזיר לי אינט את המיקום, יפה מאוד.
אז יש לי את המיקום כמובן מצד שמאל, כי הכל באנגלית, אז במקרה הזה הנקודה הישרונית היא, זה, בין האחד הוא במקום האפס, אז זה 0, 1, 2, 3, 4, 5, 6. הוא אמור להחזיר לי את הספרה 6. בואו ננטרל את השורה הזו ונגיד לו f11, f11, f11, יפה, הוא החזיר לי את הספרה 6, כמו שראינו,
האחד זה במקום האפס, יפה. אז יש לי את הנקודה שממנה אני אמור להתחיל לספור כמה ספורות יש לי. אז בעצם, האם יש לי שש ספרות? כן, יש לי שש ספרות.
אז שש ספרות זה בעצם number of digits, זה בעצם אותו דבר. אז אולי פשוט נקרא לזה number of digits האמת. בואו נעשה copy, ופה paste, ואת השורה הזו נעיף. יפה.
אז number of digits, אני רוצה להחסיר ממנו אחד, אז נגיד number of digits, מינוס מינוס, זה מחסיר אחד. יפה.
עכשיו, אחרי שהחסרתי ממנו אחד, זה יוצא בעצם לחלק בשלוש אז נגיד int זה יהיה מספר הפסיקים num of commas כמה זה פסיק num of commas שווה ל-num of digits אחרי החיסור של האחד שאנחנו צריכים לעשות חלקי שלוש זה אומר לי כמה תיקים אמורים להיות לי אז בוא נגיד עוד פעם תבצע את זה F11, F11, כמה, אוקיי, 5, F11, 1, הוא צודק.
ואם היה לי פה 7, נגיד לו Enter, הוא לא נותן לי לשנות, בוא נגיד לו איזה, ככה, עכבר ימני, Edit Value, האם הוא ייתן לי לשנות? הוא לא נותן לי לשנות, זה נורא מוזר. ועכבר ימני, ו...
לא רוצה, Add Watch, לא עוזר לי. טוב, אז זה פשוט נריץ לו מחדש, קונטרול שיפט F5, 1, 2, 3, 4, 5, 6, 7, View, Digit Grouping, F11, F11, אוקיי, מספר הספרות הוא 7, F11, F11, מספר הפסיקים באמת יהיה 2. יפה, אז מספר הפסיקים זה בעצם מספר האיתרציות, מספר הכאילו לולאות שאני אמור לבצע, ובכל איתרציה לדחוף פסיק, אז בואו נעשה את
זה, אז נגיד לו while, ככה אנחנו עושים לולאות, while מה? אז אם num of commas כל פעם נוריד ממנו 1 בכל איטרציה בסוף כל איטרציה בעצם נוריד ממספר ה-commas 1 וכל עוד הוא גדול מ-0 כל פעם אנחנו נוריד ממנו 1 ובסוף הוא יהיה 0 ומה אנחנו רוצים לעשות בכל איטרציה?
בכל איטרציה אנחנו רוצים לדחוף איפשהו את הפסיק. אנחנו צריכים לאתר את הנקודה שבה אנחנו רוצים לדחוף את הפסיק.
איפה אנחנו רוצים לדחוף את הפסיק? אז למעשה באיטרציה הראשונה זה יהיה בעצם במקום שנקרא NUM OF DIGITS שזה בעצם אפשר להגיד השאלה היא מה זה? מה זה שש זה NUM OF DIGITS אז זה המקום האפס המקום האחד השתיים השלוש הארבע החמש השש כאילו במקום השבע כאילו לדחוף לדעתי בין שש לשבע לדחוף אז זה כאילו זה אם עכשיו הייתי