My Application Computer User Resources Settings

advertisement
Visual Basic 2005
nieuwe taalelementen
André Obelink, MCSD, MVP
Auteur, VBcentral.nl
 Microsoft MVP Visual Basic
 VP Speakers Bureau INETA Europe - www.europe.ineta.org
 www.vbcentral.nl - www.obelink.com - [email protected]

My namespace
‘speed dial’ en dynamic types
My
Application — Productnaam, versie, omschrijving …
Computer
— Registry, audio, bestandssysteem, …
User
— Gebruikersnaam, groepen, rollen, …
Resources — Benader resources: afbeeldingen, teksten…
Settings
— Gebruikers- en applicatie-instellingen (.config)
Forms
— Collectie van de formulieren binnen het project
WebServices — Collectie van de gerefereerde webservice(s)
My.Application
My.Application
Eigenschappen van de
applicatie binnen handbereik
 Aantal methoden beschikbaar, zoals:



ChangeCulture, Run etc.
Meer invloed op het ‘application
framework’.
Info.Title
Info.Version
CommandLineArgs
Log
Dim strBedrijfsnaam As String
Dim blnClickOnce As Boolean
With My.Application
strBedrijfsnaam =.Info.CompanyName
blnClickOnce = .IsNetworkDeployed
End With
WorkingDirectory
(UI) Culture
…
My.Computer

