Info-books

advertisement
Info-books
AL13
Toegepaste Informatica
Deel 13: VBScript
Jos Gils – Erik Goossens
Hoofdstuk 1
1.1
Terreinverkenning
Probleemstelling
Met HTML-code heb je heel wat mogelijkheden om webpagina's te maken, maar er blijven
een hele reeks beperkingen. Het is bijvoorbeeld niet mogelijk om bij het invullen van formulieren alle ongewenste invoer uit te sluiten.
HTML-code kan in combinatie met computerprogramma's gebruikt worden. Op die manier
kun je webpagina's actiever en dynamischer maken.
De beperkingen van HTML kunnen in vele gevallen maar opgelost worden als de ontwikkelaar van een web over instrumenten beschikt om effectief te programmeren.
In HTML kun je vooraf geschreven programma's doen uitvoeren binnen een bepaald gebied van de HTML-pagina. Bovendien kun je programmacode invoegen tussen bepaalde
tags.
1.2
Begrippen in verband met scripts
1.2.1 Scripts en applets
Je kunt formulierinvoer controleren en het uitzicht van webpagina's wijzigen door applets
of scripts in HTML-code in te voegen.
Talen die in dat verband gebruikt worden zijn onder andere JavaScript, Java (voor het maken van Java-applets) en VBScript (Visual Basic Script).
Applets en actieve scripts worden net als CGI-scripts (Common Gateway Interface) in een
bepaalde programmeertaal geschreven. Die talen verschillen grondig van HTML. Ze maken gebruik van de normale bouwstenen van programmeertalen zoals constanten, variabelen, lusstructuren en functies.
Wanneer je een actief script maakt in een scripttaal, dan wordt dit rechtstreeks aan de
HTML-pagina toegevoegd en door de browser uitgevoerd.
CGI-programma's worden daarentegen in een apart bestand opgeslagen en door de webserver uitgevoerd. Om onderscheid te maken tussen beide worden scripts van VBScript en
JavaScript actieve scripts genoemd, terwijl CGI-programma's de naam CGI-scripts krijgen.
Applets zijn kleine toepassingen die binnen een rechthoekig gebied op een webpagina uitgevoerd worden. Je kunt er bijvoorbeeld animatie en geluid mee opnemen in een pagina.
Meestal worden applets in Java geschreven, soms in andere talen zoals ActiveX of C.
JavaScript is de naam van een scripttaal die Netscape mag gebruiken omdat het van Sun,
het bedrijf dat Java ontwierp, een licentie kocht voor het gebruik van de naam Java, terwijl
J. Gils – E. Goossens
VBScript
5
de Microsoft-versie van JavaScript Jscript heet. JavaScript en Jscript verschillen wel sterk
van Java.
In tegenstelling tot wat je met een applet maar kunt doen, kun je met een programma in een
scripttaal het uitzicht van een webpagina veel grondiger bepalen. De populairste scripttaal
is JavaScript omdat de twee meest gebruikte browsers, Netscape en Internet Explorer, die
taal begrijpen.
1.2.2 Visual Basic en VBScript
Programma's die in VB (Visual Basic) geschreven worden moeten gecompileerd worden
om uitvoerbaar te zijn. Zij kunnen ook los van webpagina's uitgevoerd worden.
Programma's in VBScript zijn gebonden aan een webpagina. Voor de uitvoering zijn ze afhankelijk van HTML. Het vertaalprogramma is een interpreter.
Om redenen van beveiliging staan zowel actieve scripts in VBScript als Java-applets
meestal niet toe dat bestanden gelezen of geschreven worden.
De nuttigste mogelijkheid van VBScript is het feit dat je er kunt voor zorgen dat bezoekers
van een site formulieren correct invoeren.
Zowel Visual Basic als VBScript zijn geen louter 'functionele programmeertalen' zoals
Pascal, C of Cobol. Ze werken met objecten. Vandaar dat de terminologie in verband met
objecten kort uitgelegd wordt.
1.3
Objecten en objectoriëntatie
De klassieke zienswijze bij het programmeren bestond er in dat een programma bepaalde
functies moest vervullen, bijvoorbeeld het afdrukken van een klantenlijst, het actualiseren
van de personeelslijst van een school.
Het programma werd dan zo gemaakt dat alle nodige gegevens in functie van die toepassing werden opgeslagen. Dit leidde tot heel wat redundantie (= overtolligheid) want verschillende lijsten bevatten gedeeltelijk dezelfde gegevens.
Als reactie hiertegen ging men de klemtoon leggen op de gegevens zelf. Men ging ze als
het ware afzonderen van de programma's die er eventueel beroep gingen op doen. Het concept database was geboren. Zowel de gegevens als de betekenis, de structuur ervan werden
in tabellen die met mekaar verbonden werden opgeslagen.
Momenteel wordt er meer en meer een soort van combinatie van beide benaderingen nagestreefd: objectoriëntatie.
Zo is een klant een object hetgeen impliceert:
 Er horen gegevens bij die klant: naam, adres, uitstaand saldo, ...
