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

תוכן שנמחק תוכן שנוסף
←‏שינוי גודל הגופן באמצעות פס הגלילה: כתיבת חלק זה. סיום כתיבת הדף והסרת תבנית:בעבודה
מ מארק-אפ של קוד מקור
שורה 127:
 
לחץ לחיצה כפולה על תיבת-הסימון <tt>chkUnderline</tt>. יפתח חלון הקוד של התוכנה, ויופיעו בו השורות:
<source lang="vb">
<div style="Direction:Ltr">
Private Sub chkUnderline_Click()
 
End Sub
</divsource>
בדיוק כמו בתוכנות המוקדמות יותר שכתבנו, לחיצה כפולה על פקד פותחת חטיבת-קוד הרלוונטית ל'''מאורע ברירת-המחדל''' (''Default Event'') של הפקד; כלומר, חטיבת קוד אשר מתבצעת ברגע שמתרחש מאורע מסויים, שמוגדר כמאורע הבסיסי ביותר של הפקד. עד עכשיו, כאשר השתמשנו בכפתורי-פקודה (''Command Buttons''), מאורע זה היה המאורע '''לחיצה''' (''Click''), המתרחש כאשר הכפתור נלחץ. גם כאן, בתיבות-סימון, מאורע ברירת-המחדל הוא ''Click''; במקרה של תיבות-סימון, מאורע זה מתרחש כאשר הסימון שבתוך התיבה משתנה (מה שקורה לרוב בעקבות לחיצה על התיבה).
 
ובכן, כמו מקודם, עלינו להוסיף בין השורה <tt>Private Sub&lrm;...</tt> לבין <tt>End Sub</tt> את הקוד שאנו רוצים שיתרחש כאשר מתבצעת לחיצה על תיבת-הסימון. במקרה זה, אנו רוצים לשנות את סגנון הגופן של התווית שבתחתית הטופס, כך שיופיע מתחת לכתב '''קו תחתון''' (''Underline''). דבר זה אנו קובעים באמצעות התכונה FontUnderline; הוסף את שורת הקוד הבאה לתוכנה שלך:
<source lang="vb">
<div style="Direction:Ltr">
Private Sub chkUnderline_Click()
'''lblText.FontUnderline = True'''
End Sub
</divsource>
הרץ כעת את התוכנה שלך, ולחץ על תיבת הסימון בה כתוב Underline. הכתב שבתוך התווית שלמטה יסומן מיד בקו תחתון, בדיוק כפי שתכננו! נסה כעת ללחוץ שנית על תיבת הסימון Underline - דבר אינו קורה. הסיבה לכך פשוטה - בקוד של התוכנה כתבנו שכאשר המשתמש לוחץ על תיבת הסימון, יופיע קו תחתון, בין אם התיבה מסומנת כעת ובין אם לא. כדי לפתור את הבעיה, בכל פעם שאנו לוחצים על תיבת הסימון, עלינו לגרום לתוכנה לבדוק האם התיבה מסומנת, ולפעול בהתאם.
 
שורה 149:
 
נכתוב זאת כעת בתוכנה:
<source lang="vb">
<div style="Direction:Ltr">
Private Sub chkUnderline_Click()
lblText.FontUnderline = chkUnderline.Value
End Sub
</divsource>
הפעל כעת את התוכנה ונסה ללחוץ על תיבת הסימון. קו תחתון יופיע מתחת לטקסט. לחץ שנית על התיבה ובטל את סימון ה-V - הקו התחתון יעלם! כל הכבוד!
 
שורה 164:
==== תכנות תיבות-הסימון הנותרות ====
 
באותה הדרך בה כתבנו את הקוד לתיבת-הסימון הראשונה, נוכל גם לתכנת את שאר תיבות הסימון. אך לפני כן, נשתמש בתיבת הסימון עם המילה Italics כדי להדגים דבר נוסף. לחץ לחיצה כפולה על התיבה <tt>chkItalics</tt> וכתוב את שורת הקוד הבאה (שים לב לנקודה המסומנתשבין באדוםהמילה <tt>Font</tt> לבין <tt>Italic</tt>):
<source lang="vb">
<div style="Direction:Ltr">
Private Sub chkItalics_Click()
lblText.Font<span style = "color:Red">.</span>Italic = chkItalics.Value
End Sub
</divsource>
שים לב, שכאשר כתבת <tt>lblText.Font.&lrm;</tt> נפתחה רשימה, הדומה בצורתה לרשימת-התכונות של אחד הפקדים שמיקמנו (כגון <tt>lblText</tt>). הסיבה לכך פשוטה - גם המילה <tt>Font</tt> היא למעשה שם של אובייקט. אמנם זהו לא אובייקט הנראה לעין על המסך, כמו התווית עצמה, אך הוא עדיין מתפקד כמו אובייקט בעל מספר תכונות.
 
שורה 181:
 
נכתוב כעת את הקוד עבור כל שלושת תיבות הסימון, בסגנון זה:
<source lang="vb">
<div style="direction:ltr">
Private Sub chkUnderline_Click()
lblText.Font.Underline = chkUnderline.Value
End Sub
 
Private Sub chkItalics_Click()
lblText.Font.Italic = chkItalics.Value
End Sub
 
Private Sub chkBold_Click()
lblText.Font.Bold = chkBold.Value
End Sub
</divsource>
הפעל כעת את התוכנה ובדוק את כל שלושת תיבות הסימון. סגנון הגופן של הטקסט ישתנה בהתאם למצבן של התיבות. כל הכבוד!
 
שורה 201:
 
