Inhoudsopgave Inhoudsopgave..................................................................................................................2 Inleiding.............................................................................................................................4 Project 1: Begroeting.........................................................................................................4 Starten van Visual Basic................................................................................................4 Programmeeromgeving.................................................................................................4 De werkbalk............................................................................................................4 Het formuliervenster................................................................................................4 Het projectvenster...................................................................................................5 Het eigenschappenvenster.....................................................................................5 Het formulierpositievenster.....................................................................................6 De werkset..............................................................................................................6 Het codevenster......................................................................................................7 Ontwikkelingsfases........................................................................................................8 Ontwikkelsfase........................................................................................................8 Uitvoeringsfase.......................................................................................................8 Compilatie...............................................................................................................8 Toepassing: begroeting.................................................................................................8 Doel.........................................................................................................................8 De lay-out................................................................................................................9 Werkwijze................................................................................................................9 Project 2: Conversie van inch naar cm...........................................................................11 Doel..............................................................................................................................11 De lay-out.....................................................................................................................12 Werkwijze.....................................................................................................................12 Keypress......................................................................................................................14 Project 3: Oscilloscoop....................................................................................................14 Doel..............................................................................................................................14 De lay-out.....................................................................................................................15 Werkwijze.....................................................................................................................15 Project 4: Transistor........................................................................................................18 Doel..............................................................................................................................18 De lay-out.....................................................................................................................18 Opgave........................................................................................................................18 Programmacode..........................................................................................................19 Project 5: Transistor 2.....................................................................................................19 Doel..............................................................................................................................19 De lay-out.....................................................................................................................20 Programmacode..........................................................................................................20 Project 6: Splash screen & Verkleuren van een vak.......................................................22 Doel..............................................................................................................................22 De lay-out.....................................................................................................................23 Programmacode..........................................................................................................23 Splashscreen........................................................................................................23 Kleurknoppen........................................................................................................24 Project 7: Chronometer...................................................................................................24 Doel..............................................................................................................................24 De lay-out.....................................................................................................................24 www.ffxs.nl/DIY-elektro
-2-
Visual Basic 6.0
Opgave........................................................................................................................24 Programmacode..........................................................................................................25 Bijlagen............................................................................................................................26 Options Explicit............................................................................................................26 ASCII-code tabel..........................................................................................................27
www.ffxs.nl/DIY-elektro
-3-
Visual Basic 6.0
Inleiding Met behulp van Visual Basic 6.0 kan men gemakkelijk Windows-toepassingen voor de PC aanmaken. Visual Basic biedt een grafische omgeving waarin formulieren en besturingselementen voor toepassingen worden ontworpen. Deze cursus werd oorspronkelijk samen gesteld door ing. Van de Linden V. en later herwerkt door Nick Electronics.
Project 1: Begroeting Starten van Visual Basic Via de knop ‘Start’, ‘Programma’s’, ‘Microsoft Visual Basic 6.0’, ‘Visual Basic 6.0’, dubbelklik op ‘StandardEXE’ komen we in de programmeeromgeving van Visual Basic.
Programmeeromgeving De programmeeromgeving bestaat uit 7 verschillende componenten: • De werkbalk; • Het formuliervenster; • Het projectvenster; • Het eigenschappenvenster; • Het formulierpositievenster; • De werkset; • Het codevenster.
De werkbalk
Is de knoppenbalk niet zichtbaar: View => Toolbars => Standard
Het formuliervenster
www.ffxs.nl/DIY-elektro
-4-
Visual Basic 6.0
Dit is de werkruimte waar de opbouw van de gebruikersinterface wordt gemaakt. Er kan maar één formulier geopend zijn. Het formulier kan vergroot of verkleind worden door de gevulde blokjes (ankers) aan de randen te verslepen. Men kan het formulier minimaliseren en maximaliseren. De eigenschappen (properties) kunnen aangepast worden in het eigenschappenvenster.
Het projectvenster Dit geeft een overzicht van de structuur van het gehele project. Een project kan uit verschillende formulieren, klassen en modules bestaan. Je kan dit het best vergelijken met het venster van de Windows Verkenner. Met de knoppen kan je overschakelen van formulierontwerpvenster naar codevenster en omgekeerd.
Het eigenschappenvenster
Dit venster geeft de eigenschappen of properties van de geselecteerde objecten. In dit geval worden de eigenschappen van het formulier weergegeven. Via deze lijst kan je de grootte, kleur, zichtbaarheid enz. aanpassen. Onderaan dit venster wordt een beknopte verklaring van de geselecteerde eigenschap gegeven. Is de uitleg onvoldoende, klik dan op die eigenschap en druk op F1.
www.ffxs.nl/DIY-elektro
-5-
Visual Basic 6.0
Het formulierpositievenster
Hiermee bepaal je de positie van het formulier tijdens de run-fase.
De werkset
Hier zijn alle gereedschappen of controls te vinden om het formulier van objecten te voorzien.
www.ffxs.nl/DIY-elektro
-6-
Visual Basic 6.0
Het codevenster
In dit venster wordt de programmacode geschreven, deze code is gekoppeld aan de objecten en de gebeurtenissen van het formulier.
www.ffxs.nl/DIY-elektro
-7-
Visual Basic 6.0
Ontwikkelingsfases Ontwikkelsfase • • • • •
Stel de gebruikersinterface op met behulp van de werkset; Pas de eigenschappen aan met het eigenschappenvenster; Kies de juiste schermpositie voor de uitvoeringsfase; Schrijf de programmacode; Sla het project en de formulieren op.
Uitvoeringsfase • • • •
Start met de knop Start => Run; Test de goede werking; Beëindig met de knop Einde; Herstel de eventuele fouten.
Compilatie • •
Je kan het programma ook laten uitvoeren vanuit Windows door er een uitvoerbaar bestand van te maken; In File-menu vind je de optie Make Project1.exe. In het venster Make Project kun je de map en de naam van het exe-bestand invoeren.
Toepassing: begroeting Doel Het formulier heeft drie opdrachtknoppen (CommandButtons), twee labels en een figuur (Picturebox). De knoppen moeten ervoor zorgen dat: • De tekst verschijnt op de labels en het logo van Gitok wordt weergegeven; • De tekst en het logo verdwijnen; • Het programma wordt afgesloten.
www.ffxs.nl/DIY-elektro
-8-
Visual Basic 6.0
De lay-out
Werkwijze Kies File => New Project Selecteer StandardEXE en klik op OK Maak een interface zoals in de figuur Vergroot de afmetingen van het formulier tot 7900x4200. (Door de hoek te verslepen) 5. Plaats de drie opdrachtknoppen op het formulier. Selecteer de knop in de werkset en teken deze op het formulier. De twee andere kan met de Copy en Paste-functie, zo zijn de drie knoppen juist even groot. 6. Zet de knoppen op hun juiste positie: • Selecteer de drie knoppen; • Kies in het Format-menu de optie Horizontal Spacing en klik in het submenu Make Equal; • De middelste knop wordt nu gecentreerd tussen de uiterste knoppen. 7. Plaats de twee labels en de Picturebox op het formulier 8. Je kunt de positie en afmetingen van deze objecten vergrendelen door in het menu Format => Lock Controls te selecteren 9. Klik op de eerste knop en pas de eigenschappen aan in Properties Window • Dubbelklik op de eigenschap Name en typ: cmdHallo. De knop heet nu cmdHallo in het programma; • Dubbelklik op de eigenschap Caption en typ: &Hallo. Het &-teken zorgt ervoor dat het volgende teken onderstreept wordt, bijvoorbeeld Hallo. Door de onderstreepte toets H samen met Alt in te toetsen, kunt u de Hallo-toets activeren vanaf het toetsenbord. 10. Pas de eigenschappen aan volgens de tabel: 1. 2. 3. 4.
www.ffxs.nl/DIY-elektro
-9-
Visual Basic 6.0
11. In het formulierpositievenster positioneer je het formulier in het centrum van het scherm. In het snelmenu kies je Startup Position en vervolgens Center Screen. 12. Start het programa en controleer de gebruikersinterface. Het logo verschijnt niet op het scherm. 13. Sla het project op met de bestandsnaam Begroeting.. 14. Nu gaan we naar het codevenster. Via het menu View => Code kom je in het codevenster.
15. Bovenaan links in dit venster selecteer je het object cmdEinde. Wanneer er op de knop Einde wordt geklikt, dan wordt het programma beëindigd. De procedure staat rechts bovenaan, in dit geval Click. 16. Commentaar kan overal aangebracht worden. Dit kan tussen enkele aanhalingstekens (‘). Na de commentaar typen we de Basic-instructie End.
www.ffxs.nl/DIY-elektro
- 10 -
Visual Basic 6.0
Private Sub cmdEinde_Click() ‘Het beëindigen van het programma’ End End Sub 17. Nu is de eerste procedure gereed. Het programma kan nu gestart worden en de knop Einde kan getest worden. 18. ga terug naar het codevenster en vul de overige procedures aan volgens de listing van Het codevenster 19. Bewaar het programma 20. Test het programma
21. Nu kunnen we het programma compileren naar een EXE-bestand. Menu File => Make Project1.exe. We typen de projectnaam Begroeting in en klikken op OK. Nu kunne we de toepassing rechtstreeks vanuit Windows starten.
Project 2: Conversie van inch naar cm Doel De gebruikersinterface telt drie opdrachtknoppen, twee labels, twee tekstvlakken en een figuur. De toepassing berekent de omzetting van de ingevoerde inches naar centimeters. 1. Eerst wordt het aantal inches in het tekstvlak gezet 2. Met de opdrachtknop Bereken wordt de conversie uitgevoerd 3. Het resultaat verschijnt in het tweede tekstvlak 4. Met de opdrachtknop Wissen worden de twee tekstvlakken gewist 5. De opdrachtknop Einde sluit het programma.
www.ffxs.nl/DIY-elektro
- 11 -
Visual Basic 6.0
De lay-out
Werkwijze 1. Kies File => New Project. Selecteer StandardEXE en klik op OK 2. Maak een interface zoals in de figuur 3. Vergroot de afmetingen van het formulier tot 6600x6300. (Door de hoek te verslepen) 4. Plaats de drie opdrachtknoppen op het formulier. Selecteer de knop in de werkset en teken deze op het formulier. De twee andere kan men met Kopiëren en Plakken tekenen, zo zijn de drie knoppen juist even groot 5. Zet de knoppen op hun juiste positie • Selecteer de drie knoppen • Kies in het Format-menu de optie Horizontal Spacing en klik in het submenu Make Equal • De middelste knop wordt nu gecentreerd tussen de uiterste knoppen 6. Plaats de Picturebox in het midden van het formulier 7. Plaats de twee labels en de twee tekstvlakken 8. Je kunt de positie en afmetingen van deze objecten vergrendelen door in het menu Format => Lock Controls te selecteren 9. Pas de eigenschappen aan volgens de tabel:
www.ffxs.nl/DIY-elektro
- 12 -
Visual Basic 6.0
10. De knop Bereken is de standaardknop van het formulier (Default = True). Deze instelling heeft tot gevolg dat de gebruiker deze knop kan activeren door op de Enter-toets te drukken. Deze eigenschap kan slechts éénmaal voorkomen en kan maar op één knop toegepast worden. Deze standaardknop heeft een iets bredere rand. 11. De knop Einde is de sluitknop (Cancel = True). Het formulier sluit door op deze knop te drukken 12. In het formulierpositievenster positioneer je het formulier in het centrum van het scherm. In het snelmenu kies je Startup Position en vervolgens Center Screen 13. Sla het project op met de bestandnaam Inch-cm als bestandsnaam.. 14. Nu gaan we naar het codevenster. Via het menu View => Code kom je er
www.ffxs.nl/DIY-elektro
- 13 -
Visual Basic 6.0
15. sla het project op 16. start de toepassing en test de toepassing 17. Beëindig het programma met de Esc-toets, dit kan omdat de knop Einde de sluitknop is
Keypress Het programma heeft een aantal tekortkomingen, er kunne alle mogelijke tekens en ook negatieve getallen worden ingevoerd. De invoer via het toetsenbord kan beperkt worden tot cijfers van 0 tot en met 9 door gebruik te maken van de procedure Keypress. Het argument Keypress bezit de ASCII-waarde van het teken dat in het invoervlak werd ingevoerd. Hier wordt door een If..Then-structuur gecontroleerd of de ASCIIwaarde van het ingevoerde teken toegestaan is. If voorwaarde Then instructie1 [Else instructie2] Bij de code kan deze procedure bijgevoegd worden:
Project 3: Oscilloscoop Doel Bij dit programma wordt een beeld van een oscilloscoop met een sinusvormig signaal weergegeven. De tijdsbasis is ingesteld op 1ms/verdeling en de verticale tijdbasis op 10V/verdeling. Eveneens wordt de periodeduur T, de frequentie f en de amplitude van het signaal weergegeven. Door op Tekenen te klikken kan een nieuwe waarde afgelezen worden.
www.ffxs.nl/DIY-elektro
- 14 -
Visual Basic 6.0
De lay-out
Werkwijze 1. Plaats de verschillende objecten op het formulier 2. Pas de eigenschappen aan
www.ffxs.nl/DIY-elektro
- 15 -
Visual Basic 6.0
3. Pas de programmacode aan Option Explicit Dim x As Long Dim y As Long Const pi = 3.1415926537 Dim utop As Long Dim u As Double Dim xold As Long Dim uold As Long Dim radx As Double Dim hulp As Double Dim T As Double Dim f As Double Private Sub Form_Activate() ’Verticale lijnen tekenen For x = 100 To 1000 Step 100 picGrafiek.Line (x, 0)-(x, 800) Next x ’Horizontale asverdelingen tekenen For x = 20 To 1000 Step 20 picGrafiek.Line (x, 395)-(x, 410) Next x ’Horizontale lijnen tekenen
www.ffxs.nl/DIY-elektro
- 16 -
Visual Basic 6.0
For y = 100 To 800 Step 100 picGrafiek.Line (0, y)-(1000, y) Next y ’Verticale asverdelingen tekenen For y = 20 To 800 Step 20 picGrafiek.Line (495, y)-(510, y) Next y End Sub Private Sub CmdTekenen_Click() Randomize picGrafiek.Cls ’Verticale lijnen tekenen For x = 100 To 1000 Step 100 picGrafiek.Line (x, 0)-(x, 800) Next x ’Horizontale asverdelingen tekenen For x = 20 To 1000 Step 20 picGrafiek.Line (x, 395)-(x, 410) Next x ’Horizontale lijnen tekenen For y = 100 To 800 Step 100 picGrafiek.Line (0, y)-(1000, y) Next y ’Verticale asverdelingen tekenen For y = 20 To 800 Step 20 picGrafiek.Line (495, y)-(510, y) Next y ’De amplitude kiezen: utop > 4 ’40 verschillende warden en in stappen van 1V utop = 0 Do Until utop > 4 utop = Int((Rnd * 40) + 1 ) Loop ’De periodeduur kiezen, 20 verschillende warden hulp = (Int((Rnd * 20) + 1) / 10) + 0.1 T = 3.6 / hulp ’Tekenen van de sinus xold = 0 uold = 400 For x = 0 To 1000 radx = hulp * x * pi / 180 u = 400 – 10 * utop * Sin(radx) picGrafiek.Line (xold, uold)-(x, u), RGB(255,255,255) xold = x uold = u Next x ’De periodeduur T en de frequentie f tonen T = T * 100 T = Int(T) / 100
www.ffxs.nl/DIY-elektro
- 17 -
Visual Basic 6.0
txtPeriode.Text = T & “ ms” f = 1000 / T f = f * 10 f = Int(f) / 10 txtFrequentie.Text = f & “ Hz” txtAmplitude.Text = utop & “ V” End Sub Private Sub cmdEinde_Click() End End Sub 4. Test het programma en sla het op
Project 4: Transistor Doel Een oefening leren opstellen om bij een transistor de basis, emitter en collecter te herkennen.
De lay-out
Opgave 1. Maak in Microsoft Paint het symbool van een transistor aan 2. Maak met Visual Basic het venster aan 3. Als je op de knop Basis drukt dan verschijnt dit bij basis, als je op Collector drukt dan verschijnt er collector, enz…
www.ffxs.nl/DIY-elektro
- 18 -
Visual Basic 6.0
Programmacode
Project 5: Transistor 2 Doel Een oefening opstellen voor het aanduiden van basis, collector en emitter.
www.ffxs.nl/DIY-elektro
- 19 -
Visual Basic 6.0
De lay-out
Als het resultaat correct is komt er in de respectievelijke velden de aanduiding van basis, collector en emitter. Is het resultaat niet juist komt de aanduiding “FOUT!!” in het tekstvlak.
Programmacode Private Sub cmdCorrect_Click() 'het nazien van de ingevoerde gegevens in het Basis invoervlak If txtBasis.Text = "1" Then txtBasis.Text = "Goed" If txtBasis.Text = "Goed" Then 'geeft "goed" een groene kleur txtBasis.ForeColor = &HFF00& End If Else: txtBasis.Text = "Fout" If txtBasis.Text = "Fout" Then 'geeft "fout" een rode kleur txtBasis.ForeColor = &HFF& End If End If 'het nazien van de ingevoerde gegevens in het Collector invoervlak If txtCollector.Text = "3" Then txtCollector.Text = "Goed" If txtCollector.Text = "Goed" Then 'geeft "goed" een groene kleur txtCollector.ForeColor = &HFF00& End If Else: txtCollector.Text = "Fout" www.ffxs.nl/DIY-elektro
- 20 -
Visual Basic 6.0
If txtCollector.Text = "Fout" Then 'geeft "fout" een rode kleur txtCollector.ForeColor = &HFF& End If End If 'het nazien van de ingevoerde gegevens in het Emitter invoervlak If txtEmitter.Text = "2" Then txtEmitter.Text = "Goed" If txtEmitter.Text = "Goed" Then 'geeft "goed" een groene kleur txtEmitter.ForeColor = &HFF00& End If Else: txtEmitter.Text = "Fout" If txtEmitter.Text = "Fout" Then 'geeft "fout" een rode kleur txtEmitter.ForeColor = &HFF& End If End If End Sub Private Sub cmdEinde_Click() 'het beëindigen van het programma End End Sub Private Sub cmdOpnieuw_Click() 'het wissen van alle data in alle invoervlakken en uitvoervlakken txtBasis.Text = "" txtBasis.ForeColor = &H0& 'geeft tekst een zwarte kleur txtCollector.Text = "" txtCollector.ForeColor = &H0& 'geeft tekst een zwarte kleur txtEmitter.Text = "" txtEmitter.ForeColor = &H0& 'geeft tekst een zwarte kleur End Sub Private Sub cmdVerbetering_Click() 'het weergeven van de juiste benamingen txtBasis.Text = "1" txtBasis.ForeColor = &H0& 'geeft tekst een zwarte kleur txtCollector.Text = "3" txtCollector.ForeColor = &H0& 'geeft tekst een zwarte kleur txtEmitter.Text = "2" txtEmitter.ForeColor = &H0& 'geeft tekst een zwarte kleur End Sub Private Sub txtBasis_Keypress(KeyAscii As Integer) 'alleen de invoer van 1, 2 en 3 in invoervlak 'Basis' is mogelijk If KeyAscii < 49 Or KeyAscii > 51 Then
www.ffxs.nl/DIY-elektro
- 21 -
Visual Basic 6.0
KeyAscii = 0 Beep End If End Sub Private Sub txtCollector_Keypress(KeyAscii As Integer) 'alleen de invoer van 1, 2 en 3 in invoervlak 'Collector' is mogelijk If KeyAscii < 49 Or KeyAscii > 51 Then KeyAscii = 0 Beep End If End Sub Private Sub txtEmitter_Keypress(KeyAscii As Integer) 'alleen de invoer van 1, 2 en 3 in invoervlak 'Emitter' is mogelijk If KeyAscii < 49 Or KeyAscii > 51 Then KeyAscii = 0 Beep End If End Sub Private Sub Form_Activate() txtBasis.ForeColor = &H0& txtCollector.ForeColor = &H0& txtEmitter.ForeColor = &H0& End Sub
'geeft tekst een zwarte kleur 'geeft tekst een zwarte kleur 'geeft tekst een zwarte kleur
Project 6: Splash screen & Verkleuren van een vak Doel 1. maak met Visual Basic de vensters aan 2. Laat eerst een splash screen opstarten gevolgd door het uiteindelijke programma 3. Laat een label verkleuren door op een knop te drukken 4. Voeg volgende knoppen toe: • Rood • Groen • Blauw • Einde
www.ffxs.nl/DIY-elektro
- 22 -
Visual Basic 6.0
De lay-out
Programmacode Splashscreen Option Explicit Private Sub Form_KeyPress(KeyAscii As Integer) Unload Me End Sub Private Sub Form_Load() lblVersion.Caption = "Version " & App.Major & "." & App.Minor & "." & App.Revision lblProductName.Caption = App.Title End Sub Private Sub Frame1_Click() Unload Me End Sub Private Sub Timer1_Timer() Unload frmSplash frmkleurknoppen.Show
www.ffxs.nl/DIY-elektro
- 23 -
Visual Basic 6.0
End Sub
Kleurknoppen Private Sub cmdBlauw_Click() lblcolor.BackColor = &HFF0000 End Sub Private Sub cmdGroen_Click() lblcolor.BackColor = &HFF00& End Sub Private Sub cmdRood_Click() lblcolor.BackColor = &HFF& End Sub
Project 7: Chronometer Doel Een chronometer vervaardigen met minuten, seconden en tienden seconden.
De lay-out
Opgave 1. Maak de gebruikersinterface aan Voor de chrono neem je een interval van 100ms 2. Dimentioneer de veranderlijken: Option Explicit Dim ChronoTenths As Integer Dim ChronoSeconds As Integer Dim ChronoMinutes As Integer
www.ffxs.nl/DIY-elektro
- 24 -
Visual Basic 6.0
3. Voor het genereren van de uitleescijfers kan je gebruik maken van de volgende programmacode: Private Sub tmrTim_Timer() ChronoTenths = ChronoTenths + 1 If ChronoTenths = 10 Then ChronoTenths = 0 ChronoSeconds = ChronoSeconds + 1 If ChronoSeconds = 60 Then ChronoSeconds = 0 ChronoMinutes = Chronominutes + 1 End If End If lblTime.Caption = Format(ChronoMinutes, “00”) + “:” + Format(ChronoSeconds, “00”) + “:” + Format(ChronoTenths * 10, “00”) End Sub 4. Verwerk de acties van de drukknoppen in het programma
Programmacode Option Explicit Dim ChronoTenths As Integer Dim ChronoSeconds As Integer Dim ChronoMinutes As Integer Private Sub cmdQuit_Click() 'het beëindigen van het programma End End Sub Private Sub cmdReset_Click() 'reset de teller ChronoTenths = 0 ChronoSeconds = 0 ChronoMinutes = 0 lblTime.Caption = "00" + ":" + "00" + ":" + "00" End Sub Private Sub cmdStart_Click() 'start het tellen tmrTime.Enabled = True End Sub Private Sub cmdStop_Click() 'stop het tellen tmrTime.Enabled = False End Sub Private Sub tmrTime_Timer() 'het genereren van de uitleescijfers ChronoTenths = ChronoTenths + 1 If ChronoTenths = 10 Then ChronoTenths = 0 ChronoSeconds = ChronoSeconds + 1 www.ffxs.nl/DIY-elektro
- 25 -
Visual Basic 6.0
If ChronoSeconds = 60 Then ChronoSeconds = 0 ChronoMinutes = ChronoMinutes + 1 End If End If lblTime.Caption = Format(ChronoMinutes, "00") + ":" + Format(ChronoSeconds, "00") + ":" + Format(ChronoTenths * 10, "00") End Sub
Bijlagen Options Explicit • Het is een goede gewoonte om steeds de variabelen te declareren. Tabblad editor => Tools => Options => require declarations
Integer Long Single Double String Byte Boolean Date
=> gehele getallen => decimale getallen => decimale getallen => decimale getallen => tekst => gehele getallen => logische waarden => datum en tijdsinfo
www.ffxs.nl/DIY-elektro
- 26 -
=> 2 bytes (= 16bit) => 4 bytes (= 32bit) => 4 bytes => 8 bytes (= 64bit) => 1 byte (= 8bit) => true / false
Visual Basic 6.0
ASCII-code tabel
www.ffxs.nl/DIY-elektro
- 27 -
Visual Basic 6.0