Opslag daarvan in een database is noodzakelijk.
 Bepaalde bewerkingen moeten op klanten kunnen toegepast worden: wijzigen,
verwijderen, toevoegen, ....
Hier treedt het functionele aspect van de programma's die met deze gegevens werken op de
voorgrond.
6
VBScript
J. Gils – E. Goossens
Alle klanten samen vormen een abstracte klasse. Een klasse wordt reëel door het in leven
roepen van concrete objecten, in dit geval de klanten.
Het voorbeeld ‘klant’ is nog wat klassiek, want zowat alles wat op een computerscherm
verschijnt is een object: een alinea, een knop, een venster, ...
WINDOWS werkt met objecten evenals de toepassingen die onder Windows draaien.
In die context zijn bijvoorbeeld alle vormen binnen een Excel venster objecten.
Knoppen, werkbladen, een geselecteerd stuk tekst, een grafiek, een geluidsfragment ... zijn
allemaal objecten.
Die nieuwe benadering heeft ook programmeertalen doen ontstaan die met objecten kunnen werken, bijv. C++ (lees C plus plus), Smalltalk, Java en Visual Basic.
Dit betekent helemaal niet dat de functionele benadering (top down) in die talen niet realiseerbaar is, integendeel!
Men heeft er wel het comfort om binnen de klassieke structuren ook met objecten in al hun
vormen te kunnen werken.
Een object bezit eigenschappen (Properties), methoden (Methods) en reageert op gebeurtenissen (Events). Vergelijk het met een auto, een auto heeft een kleur (eigenschap), kan
vooruit of achteruit rijden (methode) en reageert op gebeurtenissen (gas geven, aan stuur
draaien).
 eigenschappen beschrijven de kenmerken van het object, ze bepalen het uiterlijk en
soms het gedrag van een object. Ze worden ook toegepast om aan een object gegevens toe te kennen of om informatie uit een object op te halen.
- Elk geopend venster in bijv. Excel is een object dat de eigenschap 'zichtbaar'
heeft. Is die eigenschap onwaar, dan is het venster verborgen.
- Een grafiek heeft de eigenschap van een bepaald type te zijn (bijvoorbeeld een
lijngrafiek).
De naam is de belangrijkste eigenschap: via de naam kun je naar het object verwijzen om bijvoorbeeld andere eigenschappen te wijzigen.
Een object en een eigenschap worden in Visual Basic en in Java gescheiden door
een punt.
Cell
Value = 54
cmdAfdrukken
. Visible = True
Naam van het object
. Eigenschap
Cell is in dit voorbeeld een object, value is een eigenschap. Die eigenschap heeft de
waarde 54.
 methoden leggen de taken vast die het object kan uitvoeren, m.a.w. de bewerkingen
die op een object uitgevoerd kunnen worden, bijvoorbeeld selecteren, afdrukken,
…
Dit is programmacode die ingesloten is in de definitie van het object en die bepaalt
hoe het object informatie afhandelt en op bepaalde gebeurtenissen reageert. Deze
code wordt niet zelf geschreven maar wordt geleverd door de bibliotheek van de
J. Gils – E. Goossens
VBScript
7
programmeertaal.
-
-
Een eigenschap heeft een waarde die opgevraagd en ingesteld kan worden. Een
selectie van cellen (= een bereik) kan als object beschouwd worden. Het selecteren is een methode, het wissen van de inhoud van dat bereik is ook een methode.
Als in Excel een bepaalde werkmap geactiveerd moet worden doe je dat door er
met de muis in te klikken. De Visual Basic-code hiervoor is:
Range("B3:C8")
Selection
Workbooks ("Klanten.XLS")
Object
. Select
. ClearContents
. Activate
. Methode
 gebeurtenissen zorgen er voor dat het object op handelingen van de gebruiker of
