Presentation is loading. Please wait.

Presentation is loading. Please wait.

Teaching an Introductory Programming Class

Similar presentations

Presentation on theme: "Teaching an Introductory Programming Class"— Presentation transcript:

1 Teaching an Introductory Programming Class
Using Visual Basic .NET

2 We are... Anita C. Millspaugh Professor, Computer Information Systems
Mt. San Antonio college Julia Case Bradley Professor Emeritus, Computer Information Systems Mt. San Antonio College Bradley/Millspaugh texts: VB 4, VB 5, VB 6, Advanced VB, Java and the new VB .NET Spring 2002

3 You… Teach Visual Basic 6? Are planning to teach Visual Basic .NET?
Have taught an OOP language such as Java, SmallTalk, or C++? Spring 2002

4 Our Goals for Today Help you transition from VB 6 to VB .NET
Look at the differences between Visual Basic 6: object based; event driven Visual Basic .NET: object oriented Introduce the new Visual Studio IDE (integrated development environment) Show the changes to the language and the new features Spring 2002

5 Our Approach This is an introductory programming course Main topics:
Program planning Programming logic Variables, constants, calculations, decisions, loops, data files Language syntax Coding standards Testing and debugging The VB .NET course still covers these topics, with OOP concepts embedded throughout. Spring 2002

6 What is the .NET Framework?
Platform for building and running applications Designed for cross-platform compatibility Common Language Runtime (CLR) Share methods and objects from different languages Many languages to choose from — VB, C#, COBOL, Fortran, J# … Spring 2002

7 The Biggest Change in VB .NET — OOP
A new mind set New keywords: Inherits Overrides Overloads Terminology introduced in Chapter 1 Concepts covered in Chapter 6 Spring 2002

8 The Second Biggest Change — Web Forms
Programming for the Web vs. Windows New set of controls Client side vs. server side Web page layout Very simple projects presented in Chapter 9 Spring 2002

9 The Third Biggest Change — Data File Handling
Database uses ADO .NET (Chapter 10) No Data control “Simple” program is more difficult Binding is more robust and likely to be used by “real programmers” Must write code for navigation Simple data files use streams (Chapter 11) Spring 2002

10 Chapter 1 — Introduction Topics Covered
Objects, Methods, and Properties The Visual Studio IDE Planning a Project Creating a Project Labels and Buttons Code Syntax and Logic Errors Help Spring 2002

11 Chapter 1 — Changes New IDE Spring 2002

12 Chapter 1 (continued) Terminology VS IDE Solution Explorer Form Designer Editor window Tabbed display is the default for the IDE AutoHide toolbox; can be “pinned” open Spring 2002

13 Chapter 1 (continued) Push Pin Tabbed Window Locked Control
Spring 2002

14 Chapter 1 (continued) A solution can contain multiple projects
Forms, classes, and code modules have a .vb extension The IDE automatically creates a folder for the project Spring 2002

15 Chapter 1 (continued) Form Designer Similar to VB 6
Double-Click a control in the toolbox: New default-sized control Appears on top of a selected control Top-left of the form if no control is selected Locked controls have a dark border when selected Command Buttons are now Buttons Use “btn” for prefix No more Caption property — now it is Text Spring 2002

16 Chapter 1 (continued) The Editor window (formerly the Code window)
Lots more IntelliSense help; can be confusing Declarations section replaces General Declarations Class List and Method List - Selecting the object and event is somewhat different Collapsible Regions in code Spring 2002

17 Chapter 1 (continued) Tabs Method List Class List Collapsed Region
Procedure Spring 2002

18 Chapter 1 (continued) Complications:
Changing the name of the form requires the project’s startup object to be changed PrintForm is no longer supported IDE Print does not offer Form Image or Form Text No edit-and-continue execution – Must restart (recompile) if edits are made during break time Spring 2002

19 Chapter 1 (continued) Form and controls no longer have Caption property Forms, buttons, labels all use the Text property The Alignment property becomes TextAlign The maximum length of identifiers is 16,383 All new Help — MSDN Redesigned Object Browser Me.Close() Spring 2002

20 Chapter 2 — More Controls Topics Covered
Check Boxes Radio Buttons Group Boxes Picture Boxes Designing an Interface Setting the Tab Order Setting up keyboard access keys (shortcuts) Spring 2002