לחץ לחיצה כפולה על התיבה <tt>optLeft</tt> כדי לפתוח חטיבת קוד עבור פקד זה (שים לב - גם עבור תיבות בחירה, המאורע המוגדר כברירת-מחדל הוא המאורע ''Click'', בדיוק כמו בתיבות סימון, בכפתורי-פקודה, ובפקדים רבים אחרים ב-Visual Basic). אנו רוצים שכאשר נלחץ על תיבה זו, הטקסט ייושר לצד שמאל. כפי שראינו קודם, מספר-הקוד עבור יישור-לשמאל הינו 0. לכן, כתוב את השורה הבאה בתוך חטיבת הקוד:
<source lang="vb">
<div style="Direction:Ltr">
lblText.Alignment = '''0'''
</divsource>
כמובן, אם נפעיל כעת את התוכנה לא נוכל להבחין בשום השפעה. הטקסט שבתווית <tt>lblText</tt> מיושר לצד שמאל, ואם נלחץ על התיבה Left, הטקסט יהיה מיושר לצד ... שמאל. לכן, הבה נתכנת גם את שאר תיבות הבחירה, ואז נבדוק את התוצאה. אנו רוצים שכאשר נלחץ על התיבה Center, הטקסט יישור למרכז (קוד 2), וכאשר נלחץ על Right, הטקסט ייושר לימין (קוד 1):
<source lang="vb">
<div style="direction:Ltr">
Private Sub optLeft_Click()
lblText.Alignment = 0
End Sub
 
Private Sub optCenter_Click()
lblText.Alignment = '''2'''
End Sub
 
Private Sub optRight_Click()
lblText.Alignment = '''1'''
End Sub
</divsource>
הפעל כעת את התוכנה ונסה ללחוץ על שלושת התיבות. הטקסט שבתוך התווית ינוע שמאלה, ימינה ולמרכז, בהתאם לתיבה אותה תבחר.
 
שורה 233:
 
לכן, הקוד של שלושת כפתורי הצבעים הרגילים יראה כך:
<source lang="vb">
<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
</divsource>
הפעל את התוכנה ובדוק את שלושת הכפתורים. כפי שתראה, ברגע שתלחץ על כל אחד מהם, התווית תשנה את צבעה לצבע התואם.
 
נעבור כעת לתכנות הכפתור שנותר, <tt>cmdColorRnd</tt>. ראשית, כיוון שאנו מגרילים כאן מספר אקראי, עלינו לכתוב את הפקודה <tt>Randomize</tt> בתוך חטיבת הקוד של כפתור-פקודה זה. לאחר מכן, נתכנת את הגרלת הצבע עצמה. דרך אחת לעשות זאת היא גם באמצעות הפונקציה RGB - במקום לתת לה שלושה מספרים שקבענו מראש, נוכל להורות למחשב להגריל 3 מספרים בטווח 0-255 כפי שלמדנו ב[[Visual Basic/יסודות השימוש בשפה/הגרלת מספר אקראי|פרק הקודם]], ולהשתמש במספרים אלו בפונקציה:
<source lang="vb">
<div style="Direction:Ltr">
lblText.ForeColor = RGB(Int(Rnd * 256), Int(Rnd * 256), Int(Rnd * 256))
</divsource>
דרך זו תפעל כמובן באופן מושלם, אך יתכן שאנו יכולים להסתפק במשהו פשוט יותר. בדרך זו, נוכל לקבל מבחר של 256<sup>3</sup> צבעים שונים ומגוונים, אך חלקם מאוד דומים - לדוגמא, אין הבדל נראה לעין בין RGB(43,200,116)&lrm; לבין RGB(43,201,116)&lrm;. לעומת זאת, קיימת ב-Visual Basic פונקציה אחרת המשמשת לקביעת צבעים, לה יש מבחר קטן בהרבה - רק 16 צבעים - אך אלו צבעים בולטים השונים באופן מובהק אחד מהשני. פונקציה זו נקראת <tt>QBColor</tt>, והיא מקבלת מספר אחד בטווח 0-15. עבור המספר 0, הפונקציה מחזירה את הצבע '''שחור'''. עבור 15, היא מחזירה '''לבן'''. עבור כל מספר אחר, היא מחזירה צבעים שונים כגון אדום, כחול, סגול, צהוב, אפור וכו'. נכתוב את הקוד כך:
<source lang="vb">
<div style="Direction:Ltr">
Private Sub cmdColorRnd_Click()
Randomize
lblText.ForeColor = QBColor(Int(Rnd * 16))
End Sub
</divsource>
פתח כעת את התוכנה, ולחץ על כפתור זה מספר פעמים. בכל פעם, הטקסט שבתווית ישנה את צבעו לצבע אחר. כל הכבוד!
 
שורה 266:
 
להזכירכם, קבענו שה'''ערך''' (''Value'') המינימלי של הפקד יהיה 8, והמקסימלי - 26. לפיכך, כאשר המשתמש גולל את הפס, עלינו פשוט לקחת את ערכו החדש של הפקד ולהקצות אותו לגודל-הגופן (<tt>Font.Size</tt>) של התווית, ולטקסט שבתיבת-הטקסט:
<source lang="vb">
<div style="Direction:Ltr">
Private Sub vsbSize_Change()
txtSize.Text = vsbSize.Value
lblText.Font.Size = vsbSize.Value
End Sub
</divsource>
הפעל כעת את התוכנה, ונסה להזיז את פס הגלילה בדרכים שונות. תראה כי הגופן גדל או קטן בהתאם, ותוכנה של תיבת הטקסט משתנה.