De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Zelf objecten maken in VBA Ynte Jan Kuindersma, BIRD Automation Nationale Officedag 2009 EDE, 14 Oktober 2009.

Verwante presentaties


Presentatie over: "Zelf objecten maken in VBA Ynte Jan Kuindersma, BIRD Automation Nationale Officedag 2009 EDE, 14 Oktober 2009."— Transcript van de presentatie:

1 Zelf objecten maken in VBA Ynte Jan Kuindersma, BIRD Automation Nationale Officedag 2009 EDE, 14 Oktober 2009

2 Wat is een Objectgeoriënteerd programmeren?  Objectgeoriënteerd, vaak afgekort tot OO, is een paradigma dat gebruikt wordt bij het objectgeoriënteerd programmeren en objectgeoriënteerde opslag van data. Bij deze benadering wordt een systeem opgebouwd uit objecten, waarbij ieder object gemaakt is vanuit de definitie van een klasse.paradigmasysteemklasse  Belangrijke eigenschappen van objectgeoriënteerd programmeren zijn:  Encapsulation (Informatie verbergen): het kunnen verbergen van de interne werking van objecten, waardoor op een hoger niveau geprogrammeerd kan worden.  Modulariteit: programma's zijn eenvoudig uit te breiden en klasses zijn makkelijk te hergebruiken  (Overerving: het specifieker kunnen maken van een klasse, waarbij (een deel van) een generieke klasse kan worden overgeërfd.)  (Polymorfisme: een functie kan geschreven worden voor generieke objecten, en uitgevoerd worden op specifiekere objecten, zonder dat de functie van het bestaan van de specifiekere objecten hoeft af te weten.)Polymorfisme

3 Objecten  Eigenschappen  (Word: activedocument.name)  Methoden  (Word: activedocument.save)  Gebeurtenissen  (Word: Document_Close())

4 Begin van OO Type Employee Name As String Address As String Salary As Double End Type

5 Eigenschappen - I P ublic strNaam As String  In klassemodule (bijv. clsUser)  Publieke eigenschap  Geen code mogelijk

6 Gebruik van object  Declareren Dim x As New clsUser  Vullen x.strNaam = "Jan“  Lezen Msgbox x.strNaam

7 Eigenschappen = II  Nu wel code mogelijk  Members / Property Get / Property Let Private mAdres As String Property Get strAdres() As String strAdres = mAdres End Property Property Let strAdres(strAdres As String) mAdres = strAdres End Property

8 Methode (als Sub) Private mBericht As String Private mMailAdres As String Property Let strMailAdres(strAdres As String) mMailAdres = strAdres End Property Property Let strBericht(strBericht As String) mBericht = strBericht End Property Public Sub mailenmaar() Rem code voor mail Rem mail.to = mMailAdres Rem mail.body = strBericht Rem mail.send MsgBox "Bericht voor " & mAdres & vbCr & mBericht End Sub

9 Methode (als Function) Public Function mailenmaar2() As Boolean Rem code voor mail Rem mail.to = mMailAdres Rem mail.body = strBericht Rem mail.send On Error GoTo foutje: MsgBox "Bericht voor " & mAdres & vbCr & mBericht mailenmaar2 = True Exit Function foutje: mailenmaar2 = False End Function

10 Gebruik van methoden Dim x As New clsUser x.strNaam = "Jan" x.strAdres = “Gracht 13" x.strMailAdres = "a@b.nl" x.strBericht = "Groeten " & Time x.Mailenmaar If x.mailenmaar2 = True Then MsgBox "Mail is verzonden" End If

11 Collections.. Dim objlistNamen As New Collection objlistNamen.Add x Dim intAantal As integer intAantal = objlistNamen.Count For i = 1 To intAantal MsgBox objlistNamen.Item(i).strNaam Next Dim objTest As New clsUser For Each objTest In objlistNamen MsgBox objTest.strNaam Next

12 Demo – Formulier en Klasse  Klasse met gebeurtenissen  Updatemax  updatetext  Formulier dat regeert op gebeurtenissen in Klasse  objTikker_UpdateMax  objTikker_UpdateText

13 Events in de Klasse Public Event Updatetext(ByVal dblJump As Double) Public Event UpdateMax(ByVal intqwerty As Integer) Public Sub tikkenmaar() RaiseEvent UpdateMax(mintMax) For j = 1 To 15 For i = 1 To 100000000 Next RaiseEvent Updatetext(j) Next End Sub

14 Reageren in het formulier op Klasse-events Private WithEvents objTikker As clstimer Private Sub objTikker_UpdateMax(ByVal intqwerty As Integer) Me.Label3.Caption = intqwerty End Sub Private Sub objTikker_Updatetext(ByVal dblJump As Double) Me.Label1.Caption = dblJump Me.Label2.Width = dblJump * 15 DoEvents End Sub

15 Start en einde Klasse Private Sub Class_Initialize() Rem code bij initialiseren van de klasse MsgBox "Welkom" mintMax = 200 mintMin = 0 End Sub Private Sub Class_Terminate() Rem code bij afsluiten van de klasse MsgBox "Tot ziens" End Sub

16 Complete code op formulier Private WithEvents objTikker As clstimer Private Sub CommandButton1_Click() Set objTikker = New clstimer Call objTikker.tikkenmaar End Sub Private Sub objTikker_UpdateMax(ByVal intqwerty As Integer) Me.Label3.Caption = intqwerty End Sub Private Sub objTikker_Updatetext(ByVal dblJump As Double) Me.Label1.Caption = dblJump Me.Label2.Width = dblJump * 15 DoEvents End Sub

17 Formulier met progressbar

18 Public Event Updatetext(ByVal dblJump As Double) Public Event UpdateMax(ByVal intqwerty As Integer) Private mintMax As Integer Private mintMin As Integer Property Get intMax() As Integer intMax = mintMax End Property Property Let intMax(intinvoer As Integer) If intinvoer > 200 Then intinvoer = 200 If intinvoer < 0 Then intinvoer = 100 mintMax = intinvoer End Property Public Sub tikkenmaar() RaiseEvent UpdateMax(mintMax) For j = 1 To 15 For i = 1 To 100000000 Next RaiseEvent Updatetext(j) Next End Sub Private Sub Class_Initialize() Rem code die wordt doorlopen bij initialiseren van de klasse MsgBox "Welkom" mintMax = 200 mintMin = 0 End Sub Private Sub Class_Terminate() Rem code die wordt doorlopen bij afsluiten van de klasse MsgBox "Tot ziens" End Sub

19 Hyperlinks  nl.wikipedia.org/wiki/Objectgeori%C3%AB nteerd nl.wikipedia.org/wiki/Objectgeori%C3%AB nteerd  www.startvbdotnet.com/oop/default.aspx www.startvbdotnet.com/oop/default.aspx  www.cpearson.com/excel/Classes.aspx www.cpearson.com/excel/Classes.aspx  http://www.garyradley.com/vbatutor/ http://www.garyradley.com/vbatutor/


Download ppt "Zelf objecten maken in VBA Ynte Jan Kuindersma, BIRD Automation Nationale Officedag 2009 EDE, 14 Oktober 2009."

Verwante presentaties


Ads door Google