21 Chapter 2 — Changes No more Image control, Line control, or Shape control Use PictureBox for graphics; Label for lines OptionButton becomes RadioButton Frame becomes GroupBox AcceptButton and CancelButton are properties of the form Set the form’s StartPosition property; no more Form Layout Window Spring 2002

22 Chapter 2 (continued) PictureBox controls
Use Image property to hold a graphic Set SizeMode property to StretchImage — replaces Stretch property of Images CheckBox controls Value property becomes the Checked property (Boolean) It’s event is CheckChanged Great new method for setting tab order Spring 2002

23 Chapter 2 (continued) View / Tab Order Spring 2002

24 Chapter 2 (continued) New component tray holds non-visible controls
To add ToolTips, add a ToolTip control to the component tray New ToolTip on ToolTip1 property is added to the form and all controls Text boxes have a Clear method txtName.Clear() txtName.Text = “” Focus method replaces SetFocus txtName.Focus() Spring 2002

25 Chapter 2 (continued) Many colors available through the Color class
lblMessage.ForeColor = Color.Blue Color.Red Color.Yellow Color.Aquamarine Color.Bisque Color.Chocolate Color.Cadetblue … and dozens more Spring 2002

26 Chapter 3 — Variables, Constants and Calculations Topics Covered
Variables, constants, calculations Data types Converting text input to numeric Formatting output Error Handling (Exceptions) Message Boxes Spring 2002

27 Chapter 3 — Changes Strongly Typed Data Option Strict On
– Enforces strong data typing Data Types Short (old Integer) Integer (old Long) Decimal (Currency is gone) Object ( Variant is gone) Date (replaces DateTime) Spring 2002

28 Chapter 3 (continued) Initialize a variable at declaration Dim intMax As Integer = 100I Dim decRate As Decimal = 0.08D Declare multiple variables at once Dim intCount, intNumber As Integer Convert all input to correct data type (Do not use Val function) decSale = CDec(txtSale.Text) CDec and CInt — Can parse: $ , () + - CInt rounds to nearest EVEN number Spring 2002

29 Chapter 3 (continued) New assignment Operators += –= *= /= &=
decTotal += decSale Structured Exception Handling Try (Code that could cause an exception) Catch [excName As excType] (Code to handle the exception) Finally (Code to execute in any case) End Try We can catch input errors before covering If statements! Spring 2002

30 Chapter 3 (continued) MessageBox class MessageBox.Show(Arguments)
Several choices for argument list Introduces concept of Overloaded functions Multiple signatures to choose from MessageBox.Show(TextMessage) MessageBox.Show(TextMessage, TitlebarText) MessageBox.Show(TextMessage, TitlebarText, _ MessageBoxButtons) MessageBox.Show(TextMessage, TitlebarText, _ MessageBoxButtons, MessageBoxIcon) Spring 2002

31 Chapter 3 (continued) MessageBox Icons and buttons
Enumeration of constants Spring 2002

32 Chapter 4 — Decisions and Conditions Topics Covered
Conditions / Relational Operators Block Ifs Compound Conditions Validation Message Boxes that return the user response Debugging Spring 2002

33 Chapter 4 — Changes Block IF unchanged
Conditions — always compare like data types If CInt(txtInput.Text) > 10I Then String ToUpper and ToLower methods (replace UCase and LCase functions) If txtInput.Text.ToUpper = “YES” Spring 2002

