Download - מבוא לתכנות ב WINDOWS
מבוא לתכנות בWINDOWS
רוזנפלד" אבי ר דריכרדסון" אריאלה ר ד
תכנות מונחה אירועיםEvent-driven programming
(eventלקבלת "אירוע" )הרעיון - התוכנה מחכה •דוגמאות לאירוע•
enterלחיצה על כפתור, תזוזה של עכבר, כתיבה בתיבה, לחיצה על •eventהמתכנת צריך לתכנת מה יקרה לאחר קבלת ה•האירוע למעשה עשוי משני חלקים: •
מקום בתוכנה שבו האירוע מוזנק - נסתר מבחינתנו•מקום בתוכנה שבו האירוע נלכד –בו נכתוב את הקוד לביצוע פונקציונליות רצויה•
בתכנות ללא אירועים )שראינו עד עכשיו( •המתכנת היה יוצר לולאה שבה היה מזין, מנהל, מסווג ומסדר בעצמו את •
האירועים.תכנות מונחה אירועים אופייני ליישומים בעלי ממשק משתמש גרפי•
(C, ו#NET., JAVA, אבל גם VB)כמו •
VBתכנות בעזרת האובייקטים של
)הטופס(FORMבניית ה •( הרצוייםcontrolsיצירת הטופס עם הבקרים )–יצירת המקום להתחלת האירוע–
מופעלEVENTהוספת הקוד כאשר ה• רגיל, אבל כולל את האובייקטים של VBקוד –
FORMה
VB ב Windowsהוראות ליצירת אפליקציה
• After pushing Start, choose Microsoft Visual Studio.Net
• Press New Project Button• Left Pane – Choose Visual Basic Projects• Right Pane – Choose Windows Application• Fill in name of folder where solutions will be
kept and press OK
VBבניית אובייקט ב
הטופס
בעת פתיחת הפרויקט החדש מופיע טופס •(Form)
נותנת חלון View/Properties, או על F4לחיצה על –עם המאפיינים של הטופס
ישנה Textמילוי של "משהו" במקום שבו כתוב •את שם הטופס ל "משהו"
ניתן לשחק גם עם גודל הטופס ע"י מתיחה...•ניתן לשנות את צבע הטופס ע"י שינוי המאפיין •
BackColor ל Customובחירת צבע כרצונכם ,
בניית הטופס
מילוי הטופס(controls ניתן להוסיף לטופס בקרים )פקדים ,•
)מוחבא בצד(:toolBoxההוספה נעשית ע"י פתיחת ה – לטופס או לחיצה כפולה בעזרת העכברcontrolגרירת •
controlניתן לשנות את המאפיינים של ה – על מנת name ע"י שינוי controlממומלץ לתת שם משמעותי ל •
להקל על התכנות בהמשך
controlsדוגמאות ל •Buttonכפתור –
ניתן ללחוץ עליו כדי לבצע פעולה•labelתווית –
מיועד להצגה של טקסט•צבע התווית הוא כמו צבע הטופס•
Customizingהתאמת התווית - Label
בחירת התווית מתבצעת ע"י לחיצה על התווית •Textשינוי הכיתוב שמופיע עליה ע"י שינוי המאפיין • Backcolorעל מנת לשנות את צבע הרקע של התווית שנו את • Forecolorעל מנת לשנות את צבע הכיתוב של התווית שנו את •הזזת התווית ושינוי הגודל ע"י תפיסה עם העכבר ומשיכה•
בתפריט לשם כךformatניתן גם להיעזר ב •TextAlignמיקום טקסט במרכז ע"י המאפיין •Fontניתן גם לשחק עם הפונט ע"י המאפיין •
F5 או Ctrl-F5להרצת התוכנית )כמו תמיד( •
הוספת אובייקטיםוהמאפיינים TOOLBARעבודה עם ה
controlמאפיינים נוספים של
• .SHOW• .HIDE• .TEXT• .ForeColor = Color.???
הצגת תמונה )והחבאה...( )באתר(1דוגמא
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click PictureBox1.Visible = True Label1.Text = "Picture On!" Label1.TextAlign = ContentAlignment.BottomLeft Off.Visible = TrueEnd SubPrivate Sub Off_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Off.Click PictureBox1.Visible = False Label1.Visible = True Label1.Text = "Picture OFF!" ' Label1.TextAlign = ContentAlignment.TopRightEnd SubPrivate Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click EndEnd Sub
באתר(2דוגמא של טופס )דוגמא
תכנון הפונקציונליות במקרה של אירוע
יש לייצר את קטע הקוד המתאים ע"י לחיצה •controlכפולה על ה
נוצר קוד מתאים למשל:•עבור לחיצת כפתור•
Private Sub Button2_Click(…) Handles Button2.Click End Sub
לעדכון בעת פתיחת הטופס יש ללחוץ לחיצה כפולה •על הטופס, ואז יוצר הקוד
Private Sub Form1_Load(…) Handles MyBase.Load
End Sub
הקוד מאחורי הטופס
קלט / פלט באתר(3מחשבון לחישוב שטח צילנדר )דוגמא
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ' In this program we calculate the volume of a ' cylinder by the formula PI * r ^2 * h Dim r As Single, h As Single, v As Single Const pi = 3.14151926536 r = TextBox1.Text h = TextBox2.Text v = pi * r ^ 2 * h Label4.Text = Format(v, "#.##") 'Label4.Text = v Also okEnd Sub
דוגמא של טופס – קלט ופלט
!שימו לב
FORM, קלט = VBב•LABELפלט = •
הקוד מאחורי הטופס
טפסים מיוחדים שכבר מוגדרים לקלט ופלט••messageBoxלהדפסת הודעה •InputBoxלקבלת קלט או בעת טיפול באירוע )שקף הבא(mainניתן להשתמש בתוך •
Module Module1 Sub Main() MsgBox("This goes out") Dim x As Integer = InputBox("please enter a number") MsgBox("You typed " & x) End SubEnd Module
מיוחדים!messageBox, InputBox
MESSAGEBOXעם קלט
Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim exita As String exita = MsgBox("Exit?", vbYesNo) If exita = vbYes Then End End If End SubEnd Class
תרגיל
יש ליצור משתנה הקולט סכום כסף. בפלט יש להציג את המספר המינימאלי של המטבעות
המהוות סכום זה. 10למען התרגיל, נניח שיש רק מטבעות של
ש"ח, ואגרות.1ש"ח, ש"ח:34.70לדוגמא
מטבעות 4 ש"ח, 10 מטבעות של 3בדוגמא זו: אג'.70 ש"ח, ו- 1של
?שאלות
איך יראה הטופס?•
מה יהיו החישובים?•
באתר...(4)דוגמא •
פתרוןPublic Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim shekel As Double = 0 Dim whole, tens, ones As Integer shekel = TextBox1.Text whole = Math.Floor(shekel) tens = whole \ 10 ones = whole Mod 10 TextBox2.Text = tens TextBox3.Text = ones TextBox4.Text = Format((shekel - whole) * 100, "##") End SubEnd Class
events בIFשילוב של תנאי באתר5דוגמא
Public Class Form1 Dim counter As Integer = 0 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click counter += 1 If TextBox1.Text = "Avi" Then MsgBox("You got it -- " & counter) End Else MsgBox("Guess Again!") TextBox1.Clear() End If End SubEnd Class
eventsהוספת לוגיקה ב באתר6דוגמא
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If TextBox1.Text = "Avi" And TextBox2.Text = "Bob" Then MsgBox("Good") End ElseIf TextBox1.Text <> "Avi" And TextBox2.Text <> "Bob" Then MsgBox("Guess Again for Both!") TextBox1.Clear() TextBox2.Clear() ElseIf TextBox2.Text <> "Bob" Then MsgBox("Guess Again for Box 2!") TextBox2.Clear() Else MsgBox("Guess Again for Box 1!") TextBox1.Clear() End IfEnd Sub
MessageBoxדוגמא נוספת - באתר7 דוגמא
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim output As String = "" For i = 1 To 10 output = output + "Hi!" output += vbNewLine Next MsgBox(output)End Sub
ListBox באתר8דוגמא
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim output As String = "" For i = 1 To 10 ListBox1.Items.Add("Hi") NextEnd SubPrivate Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click ListBox1.Items.Clear()End Sub
LISTBOXלולאות עם Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim output As String For i = 1 To 10 output = "" For j = 1 To 10 output += "*" Next ListBox1.Items.Add(output) NextEnd SubPrivate Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click ListBox1.Items.Clear()End SubPrivate Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Dim output As String For i = 1 To 10 output = "" For j = 1 To i output += "*" Next ListBox1.Items.Add(output) NextEnd Sub
הוספת תפריטMenu Strip
משחק ניחוש באתר9 דוגמא
Public Class Form1 Dim RandomClass As New Random() Dim num As Integer = RandomClass.Next(1, 100) Dim counter As Integer = 0 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click counter += 1 Dim guess As Integer = Val(TextBox1.Text) 'Or: Dim guess As Integer = TextBox1.Text If guess = num Then MsgBox("You got it!") End End If TextBox2.Text = num End SubEnd Class
סיכוםבתכנות אירועים, יש צורך לשאול:
)ומה יש בטופס כדי לקלוט אותו(מה יהיה האירוע•מה יהיה התוצאה )ואיפה זה יופיע(•מה הקוד מאחורי התוצאה•
סוגי אובייקים:•LABELלפלט •TextBoxלקלט או פלט • MesageBox , ListBoxלפלט •InputBoxלקלט כפתור להפעיל אירוע•
RadioBox (radioButton)
רק אופציה אחת מסומנת ברגע נתון•בכל טופס–או בכל קבוצה–
GroupBoxניתן להקיף כמה כפתורים בעזרת •Trueאופציה מסומנת ערכה –
CHANGE בין שני סוגי EVENTיש צורך להבחין ב•זה שמסמן את הכפתור–זה שמנקה את הכפתור–
לכפתור רדיו )הצבעה( דוגמא(vote.exe)Private Sub RadioButton1_CheckedChanged(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged If RadioButton1.Checked = True Then MsgBox("You voted " & RadioButton1.Text) End IfEnd SubPrivate Sub RadioButton3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton3.CheckedChanged If RadioButton3.Checked = True Then MsgBox("You voted " & RadioButton3.Text) End IfEnd SubPrivate Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged If RadioButton2.Checked = True Then MsgBox("You voted " & RadioButton2.Text) End IfEnd Sub
CheckBox
כמה אופציות יכולות להיות מסומנת ברגע נתון•Trueאופציה מסומנת ערכה –
CHANGE בין שני סוגי EVENTיש צורך להבחין ב•זה שמסמן את הכפתור–זה שמנקה את הכפתור–
דוגמאDim Total As Integer = 0Dim value1 As Integer = 10Dim value2 As Integer = 5Dim value3 As Integer = 20Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged If (CheckBox1.Checked = True) Then Total += value1 Else Total -= value1 End If TextBox1.Text = Val(Total)End SubPrivate Sub CheckBox2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox2.CheckedChanged If (CheckBox2.Checked = True) Then Total += value2 End If TextBox1.Text = Val(Total)End SubPrivate Sub CheckBox3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox3.CheckedChanged If (CheckBox3.Checked = True) Then Total += value3 End If TextBox1.Text = Val(Total)End Sub
11הכנה לתרגיל
כפתורים שכל 2בתוך הטופס הראשון תבנה • טפסים(3כפתור פותח עוד טופס )סה"כ
תבנה את שני הטפסים הנוספים. כל טופס •( מהמשתמשTEXTBOXמקבל מספר )מ
2הטופס המקורי יראה את הסכום של •המספרים
דוגמא באתר!•
איך בונים כמה טפסים
MODULE בGLOBALמגדירים משתנים •מיצרים את הטפסים•מכניסים את המידע•
?איך בונים כמה טפסים
טופס ראשיPublic Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Form2.Show() End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Form3.Show() End SubEnd Class
טופס שניPublic Class Form2 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
...מה שרוצים לעשות בלחיצה על הכפתור(?מה רוצים)
End SubEnd Class
?MODULEאיך בונים את ה
MODULEבתוך הModule Module1
כאן נגדיר משתנים "גלובלים" חשוב להגדיר אותם
public!!!למשל:
Public x As Integer = 0
ואז אפשר להשתמש במשתנים הללו בכל הטפסים האחריםEnd Module