Geeft toegang tot
eigenschappen van de computer,
de hardware en eventueel
aangesloten randapparatuur
My.Computer
Mouse
Audio
Network
Dim intVrijGeheugen As Integer
Dim strComputerNaam As String
With My.Computer
' Zet tekst op het klembord
.Clipboard.SetText(“www.VBcentral.nl")
intVrijGeheugen = .Info.AvailablePhysicalMemory
strComputerNaam = .Name
End With
Registry
Clipboard
FileSystem
…
My.User


Geeft toegang tot
eigenschappen van de huidig
ingelogde gebruiker
U kunt door IPrincipal en IIdentity
te implementeren uw eigen
authenticatiemethode maken
Dim blnIsBeheerder As Boolean
Dim strGebruikersNaam As String
With My.User
blnIsBeheerder = .IsInRole("Administrators")
strGebruikersNaam = .Name
End With
My.User
Login Name
Domain
Authentication
Roles
Custom Principal
…
My – Dynamic Types
de compiler aan het werk…

My.Resources


My.Settings


Me.Location = My.Settings.LocationFormMain
My.Forms


picLogo.Image = My.Resources.LogoVBcentral
My.Forms.FormMain.Show
My.WebServices

My.WebServices.VBcentral.Search(“Obelink”)
My.Resources



‘Strongly typed’ toegang tot resources
toegevoegd via de Resource Editor (IDE)
Via de IDE meeste bestanden ook te bewerken
Beheer teksten voor verschillende talen
' LogoVBcentral.png toegevoegd via Resource Editor
picLogo.Image = My.Resources.LogoVBcentral
' Lokaliseer teksten in UI automatisch
lblCopyright.Text = My.Resources.TextCopyright
My.Settings


Eenvoudig opslaan van configuratie instellingen
Bestand
Applicatienaam.exe.config

Application Scope Settings
instellingen voor alle gebruikers – alleen lezen
 bestand staat naast executable


User Scope Settings
instellingen per gebruiker – lezen en schrijven
 bestand staat onder Documents and Settings

My.Settings

Application Settings

User Settings
Willem.config
MijnProgramma.exe.config
Marieke.config
Andre.config
<ApplicationSettings>
…
</ApplicationSettings>
<UserSettings>
…
</UserSettings>
My.Settings

Laden – Application/User
strConnectionString = My.Settings.MijnConnectionstring

Opslaan - User
My.Settings.LastUserName = “obelink”
My.Settings.Save()

Event afhandelen – Settings.Designer.vb
Private Sub MySettings_SettingChanging(ByVal sender As Object, ByVal e As
System.Configuration.SettingChangingEventArgs) Handles Me.SettingChanging
If e.SettingName = "LastUserName" Then
If e.NewValue IsNot "obelink" Then e.Cancel = True
End If
End Sub
My.Forms en My.WebServices


Worden ook dynamisch gegenereerd door de
compiler van Visual Basic
De ‘default instance’ van een formulier is terug


My.Forms.Form1.Show of
Form1.Show
Veel ‘proxywerk’ wordt automatisch afgehandeld:

Dim objKlanten As Klanten
objKlanten = My.WebServices.KlantenBeheer.Load
Demo
My.Settings…
Generics
specificieer type tijdens coderen…

Nieuwe namespace


Maak een ‘strongly typed’ collectieklasse met
slechts één regel code


System.Collections.Generic
Inherits System.Collections.Generic.List(Of T)
Maak uw eigen generic types
Generics
voorbeeld zonder generics…
Public Class List
Private mobjElementen() As Object
Private mintCount As Integer
Dim Public
intListSub
As Add(objElement
New ArrayList()As Object)
‘Indien nodig maak array groter
mintCount += 1 ‘Argument wordt geboxed
intList.Add(1)
mobjElementen(mintCount-1)
= objElement
intList.Add(2)
‘Argument wordt
geboxed
End Sub
intList.Add(“Drie”)
‘Moet exception genereren
ReadOnly
Property
Count() As Integer
Dim Public
intGetal
As Integer
= CType(intList(0),
Integer)
Get
Return mintCount
End Get
End Property
End Class
‘Cast!
Generics
voorbeeld met generics…
Public Class List(Of ItemType)
Private mobjElementen() As ItemType
Private mintCount As Integer
AsInteger)
ItemType)
Dim Public
intListSub
As Add(objElement
New ArrayList(Of
‘Indien nodig maak array groter
mintCount += 1 ‘Geen boxing
intList.Add(1)
mobjElementen(mintCount-1)
intList.Add(2)
‘Geen boxing= objElement
End Sub
intList.Add(“Drie”)
‘Compile-time error
ReadOnly
Property
Count() As Integer
Dim Public
intGetal
As Integer
= intList(0)
‘Geen casting!
Get
Return mintCount
End Get
End Property
End Class
Generics

Controle tijdens het compileren


Betere performance


Geen overhead door boxing en casting
Code eenvoudiger te hergebruiken


Voorkom runtime errors
Erg handig voor ‘strongly typed’ collecties – Demo!
Voor een aantal structuren al voorhanden

Dictionary, HashTable, List, Stack etc.
Nieuwe statements in VB2005





IsNot – logische tegenhanger van Is statement
Using – declareer, instantieer, gebruik en ruim op
Continue – stap naar volgende iteratie in loop
TryCast – retourneert Nothing bij onmogelijk cast
Global – verwijs naar root namespace
IsNot

Duidelijker manier om te bepalen of een object
een waarde heeft of niet overeenkomt met een
ander object.
‘Voor VB2005
If Not objMijnObject Is Nothing Then
….
End If
‘Met VB2005
If objMijnObject IsNot Nothing Then
…
End If
Using

Fraaie manier om alle resources te sluiten en op
te ruimen.
‘Dimensioneer en instantieer een object
Using objFileStream As New FileStream(strPath, FileMode.Append)
For intTeller As Integer = 0 To objFileStream.Length
‘Doe iets… lees byte in
objFileStream.ReadByte()
Next
End Using ‘Sluit stream en ruim object op
Continue

Werkt met For… Next, Do en While lussen

Lus is logischer en beter leesbaar
For intA as Integer = 0 To 100
While strArray(intA) IsNot “André”
If strArray(intA) Is “Obelink”
‘Ga verder met volgende intA
Continue For
End If
‘Doe iets…
End While
Next intA
TryCast

Geen Try.. Catch logica bij CType of DirectCast
wanneer conversie mislukt.

TryCast duidelijker leesbaar
‘Runtime error wanneer objBoek <> Product
objProduct = CType(objBoek, Product)
objProduct = DirectCast(objBoek, Product)
‘TryCast retourneert Nothing wanneer objBoek <> Product
objProduct = TryCast(objBoek, Product)
If objProduct IsNot Nothing Then
‘ Doe iets
End If
Global

Mogelijk om elke namespace naamconflict te
voorkomen
‘Fout indien andere namespace ook een System bevat
Dim objStringBuilder1 As New System.Text.StringBuiler
‘Maak onderscheid!  Nu wel goed…
Dim objStringBuilder2 As New Global.System.Text.StringBuiler
Wat we niet besproken is…

Operator Overloading


Conversie operatoren





+, - etc. eigen klassen
Eigen CType()
Unsigned Types
Property Accessor
Partial Types
Events op applicatieniveau
Samenvatting





De beste Visual Basic ooit!
Taal is compleet, volledige OO ondersteuning
Datatypen komen nu overeen met andere .NET
talen
IDE helpt mee met waarschuwingen van de
compiler
….
Verantwoording

Een groot aantal dia’s zijn gebaseerd op
presentaties van Stan Schultes (MVP VB) en
Amanda Silver en Steven Lees van het Microsoft
Visual Basic Team
Visual Basic 2005 – de basis




ISBN: 9043012890
Pearson Education Benelux
september 2006 in de winkel
272 pagina’s / € 19,95
Download