Visual Basic/יסודות השימוש בשפה/תכונות המשנות עיצוב של פקד: הבדלים בין גרסאות בדף

תוכן שנמחק תוכן שנוסף
←‏כתיבת הקוד: המשך כתיבת פרק זה
שורה 220:
</div>
הפעל כעת את התוכנה ונסה ללחוץ על שלושת התיבות. הטקסט שבתוך התווית ינוע שמאלה, ימינה ולמרכז, בהתאם לתיבה אותה תבחר.
 
=== שינוי הצבע באמצעות כפתורי הפקודה ===
 
נתכנת כעת את כפתורי הפקודה שמיקמנו על הטופס. להזכירכם, תפקידם של הכפתורים בתוכנה שלנו יהיה לשנות את צבע הטקסט בתווית; שלושה מבין הכפתורים קובעים את צבע הטקסט לצבעים אדום, ירוק או כחול - בהתאמה לצבע הכפתור - והכפתור הנותר מגריל צבע באקראי.
 
לחץ לחיצה כפולה על כפתור הפקודה האדום, <tt>cmdColorRed</tt>; תיפתח חטיבת הקוד של מאורע הלחיצה על כפתור זה. בתוך חטיבת קוד זו, עלינו לפנות לתכונה של התווית <tt>lblText</tt> אשר קובעת את צבע הטקסט בתווית. התכונה האחראית על צבע הטקסט נקראת '''צבע קדמי''' (''ForeColor'') (וזאת בניגוד לתכונה '''צבע אחורי''' ''BackColor'', אשר קובעת את צבע הרקע של התווית). לפיכך, עלינו לשנות את מצבה של תכונה זו. אך איך נורה לתכונה זו לבחור בצבע אדום?
 
{{חלון מידע|למעשה, ב-Visual Basic, בדומה ל-[[w:he:HTML|html]], צבע מוגדר על-ידי מספר '''הקסאדצימלי''' (Hexa-decimal) - כלומר, מספר בשיטת-ספירה על בסיס 16. בשיטת ספירה זו, קיימות 16 ספרות - הרגילות 0-9 ובנוסף אליהן A-F. בספירה על-בסיס 16, מספר דו-ספרתי (כלומר, בטווח 0 עד FF) הוא שווה-ערך למספר בטווח 0-255 בבסיס ספירה עשרוני (רגיל). לכן, מספיקים לנו שלושה מספרים דו-ספרתיים בבסיס 16 כדי לייצג צבע בשיטת RGB.<BR>
לפיכך, כדי לייצג צבע, עלינו לתת למחשב מספר על-בסיס 16 בעל 6 ספרות, כאשר שתי הספרות הראשונות מייצגות את רמת האדום בצבע, השתיים האמצעיות - את רמת הירוק, והשתיים האחרונות - את רמת הכחול. הפונקציה '''RGB''' ב-Viusal Basic פשוט מקבלת שלושה מספרים עשרוניים ו"בונה" על-פיהם מספר הקסאדצימלי שש-ספרתי אחד, ואותו היא שולחת למחשב כדי לייצג צבע.}}
מסך המחשב יוצר צבעים שונים על ידי שילוב של שלושת צבעי היסוד '''אדום, ירוק וכחול''' (RGB - Red, Green, Blue). כל נקודה במסך מקבלת את צבעה על ידי שימוש ברמות שונות של שלושת הצבעים הללו. ברוב המסכים המודרניים, רמתם של כל אחד מצבעי היסוד בכל נקודה במסך נע בטווח 0-255, כאשר 0 פירושו שאין כל שימוש בצבע-יסוד זה בנקודה הזו, ו-255 פירושו שיש כאן שימוש בצבע זה בעוצמתו המירבית; כך, למשל, בנקודה בה רמת צבעי-היסוד היא "'''אדום''' = 176 / '''ירוק''' = 38 / '''כחול''' = 217" יתקבל גוון מסויים של סגול רך. כיוון שבצורה זו פועלים המסכים, בתוכנות מחשב רבות - כמו-גם שפת התכנות Visual Basic - ניתן להתייחס ולהגדיר צבע על-פי רמות ה'''אדום-ירוק-כחול''' המשמשות להגדרת אותו צבע.
 