34 Chapter 4 (continued) MessageBox.Show method returns an object of type DialogResult Dim dgrResponse As DialogResult dgrResponse = MessageBox.Show(”Shall we?", _ "The Question", MessageBoxButtons.YesNo, _ MessageBoxIcon.Question) If dgrResponse = DialogResult.Yes Then MessageBox.Show("You said Yes!") Else MessageBox.Show("You said No!") End If Spring 2002

35 Chapter 4 (continued) Replace vbCrLf, vbCr, vbLf with constants in the ControlChars class ControlChars.NewLine Dim strMultilineMessage As String strMultilineMessage = “Line 1” & _ ControlChars.NewLine & “Line 2” Spring 2002

36 Chapter 4 (continued) Calling a procedure requires parentheses
VB 6 Way: ClearControls or Call ClearControls() VB .NET Way: [Call] ClearControls() Calling an event procedure requires two arguments Private Sub btnExit_Click(ByVal sender _ As System.Object, ByVal e _ As System.EventArgs) Handles btnExit.Click Call the event procedure: [Call] btnExit_Click(sender, e) Spring 2002

37 Chapter 4 (continued) Debug.WriteLine (Replaces Debug.Print)
Debug.WriteLine(“I got this far”) Clear the Output Window: Right-click / Clear All New Autos window — shows current value of variables and objects within approx. 6 statements Immediate window only valid at run time Keyboard shortcut for Step Into — F11 Spring 2002

38 Chapter 5 — Menus, Sub Procedures, and Sub Functions Topics Covered
Creating Menus and Menu Items Creating ContextMenus Displaying Common Dialog Boxes Writing General Procedures Spring 2002

39 Chapter 5 — Changes Create a menu by adding a MainMenu control to the component tray Great new Menu Designer replaces the Menu Editor Spring 2002

40 Chapter 5 (continued) For Context menus, add a ContextMenu control
A ContextMenu uses the same Menu Designer as a MainMenu Attach a context menu by setting the ContextMenu property of a control or the form Spring 2002

41 Chapter 5 (continued) New ColorDialog and FontDialog controls
Added to the component tray Use the control’s Show method to display Can set and retrieve properties of the control With dlgColor .Color = frmMain.BackColor .ShowDialog() .frmMain.BackColor = .Color End With Spring 2002

42 Chapter 5 (continued) The FontDialog control With dlgFont
'Change the font for the total label With dlgFont .Font = lblTotal.Font .ShowDialog() lblTotal.Font = .Font End With Spring 2002

43 Chapter 5 (continued) Arguments are passed ByVal (by default)
The Editor adds ByVal if you leave it out New Return statement Can still set function name to value Better to use the Return statement Private Function CalculateSum( _ ByVal intNum1 As Integer, _ ByVal intNum2 As Integer) As Integer 'Calculate the sum of the numbers Return intNum1 + intNum2 End Function Spring 2002

44 Chapter 6 — OOP Topics Covered
Object-oriented terminology Multitier applications Class vs. Object Visibility — Public, Private, Protected Constructors Instantiation Inheritance Spring 2002

45 Chapter 6 — Changes Namespaces Organize class libraries
Provide unique naming region Can create your own namespace Specifying namespaces lblMessage.Font = New System.Drawing.Font( _ "Arial", 12) or Imports System.Drawing.Font ... lblMessage.Font = New Font("Arial", 12) Spring 2002

46 Chapter 6 (continued) Classes vs. Objects
Use New keyword to instantiate For exception handling, declare the name at the module level and instantiate in a Try/Catch block Encapsulation Classes hide implementation details Only the Public properties and methods can be seen by other classes Spring 2002

47 Chapter 6 (continued) Inheritance New class based on existing class
Spring 2002

48 Chapter 6 (continued) Inheritance (continued)
All public properties and methods are inherited Visual inheritance — can inherit a form New keywords to support inheritance Inherits Overrides Overridable Public Class StudentBookSale Inherits BookSale Spring 2002

49 Chapter 6 (continued) Inheritance (continued) In base class
Public Overridable Function _ ExtendedPrice() As Decimal In derived class Overrides Function ExtendedPrice() _ As Decimal Spring 2002

50 Chapter 6 (continued) Polymorphism
Consistent naming, so that many classes can have the identically-named methods that perform an action appropriate for the object Example: The Add method for collections, lists, arrays, database Identically named methods in a class, with different implementations based on the arguments Keyword: Overloads Example: MessageBox.Show method, which has many different argument lists (signatures) Spring 2002

51 Chapter 6 (continued) New Format for Property Procedures
Private mstrLastName As String Public Property LastName As String Get LastName = mstrLastName End Get Set (ByVal Value As String) mstrLastName = Value End Set End Property Spring 2002

52 Chapter 6 (continued) ReadOnly and WriteOnly keywords for properties
Private mdecTotalPay As Decimal ReadOnly Property SalesTotal() As Decimal Get TotalPay = mdecTotalPay End Get End Property Spring 2002

53 Chapter 6 (continued) Shared members — one variable for for all instances of the class Often used for totals and counts 'SalesTotal property Private Shared mdecSalesTotal As Decimal 'SalesCount property Private Shared mintSalesCount As Integer Spring 2002

54 Chapter 6 (continued) Constructors — New() method
Replaces ClassInitialize procedure Constructors are not inherited Must write your own New() procedure First statement should be MyBase.New() Constructors can be overloaded Parameterized Constructors mBookSale = New BookSale(txtTitle.Text, _ CInt(txtQuantity.Text), _ CDec(txtPrice.Text)) Spring 2002

55 Chapter 6 (continued) Visibility Private Public Protected
Accessible only inside the class or a derived class Garbage Collection is automatic Don’t set objects to Nothing in code Spring 2002

56 Chapter 7 — Lists, Loops, and Printing Topics Covered
List Boxes and Combo Boxes Items Collection Methods and Properties of Lists Do Loops For/Next Loops Printing and Print Preview Spring 2002

57 Chapter 7 — Changes The DropDownStyle property of ComboBoxes replaces the Style property No List property or ItemData property Lists have an Items collection Items.Add(value) Items.Insert(position) Items.Remove(text string) Items.RemoveAt(index) Items.Clear() Items.Count SelectedIndex property of control Spring 2002

58 Chapter 7 (continued) lstSchools.Items.Add("Harvard")
cboMajors.Items.Insert(1, cboMajors.Text) intTotalItems = lstItem.Items.Count strSelectedFlavor = _ lstFlavor.Items(lstFlavor.SelectedIndex) cboCoffee.Items.RemoveAt( _ cboCoffee.SelectedIndex) cboCoffee.Items.Remove(cboCoffee.Text) Spring 2002

59 Chapter 7 (continued) New events SelectedIndexChanged
Event to use when the user makes a selection Click event no longer supported for lists TextChanged One event for each keystroke Enter and Leave replace GotFocus and LostFocus events FindString and FindStringExact methods Not covered in this text SelectAll method For text boxes or text portion of a combo box Spring 2002

60 Chapter 7 (continued) Printing is completely changed
No more Printer.Print, Form.Print, PictureBox.Print All text printing is performed with a DrawString method on a Graphics object Add a PrintDocument control to the component tray Write all printing logic in the control’s PrintPage event procedure The control fires the event once for each page to print The program responds in the PrintPage event procedure Spring 2002

61 Chapter 7 (continued) Begin a printing operation:
Private Sub btnPrint_Click(ByVal _ sender As System.Object, ByVal _ e As System.EventArgs) _ Handles btnPrint.Click 'Print output on the printer 'Start the print process prtDocument.Print() End Sub Spring 2002

62 Chapter 7 (continued) Set up print page in the control’s PrintPage event: Private Sub prtDocument_PrintPage( _ ByVal sender As Object, ByVal e As _ System.Drawing.Printing.PrintPageEventArgs)_ Handles prtDocument.PrintPage 'Set up actual output to print End Sub Spring 2002

63 Chapter 7 (continued) Use the DrawString method in the control’s PrintPage event: 'Declarations at the top of the procedure Dim fntPrintFont As New Font("Arial", 12) 'More declarations here 'Print a line e.Graphics.DrawString(strPrintLine, _ fntPrintFont, Brushes.Black, _ sngPrintX, sngPrintY) Spring 2002

64 Chapter 7 (continued) Graphics objects
Must define fonts and brushes to create text Set up print lines with the DrawString method Print Preview Add a PrintPreviewDialog control to the form Assign the PrintDocument control to the PrintPreviewDialog’s Document property The same PrintPage event procedure is used to set up the print output ppdPrintPreview.Document = prtDocument ppdPrintPreview.ShowDialog() Spring 2002

65 Chapter 7 (continued) The Good News:
Do Loops and For / Next Loops are unchanged Spring 2002

66 Chapter 8 — Arrays Topics Covered
Select Case structure Shared events Arrays Structures Table lookup Combining list controls and arrays Multi-dimensional arrays Spring 2002

67 Chapter 8 — Changes Shared events (no control arrays)
Private Sub radBlue_CheckedChanged( _ ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles radBlue.CheckedChanged, radBlack.CheckedChanged, _ radRed.CheckedChanged, _ radWhite.CheckedChanged, _ radYellow.CheckedChanged Spring 2002

68 Chapter 8 (continued) In shared event procedure:
'Save the name of the selected button Dim radSelected As RadioButton radSelected = CType(sender, RadioButton) Select Case radSelected.Name Case "radBlue" mcolorNew = Color.Blue Case "radBlack" mcolorNew = Color.Black Case "radRed" '… rest of code End Select Spring 2002

69 Chapter 8 (continued) All arrays are zero based
No Dim Array(LowerBound To UpperBound) Declare upper subscript unless initializing values at declaration Dim mstrProduct(99) As String Dim mintValue() As Integer _ = {1, 5, 12, 18, 20} Spring 2002

70 Chapter 8 (continued) Structures replace User-defined Types
Public Structure Product Dim strDescription As String Dim strID As String Dim intQuantity As Integer Dim decPrice As Decimal End Structure Spring 2002

71 Chapter 9 — Web Forms Topics Covered
Client vs. Server Running Web Forms in a browser Web controls Event structure of Web programs Layouts Validator Controls Spring 2002

72 Chapter 9 — All New Must install IIS before installing VS .NET
Properties, methods, and events are different from Windows Forms Examples: Name property is ID Form_Load is Page_Load Web Controls differ from Windows controls even when they have the same name Spring 2002

73 Chapter 9 (continued) A Web project is created in Inetpub\wwwroot
Spring 2002

74 Chapter 9 (continued) Validator Controls run on the client side, eliminating traffic to the server Spring 2002

75 Chapter 9 (continued) Web projects are not easy to transfer from one computer or folder to another location Spring 2002

76 Chapter 10 — Database Topics Covered
ADO.NET XML Datasets in Windows and Web projects Record navigation Parameterized queries Updating a dataset Spring 2002

77 Chapter 10 — Changes No Data control
Disconnected datasets with an adapter Two adapters available SQL Server OleDb (Works well with Access files) Must write navigation code Data is transferred in XML code Generated automatically Spring 2002

78 Chapter 10 (continued) Specific file OleDbConnection object
Actual data. Can contain multiple tables and relationships. Data displays on the form in bound controls Handles data transfer and provides data for dataset. Uses SQL to specify data to retrieve or update. Spring 2002

79 Chapter 10 (continued) Use the Server Explorer Manage connections
View table structure Drag tables and/or fields to the form to set up connection and data adapter Spring 2002

80 Chapter 10 (continued) A Configure Data Adapter wizard steps through creating the dataset The dataset can be based on an SQL Select statement or a stored procedure The wizard presents a Query Builder for building SQL Select statements Similar to the Query Designer in Access Creates the Select statement Can also generate the Insert, Delete, and Update SQL statements for updating the dataset You can preview the data from the file Spring 2002

81 Chapter 10 (continued) Bind the data to individual controls with the DataBindings properties At Form_Load or Page_Load call the Fill method to generate the dataset DataAdapterName.Fill(DataSetName) Dataset is disconnected Windows Forms — Bound controls are filled automatically Web Forms — Must execute the BindData method Bound controls are filled when BindData executes Web Forms are static — Only current record is transferred Spring 2002

82 Chapter 10 (continued) All new Datagrid controls
One for Windows forms; another for Web forms Navigation requires code No MoveNext, MovePrevious methods Me.BindingContext(DsBooks1, “Books”).Position += 1 Microsoft recommends one dataset per table Save changes back to the original data source by executing the dataset’s Update method The automatically-generated SQL statements execute for any changed rows Insert, Delete, Update Spring 2002

83 Chapter 11 — Data Files Topics Covered
Use streams to store and retrieve data Save and restore values in a list Use serialization to save the values of an object Spring 2002

84 Chapter 11 — Changes Data file handling is completely new
Streams transfer data StreamReader StreamWriter Imports System.IO Dim datPhone As StreamWriter datPhone = New StreamWriter(strFilePath) datPhone.WriteLine(txtName.Text) datPhone.WriteLine(txtPhone.Text) datPhone.Close() Spring 2002

85 Chapter 11 (continued) StreamReader Imports System.IO
Dim datPhone As StreamReader datPhone = New StreamReader(strFilePath) If datPhone.Peek <> -1 Then lblName.Text = datPhone.ReadLine() lblPhone.Text = datPhone.ReadLine() End If datPhone.Close() Spring 2002

86 Chapter 11 (continued) OpenFileDialog Display common dialog
Allow user to browse for file Dim dgrResult As DialogResult dlgOpen.InitialDirectory = Application.StartupPath dgrResult = dlgOpen.ShowDialog() If dgrResult <> DialogResult.Cancel Then 'User didn't click the Cancel button datPhone = New StreamReader(dlgOpen.FileName) btnNext.Enabled = True btnNext_Click(sender, e) End If Spring 2002

87 Chapter 11 (continued) Serialization Save an object to a file
The object’s class must be declared as serializable In the program that creates the object: Dim datBooks As FileStream _ = New FileStream("Books", FileMode.Create) Dim BookFormatter As BinaryFormatter _ = New BinaryFormatter() BookFormatter.Serialize(datBooks, mBookSale) datBooks.Close() Spring 2002

88 Chapter 11 (continued) Deserialization — Restore an object from a file
Create a FileStream object in the Open mode Declare a Formatter object Use the Formatter's Deserialize method, converting the input to the desired object type Transfer the fields from the object to the screen Close the stream FileStream object has Create and Open modes Spring 2002

89 Chapter 12 — Graphics Topics Covered
Draw shapes, lines, and filled shapes Instantiate Brush and Pen objects Simple animation Timer component Scroll bars Creating pie charts Spring 2002

90 Chapter 12 — All New Graphics use GDI+ for greater device independence
Based on System.Drawing namespace Graphics object may be on a form or a control Pens draw lines; Brushes draw filled shapes Measurement for graphics is pixels The Scale function is gone Spring 2002

91 Chapter 12 (continued) Create graphics in the form’s Paint event procedure Declare a Graphics object using the PaintEventArgs Private Sub frmDraw_Paint(ByVal sender As Object, _ ByVal e As System.Windows.Forms.PaintEventArgs) _ Handles MyBase.Paint 'Create a graphics object Dim gr As Graphics = e.Graphics Spring 2002

92 Chapter 12 (continued) Use a Pen to draw a line or outlined shape
Use a Brush for a filled shape Dim gr As Graphics = e.Graphics Dim penRed As New Pen(Color.Red) Dim brushBlue As New SolidBrush(Color.Blue) 'Draw a red rectangle gr.DrawRectangle(penRed, 10, 10, 30, 30) 'Draw a blue filled circle gr.FillEllipse(brushBlue, 100, 100, 50, 50) Spring 2002

93 Chapter 12 (continued) The SetBounds method replaces Move
SetBounds(intX, intY, intWidth, intHeight) picPlane.SetBounds(intX, intY, _ planeWidth, planeHeight) Spring 2002

94 Chapter 12 (continued) PictureBox controls hold many more graphic formats Can display an animated GIF file Timer component appears in the component tray Enabled = False by default — must set to True The Tick event fires when the Interval occurs Scroll bar changes ValueChanged replaces Change event Minimum property replaces Min Maximum property replaces Max Spring 2002

95 Chapter 13 — Additional Topics Topics Covered
Multiple Document Interfaces (MDI) Windows Common Controls Image Lists Toolbars Status bars Calendar Crystal Reports Spring 2002

96 Chapter 13 — Changes An MDI program can have Multiple parent forms
Multiple child forms Forms that operate independently You no longer have to use a different form type as a parent Set parent’s IsMdiContainer property to True For child form, set MdiParent property in code Dim frmChildOne As New frmChild() frmChildOne.MdiParent = Me Spring 2002

97 Chapter 13 (continued) To create a Window menu, set a menu’s MdiList property to True The Arrange methods are replaced with Layout methods Me.LayoutMdi(MdiLayout.TileHorizontal) Me.LayoutMdi(MdiLayout.TileVertical) Me.LayoutMdi(MdiLayout.Cascade) Spring 2002

98 Chapter 13 (continued) New controls added to the chapter Image list
status bar toolbar Image List You can add and remove images after attaching the list to a toolbar New collection editor makes adding and removing images easier Spring 2002

99 Chapter 13 (continued) Toolbar
Single ButtonClick event for all buttons on toolbar EventArgs argument holds index of clicked button Select Case tlbParent.Buttons.IndexOf(e.Button) Case 0 mnuDisplayChildOne_Click(sender, e) Case 1 mnuDisplayChildTwo_Click(sender, e) End Select Spring 2002

100 Chapter 13 (continued) Crystal Reports are back and are more powerful
No code is required to write a report You design a template and add a CrystalReportViewer object to the form Spring 2002

101 Questions ??? Spring 2002

102 Thank You We appreciate your being here with us.
Have fun. It’s a great product and should be fun to teach!!! Spring 2002

Download ppt "Teaching an Introductory Programming Class"

Similar presentations

Ads by Google