van het besturingssysteem kan reageren. Het zijn handelingen zoals klikken, dubbelklikken, een object verlaten …
Een gebeurtenis roept een gebeurtenisprocedure op: dit is programmacode die een
bepaalde taak uitvoert. In tegenstelling tot de methode kan deze code wel door de
gebruiker geschreven en gewijzigd worden en het is mogelijk om binnen deze gebeurtenisprocedure methoden van het object op te roepen.
Bijvoorbeeld: bij klikken op de knop Afdrukken wordt via de eigenschap Bij klikken de gebeurtenis ONCLICK opgeroepen waarin de gewenste acties plaatsgrijpen:
hierin wordt bijv. het af te drukken gebied geselecteerd (methode), het papierformaat ingesteld (eigenschap) en uiteindelijk afgedrukt (methode).
De term ‘Event driven’ (gebeurtenisgestuurd) is de term die Microsoft gebruikt om aan te
duiden dat gebeurtenissen bepaalde acties oproepen.
Ten slotte geven we nog een voorbeeld van een grijze knop waarop de tekst ‘Start’ staat en
die bij klikken het programma ‘SUBHOOFDPR’ doet uitvoeren:
Een knop is een bijzonder object: men noemt het een besturingselement, net als een keuzerondje, een aankruisvakje, een keuzelijst...
‘Objectoriëntatie’ is een nog ruimer concept dan ‘Event driven’ dat (voorlopig) in een beperkt aantal talen (zoals Java, Smalltalk en C++) gerealiseerd wordt. Daar wordt er onder
meer gebruik gemaakt van klassen (abstracte objecten) waaruit meer concrete objecten afgeleid worden en waarop overerving (inheritance) en polymorfisme van toepassing zijn.
8
VBScript
J. Gils – E. Goossens
1.4
VBScript aan de HTML-code toevoegen
Binnen HTML-documenten kan programmacode in VBScript opgenomen worden. Die code wordt dan uitgevoerd door een vertaalprogramma (een 'interpreter') dat in de browser
ingebouwd is. In VBScript ben je niet meer beperkt tot 'coderen', maar kun je werkelijk
'programmeren'.
Wil je programmacode tussen de HTML-code insluiten, dan moet die tussen de tags
<SCRIPT> en <SCRIPT> staan, waarbij aan de eerste tag nog een taalargument toegevoegd
moet worden. Er bestaan immers meerdere scripttalen, bijv. JavaScript.
<SCRIPT LANGUAGE="VBScript">
...
</SCRIPT>
Om te vermijden dat browsers die geen VBScript-code kunnen interpreteren wartaal produceren of een foutmelding geven wordt de VBScript-code zelf best tussen de volgende
tags geplaatst:
<SCRIPT LANGUAGE="VBScript">
<!-- Begin script
...
' Einde script -->
</SCRIPT>
TIP
De tekst na een aanhalingsteken wordt door VBScript als commentaar beschouwd.
Een dubbele schuine streep (//), zoals in JavaScript, is ook toegelaten.
TIP
De woorden ‘Begin script’ en ‘Einde script’ mag je vrij kiezen, de andere tekens
‘<!--‘ en ‘-->’zijn verplichte code. De tekst die tussen deze tags staat wordt door
HTML als commentaar ervaren.
Opdracht
1. Je wenst met de procedure MsgBox een
boodschap te geven als de pagina geopend wordt.
a. Open het bestand VBS_BOODSCHAP.HTM
en bekijk het resultaat.
b. Verwijder uit de programmacode de regels <!-- en ' Einde script-->.
Bekijk het resultaat in de browser.
c. Verwijder de regel:
<SCRIPT LANGUAGE="VBScript">.
Wat is het resultaat?
J. Gils – E. Goossens
VBScript
9
<HTML>
<HEAD>
<TITLE>
Eerste voorbeeld van VBScript
</TITLE>
</HEAD>
<BODY>
<H3>VBScript: eenvoudig voorbeeld</H3><HR>
<SCRIPT LANGUAGE="VBScript">
<!--Begin script
MsgBox "Vind je VBScript gemakkelijk?",vbYesNo,"Eerste voorbeeld"
' Einde script-->
</SCRIPT>
</BODY>
</HTML>
TIP
De procedure MsgBox heeft verschillende argumenten. Je kunt de betekenis ervan
via de helpfunctie van Excel, Word of Access opvragen.
MsgBox(prompt[, buttons][, title][, helpfile, context])
1.5
Webpagina’s en objecten
Het World Wide Web is een omgeving met objecten. Wanneer je aan het surfen bent is het
hoogste niveau van de internetomgeving het venster ('window-object') waarin de browser
een pagina ('document-object') toont. Binnen een document kunnen verschillende formulieren ('form-object’) voorkomen. Die worden vanaf 0 genummerd. Op een formulier kunnen verschillende invoervelden (bijvoorbeeld: een adres) en knoppen voorkomen. Een dergelijk invoerveld heeft verschillende eigenschappen, bijvoorbeeld een kleur, een waarde.
De hiërarchische opbouw van de objecten in deze beschrijving is: window, document, formulier, veld.
Daarnaast bevat een HTML-pagina nog de objecten HISTORY (met de eigenschappen van
de vroeger bezochte URL's) en LOCATION (met de eigenschappen van de huidige URL).
Elk type object heeft een aantal vaste methoden.
 Zo kun je bijvoorbeeld de methode ALERT op een window-object toepassen. In dat geval verschijnt een waarschuwingstekst in een venstertje op het scherm.
Bijvoorbeeld: WINDOW.ALERT "Je gaf een negatieve waarde op!"
 Op het document-object kun je bijvoorbeeld de methode WRITE toepassen.
Bijvoorbeeld: WINDOW.DOCUMENT.WRITE "Deze tekst wordt afgedrukt".
TIP
10
Omdat WINDOW het toplevel van elk document is en als dusdanig altijd voorkomt
mag je het weglaten.
VBScript
J. Gils – E. Goossens
Een eigenschap van een object bereik je door op dat object de puntoperator, gevolgd door
de naam van de eigenschap toe te passen.
 Bijvoorbeeld: DOCUMENT.FORMS(2).TXTADRES.VALUE
In dit voorbeeld bereik je de waarde van het adres van het derde formulier van het actieve document. (Het derde formulier, want de nummering begint vanaf 0.)
Het resultaat is bijvoorbeeld "Avenue Prince Laurent 32, 1000 Bruxelles"
 Tweede voorbeeld: HISTORY.LENGTH = 10
Als dat commando uitgevoerd wordt zullen de laatste 10 URL's bewaard worden.
Een webpagina verschijnt in een venster. Het standaardobject DOCUMENT is een eigenschap
van het standaardobject WINDOW en verwijst naar de pagina die getoond wordt.
 Het object DOCUMENT heeft een aantal methoden, waaronder bijv.:
(tekst op de pagina afdrukken)
(tekst op de pagina afdrukken en naar de
volgende regel gaan)
Het object DOCUMENT heeft ook een groot aantal eigenschappen, waaronder bijv.:
DOCUMENT.WRITE “Tekst”
DOCUMENT.WRITELN “Tekst”

DOCUMENT.TITLE = “Mijn eerste
DOCUMENT.BGCOLOR = “Navy”
DOCUMENT.FGCOLOR = “Silver”
DOCUMENT.LASTMODIFIED
DOCUMENT.URL
programma”
(titel van de pagina)
(achtergrondkleur)
(kleur van de tekst)
(laatst gewijzigd)
(adres van de pagina)
De titel van het document druk je bijv. als volgt af:
DOCUMENT.WRITE “Titel: “, DOCUMENT.TITLE
TIP
De tekst die in de HTML-code tussen de tags <TITLE> en </TITLE> staat is ook de
titel van de pagina.
J. Gils – E. Goossens
VBScript
11
De volgende kleurnamen worden herkend:
Black
Maroon
Lime
Purple
Gray
Green
Navy
Fuchsia
Silver
Olive
Blue
Red
White
Teal
Aqua
Yellow
Ter illustratie volgt hier een voorbeeld (VBS_DOCUMENT_OBJ.HTM.HTM).
<HTML>
<HEAD>
<TITLE>
Voorbeeld van VBScript – DOCUMENT-object
</TITLE>
</HEAD>
<BODY>
<H3>VBScript: eenvoudig voorbeeld van het DOCUMENT-object</H3><HR>
<SCRIPT LANGUAGE="VBScript">
<!-- Begin script
DOCUMENT.FGCOLOR = "Red"
DOCUMENT.BGCOLOR = "White"
DOCUMENT.WRITE "Titel: ", DOCUMENT.TITLE, "<BR>"
DOCUMENT.WRITE "Achtergrondkleur:", DOCUMENT.BGCOLOR, "<BR>"
DOCUMENT.WRITE "Voorgrondkleur:", DOCUMENT.FGCOLOR, "<BR>"
DOCUMENT.WRITE "Laatste wijziging:", DOCUMENT.LASTMODIFIED, "<BR>"
DOCUMENT.WRITE "URL:", DOCUMENT.URL, "<BR>"
' Einde script-->
</SCRIPT>
</BODY>
</HTML>
Het resultaat (rode letters op een witte achtergrond):
Opdracht
2. Open het bestand VBS_DOC_EIGENSCHAPPEN.HTM, ga naar de code en noteer de nieuwe eigenschappen.
TIP
12
VBScript is niet hoofdlettergevoelig: je mag zowel hoofdletters als kleine letters
gebruiken.
VBScript
J. Gils – E. Goossens
Besluit
In HTML-documenten kan programmacode ingelast worden onder vorm van scripts of onder vorm van applets. Applets zijn vooraf gecompileerde programma's die in een rechthoekig gebied van een webpagina draaien. Ze worden vaak in de programmeertaal Java geschreven.
Met scripts heb je meer impact op het effectief werken in een pagina. Actieve scripts worden vooral in JavaScript en in VBScript geschreven. Ze worden door de browser uitgevoerd. CGI-programma's worden in aparte bestanden opgeslagen en door een webserver
uitgevoerd.
VBScript is een belangrijke computertaal in een internetomgeving. Naast de gewone instrumenten van klassieke programmeertalen – constanten, variabelen, bewerkingstekens,
allerlei operatoren – werkt ze met objecten die eigenschappen hebben en waarop methoden
toegepast kunnen worden. De methoden worden meestal geactiveerd wanneer bepaalde
gebeurtenissen zoals het klikken met de muis zich voordoen.
In HTML-documenten kun je VBScript-code inlassen. Op die manier ben je niet meer beperkt tot louter ‘coderen’ maar stap je over naar ‘programmeren’.
Een webpagina is een object waarvan de eigenschappen gewijzigd kunnen worden en dat
methoden heeft. De pagina verschijnt in een venster, het standaardobject WINDOW, dat als
belangrijke eigenschap het standaardobject DOCUMENT heeft.
Wat je moet kennen en kunnen:





de begrippen script, applet, actieve scripttaal uitleggen;
het verschil tussen Visual Basic en VBScript uitleggen;
het verschil tussen een CGI-script en een script in JavaScript of VBScript uitleggen;
eenvoudige VBScript-code in HTML-documenten inlassen en door een browser laten
uitvoeren;
de begrippen klasse, object, eigenschap, methode en gebeurtenis uitleggen aan de hand
van voorbeelden.
Opdrachten
3. Beantwoord de volgende vragen:
a. Wat zijn applets en welke taal wordt vooral gebruikt om applets te maken?
b. Wat zijn scripts?
Welke talen worden vooral gebruikt om scripts op te stellen?
c. Op welke computer staat het programma dat een CGI-script verwerkt?
Welk programma verwerkt een script in VBScript en op welke computer staat het?
d. Waarom wordt in scriptalen vermeden dat bestanden kunnen gelezen en weggeschreven worden?
e. Tussen welke twee benaderingswijzen is het programmeren met objecten een compromis? Leg uit.
f. Leg de volgende begrippen aan de hand van een voorbeeld uit:
- object;
- eigenschap;
J. Gils – E. Goossens
VBScript
13
- methode;
- gebeurtenis.
g. Tussen welk tags plaats je VBScript-code?
4. Schrijf een eenvoudig script waardoor de browser bij het laden van VBS_ALERT1.HTM
de volgende boodschap toont:
14
VBScript
J. Gils – E. Goossens
Download