The component tray contains:
• Timer
• Errorhandlers
• Print capabilities
• DialogBoxes
• Menus
• Context menus
shortcut keys
• You can add shortcut keys to a menu item by selecting shortcut in the properties for this item. Select the shortcut you wish to associate with the menu item.
More about menus
• Menu items display their submenus automatically if they have them.
• You add itemclick subs to add functionality to menu items that have no submenu.
Save clicked event handler
• Private Sub mnufilesave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnufilesave.Click
• MessageBox.Show("save selected", "Menu", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
• End Sub
Context menu
• A context menu is added (to the form component tray) from the toolbox.
• When you right-click a control information can be displayed.
Context menu popup code
Private Sub ContextMenu1_Popup(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ContextMenu1.Popup
MessageBox.Show("context", "context", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
End Sub
Error provider
• An errorprovider is added to the component tray
• In this project the “causes validation” property of the two textboxes are both set to true
• Just the validation code was written – no other processing
Build error provider when form is loaded
Private Sub frmmain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
errorhandler = New ErrorProvider()
End Sub
Two event handlers provided – the validation for the textboxes
Private Sub txtint_Validating(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles txtint.Validating
Dim int As Integer errorhandler.SetError(txtint, "")’ clear any old errors Try int = Integer.Parse(txtint.Text)
Catch ex As Exception errorhandler.SetError(txtint, "field must be int") e.Cancel = True ‘cancel event End Try End Sub
Part of ss validationPrivate Sub txtss_Validating(ByVal sender As System.Object, ByVal e As
System.ComponentModel.CancelEventArgs) Handles txtss.Validating ' Me.Refresh() errorhandler.SetError(txtss, "") Dim ss As String ss = txtss.Text If ss = "" Then errorhandler.SetError(txtss, "field required")
e.Cancel = True ElseIf ss.Length <> 11 Then e.Cancel = True errorhandler.SetError(txtss, "field must contain 11 chars")
ElseIf ss.Substring(3, 1) <> "-" Or ss.Substring(6, 1) <> "-" Then‘’’’’there’s more
End IfEnd sub
Errorprovider example
• In p:\vsp\errorprovider\bin\...
• There is more to do with this example… like enable navigation and exit without correcting the error.
Splash screens:
• Create a main form with just a label and exit button
• Add the exit code (me.close())
• Add a second form to the project called frmSplash
Splash screens:
• On frmsplash put:• Information about the
application, copyright, programmer, date, pictures, whatever.
Splash screens:
• Add a timer with interval 5000 to the frmspash. In the timertick sub put– Me.Close() ‘close form after 5 sec
• Be sure to start the timer in the frmsplash load sub.
Back in frmmain
• Add formload code to create an instance of the frmsplash. Recall this code is:
Dim x as frmsplash
x.show()
• When frmsplash loads it will start its timer.
• Exe in p:\vs\splash\splash.exe
Cellular automata
• There are many examples of uses of cellular automata, from biological modeling to designing fabric patterns.
• I cover only a little bit about them here.
• Discussion of 2-d automata
• Discussion of 1-d automata
One dimensional automata
• The original values are stored in an array. These might be generated randomly, or come from measurements.
• Display (in VB) might be in a panel.• The “first generation” consists of a single set of
rectangular colors. Each color represents an integer in the array.
• The next generation is computed from the first (usually) according to some formula for example:
• Newvalue(i)=(old(i-1)+old(i)+old(i+1)) mod maxcolors• You’ll need two one dimensional arrays, and you’ll have
to keep copying the new values back into the old array, and displaying.
Two dimensional automata
• Two d automata are displayed similarly to one-dimensional ones: each value represents a color.
• But each new generation is computed in two dimensions, often using some rule about how many neighbors a given cell has in the current generation.
Two dimensional automata
• A sketch of the code goes like this:
1. Assign initial values to a fairly large (like 100X100) array.
2. Loop a bunch of times or do on buttonclick:
3. Compute next generation values into a new array
4. Display the current generation
5. Copy next generation into current
6. endloop