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