ב-Visual Basic, הדבר נעשה באמצעות פונקציה בשם '''RGB'''. פונקציה זו מקבלת 3 מספרים, אשר מייצגים את רמת האדום, הירוק והכחול בצבע המבוקש, בהתאמה. כיוון שהצבעים שאנו רוצים ליצור הינם הצבעים אדום, ירוק וכחול, נוכל לקבוע בפשטות את רמות צבעי-היסוד בכל אחד מהם - כדי ליצור את הצבע אדום, למשל, עלינו להשתמש פשוט ברמה מלאה (255) של אדום, ולא להשתמש כלל (0) בירוק וכחול.
 
לכן, הקוד של שלושת כפתורי הצבעים הרגילים יראה כך:
<div style="Direction:Ltr">
Private Sub cmdColorRed_Click()
lblText.ForeColor = RGB(255, 0, 0)
End Sub
Private Sub cmdColorGreen_Click()
lblText.ForeColor = RGB(0, 255, 0)
End Sub
Private Sub cmdColorBlue_Click()
lblText.ForeColor = RGB(0, 0, 255)
End Sub
</div>
הפעל את התוכנה ובדוק את שלושת הכפתורים. כפי שתראה, ברגע שתלחץ על כל אחד מהם, התווית תשנה את צבעה לצבע התואם.
 
נעבור כעת לתכנות הכפתור שנותר, <tt>cmdColorRnd</tt>. ראשית, כיוון שאנו מגרילים כאן מספר אקראי, עלינו לכתוב את הפקודה <tt>Randomize</tt> בתוך חטיבת הקוד של כפתור-פקודה זה. לאחר מכן, נתכנת את הגרלת הצבע עצמה. דרך אחת לעשות זאת היא גם באמצעות הפונקציה RGB - במקום לתת לה שלושה מספרים שקבענו מראש, נוכל להורות למחשב להגריל 3 מספרים בטווח 0-255 כפי שלמדנו ב[[Visual Basic/יסודות השימוש בשפה/הגרלת מספר אקראי|פרק הקודם]], ולהשתמש במספרים אלו בפונקציה:
<div style="Direction:Ltr">
lblText.ForeColor = RGB(Int(Rnd * 256), Int(Rnd * 256), Int(Rnd * 256))
</div>
דרך זו תפעל כמובן באופן מושלם, אך יתכן שאנו יכולים להסתפק במשהו פשוט יותר. בדרך זו, נוכל לקבל מבחר של 256<sup>3</sup> צבעים שונים ומגוונים, אך חלקם מאוד דומים - לדוגמא, אין הבדל נראה לעין בין RGB(43,200,116)&lrm; לבין RGB(43,201,116)&lrm;. לעומת זאת, קיימת ב-Visual Basic פונקציה אחרת המשמשת לקביעת צבעים, לה יש מבחר קטן בהרבה - רק 16 צבעים - אך אלו צבעים בולטים השונים באופן מובהק אחד מהשני. פונקציה זו נקראת <tt>QBColor</tt>, והיא מקבלת מספר אחד בטווח 0-15. עבור המספר 0, הפונקציה מחזירה את הצבע '''שחור'''. עבור 15, היא מחזירה '''לבן'''. עבור כל מספר אחר, היא מחזירה צבעים שונים כגון אדום, כחול, סגול, צהוב, אפור וכו'. נכתוב את הקוד כך:
<div style="Direction:Ltr">
Private Sub cmdColorRnd_Click()
Randomize
lblText.ForeColor = QBColor(Int(Rnd * 16))
End Sub
</div>
פתח כעת את התוכנה, ולחץ על כפתור זה מספר פעמים. בכל פעם, הטקסט שבתווית ישנה את צבעו לצבע אחר. כל הכבוד!