aadnk Skrevet 4. mars 2004 Del Skrevet 4. mars 2004 (endret) Visual Basic Programmering - Introduksjon Du vil også finne en mer oppdatert og kurant versjon av denne teksten på Wikibooks. Dette er programmeringspråket for deg med ingen erfaring fra andre dataspråk. Visual Basic er enkelt, samtidig som det har svært få begrensninger i språket. I det hele er Visual Basic (herreter referert som VB) et kraftig utviklerverktøy som man raskt kan skape komplekse programmer uten noen særlig stor kunnskap i data. Jeg vil i det hele tatt anbefale alle som har begynt å snuse på muligheten om å lage sine egne programmer med å starte i denne enden, og så senere gå over til andre programmeringspråk som C++ hvis det i hele tatt skulle være nødvendig (og i de tilfellene det er det, kan man bruke begge språkene). Visual Basic var i starten ganske treigt i forhold til andre språk, men har i senere tid forbedret seg kraftig, og man kan idag faktisk lage store ressurskrevende 3D-spill direkte i VB. I disse forandrende tider har det allerede kommet en ny VB versjon som ikke vil bli dekket i denne guiden. VB.NET, som den kalles, er så fundamental annerledes enn forgjengerene at mye i denne guiden ikke vil kunne fungere skikkelig. Derfor bør du helst ha VB6, eller lavere før du starter. All kode i denne guiden vil være merket med en grønn farge for at du lettere skal kunne skile alt fra hverandre. Hva du trenger For å skrive VB-kode bør man ha en såkalt kompiler. Dette er et program som oversetter VB-koden til maskinkode som dataen kan bruke. Du kan kjøpe ett slikt program, eller laste ned en gratis "demo", VB CCE, her. Du kan ikke lage EXE-filer VB CCE, men skal du bare teste ut VB er dette heller ikke nødvendig. VB-programmet Etter du har åpnet VB-kompileren spretter en dialog boks fram med spørsmål om hva du vil lage. Ikke bry deg om alt det andre, men velg "Standard EXE" og trykk på OK. Helt automatisk vil en form bli laget hvor du kan legge inn hva det skal være. Til venstre ser du en hel del knapper og bokser som indikerer forksjellige controls (ting) du kan legge inn i formen. Trykk f.eks på boksen med A, og trykk så på en vilkårlig plass i formen og dra. Du vil nå ha lagt inn en Label, ett lite vindu hvor du kan skrive inn tekst til bruken. La oss nå komme igang. Legg inn en CommandButton ved å velge knappen med bildet av en liten boks og legg den inn på et tilfeldig sted i formen. Trykk på denne knappen du nettopp lagde, og du vil bli sendt inn i kode-delen av VB. Koding med VB Du vil nå kunne se denne teksten i innskrivnings vinduet: Private Sub Command1_Click() End Sub La oss se nærmere på dette. Private Sub Command1_Click() markerer begynnelsen på hva VB skal gjøre når noen trykker på knappen. Command1 er navnet på knappen og Click er årsaken til at denne delen av koden ble kjørt. Private betyr bare at koden er lokal og kan ikke nås fra andre moduler. End Sub markerer slutten på koden. Men la oss ta litt teori før vi går videre. Det vi så nå var godt kalt en prosedyre. Mesteparten av den koden du skriver vil være i prosedyrer, som egentlig bare er en måte å dele opp koden på. Det finnes forskjellig typer prosedyrer, og Sub er en type. Koden vi nettopp så, kalles også en Event fordi den startes når noe skjer. I dette tilfellet er det når en bruker trykker på en knapp. Ok. La oss skrive inn noe kode. Imellom Private Sub Command1_Click() og End Sub skriver du: MsgBox "Hallo verden!" La så teste dette ved å trykke på F5, eller på play-knappen i verktøylinjen. Formen vi lagte dukker så opp, sammen med den knappen vi la inn. Trykk på knappen og en meldingsboks med teksten Hallo verden kommer opp. Stilig, ikke sant? Du kan skrive inn hva det skal være istedenfor Hallo verden, men det må være mellom de to gåseøynene for at det skal virke. Lek deg litt med forskjellige meldinger før du går videre på neste del. Tekstbokser Gå ut av kodedelen og tilbake til formen. Dette gjør du ved å avslutte kode-vindet med X-knappen nedenfor den helt øverst til høyre. Så skal du se etter en knapp på verktøylinjen helt til venstre der du helt tydelig ser en liten boks med skriften ab| i. Trykk på den, og legg den inn slik du gjorde med Command1-knappen. Så må du endre navnet på tekstboksen. Dette gjør du ved å markere teksboksen og så lete etter en verktøyboks kalt "Properties - Text1". Finner du den ikke, må du kanskje framheve den med F4. I denne verktøyboksen skal det være to kolonner med forskjellige verdier i. Det er her alle egenskapene til et objekt befinner seg i. Se etter (Name) i den venstre kolonnen. Når du har funnet den endrer du cellen i den høyre kolonnen fra Text1 til txtTekst. Dette er for å gjøre alt mer oversiktelig og lettere å lese uten å teste koden. Vi trenger ikke skifte navnet på Command1, men for din egen del bør du navngi alt du legger inn, også formen. Når den er trykt lagt inn i formen går du tilbake til Command1 koden med å trykke på knappen du allerede har i formen. Så bytter du ut MsgBox koden du la inn med dette: MsgBox txtTekst.Text Start koden med F5 og skriv noe inn i tekstboksen. Trykk så på knappen og völa, teksten du skrev inn vil befinne seg i meldingsboksen. Så, hva skjedde her? Jo, tekstboksen du kalte for txtTekst kan nås ved å skrive dets navn. Teksten inne i en tekstboks hentes ved å skrive .Text etter navnet. Hvis du ser nærmere på Properties vinduet vil du finne cellen merket med Text. Syntaksen er derfor: [object].[property] Prøv nå å legge inn denne koden istedenfor: txtTekst.Text = "Hallo verden!" Tekstboksen vil nå inneholde teksten Hallo verden etter du har trykket på knappen. Det du nå har vitnet kalles Property, eller en Egenskap til en kontroll. Dette vil du se mye av i din programmerings karriære, og er derfor lurt å lære seg. Variabler Variabler er en vital del av programmeringspråket. De lagrer forskjellig type informasjon slik du kan senere nå dem. Til forksjell fra mange andre språk trenger man ikke deklarere en variabel før man kan bruke den, men det er absolutt å anbefale. For å deklarere en variabel bruker man kommandoen Dim. Vi kan teste dette ved å legge denne koden inn hvor du tidligere har skrevet MsgBox kodene: Dim Test Test = "Hallo verden!" MsgBox Test Koden gjør ikke noe mer enn det første eksempelet, men viser hvordan man bruker variabler. Videre kan man sette en variabel lik en egenskap i en kontroll. Endre navnet på tekstboksen til txtNavn. Så legger du til en ny teksboks som du kaller txtAlder. Finn fram kodevinduet og lim dette inn istedenfor den andre koden: Dim TekstUt TekstUt = "Mitt navn er " & txtNavn.Text TekstUt = TekstUt & ". Jeg er " & txtAlder.Text & " år gammel" MsgBox TekstUt Kjør koden og skriv navnet ditt inn i txtNavn, mens du skriver inn alderen din i txtAlder. Trykk på knappen. Nå vil en meldings boks komme opp hvor navnet og alderen din står. Som du ser gjør variabler det mye enklere å skrive kode. Du la kanskje merke til et for nå ukjent tegn i programmeringen: & .Denne brukes kanskje enkelt for å sette sammen tekst slik som vist i eksempelet. Du trenger ikke bare bruke tekst i variablene dine. Tall kan også brukes, og naturligvis utregning av mattematiske formler. Se på dette eksempelet. Dim Tall Tall = 2 + 2 MsgBox Tall Dette vil gi 4, noe som vi alle må være enige 2 + 2 er. Alle fire regnearter kan brukes, og naturligvis også variabler: Dim Ledd Dim Ledd2 Dim Sum Ledd = 12 Ledd2 = 8 Sum = Ledd + Ledd2 MsgBox Ledd & " + " & Ledd2 & " = " & Sum Vi kan nå f.eks lage et lite regneprogram som multipliserer sammen to tall fra brukeren. Kall den ene teksboksen for txtTall, og den andre for txtTall2. Legg dette inn i Command1 sub-en: MsgBox txtTall.Text & " * " & txtTall2.Text & " = " & txtTall.Text * txtTall2.Text Vær oppmerksom på at teksboksene må inneholde tall, ikke bokstaver. Følger man ikke denne regelen får man en feilmelding (Type mismatch) og programmet stanser. Kommer dette fram har man valget å debuge (debug), eller å avslutte programmet og returnere til VB (end). Når vi skal deklarere flere variabler kan det av og til være nyttig å ha alt på samme linje. Dette kan vi gjøre ved å dele opp variablene med komma slik: Dim Tall, Sum Tall = 5 Sum = Tall + 5 MsgBox Sum Du kan deklarere så mange variabler du vil på samme linje, men ikke overdriv. Lag en ny dim linje når det hele begynner å bli uoversiktelig. Eventuelt deklarer etter kategorier slik at du Dim'er alle tekst variablene først, og så tar tall variablene på en ny linje. Det er helt opp til deg hvordan du vil skrive koden, men det er nyttig å holde alt ryddig å pent. Det kan hindre deg fra å bruke mange timer med debugging. Funskjoner Funskjoner er prosedyrer akkuratt som sub-er, men i tillegg returnerer de en variabel. Vi kan først se på funskjonen UCase som gjør all tekst om til STORE bokstaver. Kall den ene tekstboksen for txtTekst og legg inn dette eksempelet: Dim Tekst Tekst = UCase(txtTekst.Text) MsgBox Tekst Prosedyrer kan inneholde såkalte paramentre. I dette tilfellet har UCase 1 parament. For å forklare dette kan vi se på denne koden: Form1.Backcolor = RGB(255, 0, 0) RGB har tre paramentre, alle skilt fra hverandre med komma. Formens bakgrunnsfarge vil i dette tilfellet bli rødt. Dette er fordi den første paramentreren viser til hvor mye rødt det skal være i fargen (i en skala fra 0 til 255). Den andre hviser til hvor mye grønt det skal være i fargen, og den siste forteller hvor mye blått fargen skal inneholde. Liste over ett par funskjoner i VB: Navn: - Paramentre: - Returnerer: RGB - Rød, Grønn, Blå - En farge sammensatt av rød (0-255), grønn (0-255) og blå (0-255). skalaen følger ikke det virkelige liv fullstendig da rgb(0,0,0) = svart og rgb(255,255,255) = hvit. UCase - Tekst - Paramenten tekst omgjort til store bokstaver. LCase - Tekst - Paramenten tekst omgjort til små bokstaver. QBColor - Tall - En farge fra en førdefinert liste med 16 forskjellige farger. 0 er svart, mens 15 er hvit. Sin - Tall - Sinusen av tallet (i radian) Cos - Tall - Cosinusen av tallet (i radian) Tan - Tall - Tangens av tallet (i radian) Log - Tall - Log av tallet Rnd - (Tall) - Tilfeldig tall mellom 0 og 1 Disse er langt ifra de eneste i VB, men det er ikke nødvendig å liste opp alle. Ikke alle paramentre er nødvendig, som dette eksempelet viser: Dim Tall Tall = Rnd() MsgBox Rnd * 100 Når du ser etter i listen skulle Rnd ha en paramenter. Men siden denne er skrevet med ( ), er det ikke nødvendig å skrive denne. Dette kalles for en Optional paramenter. Men dette i hånden kan du ekspermintere med de forksjellige funskjonene. Bruk den forrige koden og sett i gang. IF-THEN syntaksen Nå kommer vi til en viktig del av VB, nemlig betingelses-programmering. Prøv ut dette eksempelet: If txtTekst.Text = "hallo" Then MsgBox "Hallo igjen!" End If Skriv inn hallo i tekstboksen. Meldingsboksen kommer opp. Skriver du ikke hallo vil heller ikke meldingsboksen bli synlig. Vi kan oversette VB koden til norsk slik: HVIS txtTekst.Text = "hallo" DA SKAL MsgBox "Hallo igjen" SLUTT PÅ HVIS Man kan også legge til en Else del av IF syntaksen: If txtTekst.Text = "hallo" Then MsgBox "Hallo igjen!" Else MsgBox "Ikke det? Neivel." End If Hvis teksboksen ikke inneholder hallo vil en meldingsboks med teksten Ikke det? Neivel. komme fram. Else kan på norsk oversettes til HVIS IKKE. Hvis du vil ha flere betingelser kan du enten legge inn flere IF'er, eller bruke ELSEIF: If txtTekst.Text = "hallo" Then MsgBox "Hallo igjen!" ElseIf txtTekst.Text = "farvel" Then MsgBox "Farvel" Else MsgBox "Hva sa du?" End If Du trenger ikke bruke teksbokser, og du trenger heller ikke sjekke for tekst: Dim Tall Tall = 5 If Tall = 5 Then MsgBox "Tall er lik 5" Else MsgBox "Tall er ikke lik 5" End If Binariske operatører For å forklare hva dette er kan vi prøve å løse ett problem. Hvis du vil sjekke for flere ting på en gang med IF, slik at en meldingsboks kommer fram når du skriver inn helt bestemte verdier i teksboksene, ville du helt sikkert gjort slik: If txtTekst.Text = "hallo" Then If txtTall2.Text = "verden" Then MsgBox "Hallo verden!" End If End If Men du kan faktisk også gjøre slik: If txtTekst.Text = "hallo" AND txtTall2.Text = "verden" Then MsgBox "Hallo verden!" End If Jeg foretrekker den siste på grunn av dens enkelthet og størrelse. Dessuten er den lett å forstå. Men hva hvis du vil at meldingsboksen skal komme fram hvis en eller begge av tekstboksene er en viss verdi. Da kan du f.eks gjøre slik: If txtTekst.Text = "hallo" OR txtTall2.Text = "verden" Then MsgBox "Hallo verden!" End If Hva er det som foregår? Mer detaljert enn at AND og OR kalles for binariske operatører er det ikke nødvendig å gå, siden du allerede har forstått hvordan de brukes. Deres dynamikk vil jeg si er et tema for viderekomne VB-programmerere. Bare husk på at de kan kombineres og brukes uendelig mange ganger i en syntaks slik at f.eks dette er lovlig: Dim Tell Tell = 5 If txtTekst.Text = "hallo" AND txtTall2.Text = "verden" AND Tell = 5 Then MsgBox "Hallo verden!" End If Kontroller Til nå har vi sett på to kontroller: Teksbokser og knapper. Men fremdeles har vi mange igjen. Jeg vil nå kort prøve å gå igjennom de mest brukte. Knapper Fremdeles vet vi ikke hvordan vi skifter teksten på knappen. Hvem vil vel ha en knapp der det står Command1? Dette gjør vi med egenskapen Caption. Gå inn i Properties vinduet, finn egenskapen, og endre cellen ved siden av. Checkboksen Du legger den inn ved å markere den 4 boksen fra toppen 1 rad i verktøyboksen med de forskjellige kontrollene. Den ser ut som en teksboks med en V i. Egenskapen Caption er teksten som skal settes inn ved siden av boksen. Den mer interessange egenskapen er Value som befinner seg nesten helt nederst i Properties vinduet. Den kan ha tre verdier: 0 = Unchecked 1 = Checked 2 = Grayed Det betyr at når du skal teste om en checkbox er markert må du bruke noe lignende denne koden: If Check1.Value = 1 Then MsgBox "Checkboksen er markert!" End If Skal du ha betingelser for flere checkbokser bruker du binariske operatører. Option Denne kontrollen finner du til høyre for checkboksen i verktøyboksen. Den er i forhold til checkboksen ganske lik, men med to forskjeller: Value propertien kan bare inneholde to verdier: True eller False</dd> Bare en option boks kan være markert om gangen.</dd> Så for å teste om en option boks er markert gjør du slik: If Option1.Value = True Then MsgBox "Optionboksen er markert!" End If Label Er markert i verktøyboksen med en stor A. Teksten endres med Caption egenskapen. Combobox Er en nyttig liten kontroll som brukes ofte i programmeringen. Du finner den rett under checkboksen. For å legge til "Items", eller tekst må du enten bruke List egenskapen eller AddItem prosedyren: Combo1.List(0) = "Hallo" Combo1.List(1) = "Hallo verden!" Combo1.AddItem "Hallo alle sammen!" Du kan ikke bruke AddItem for å legge til tekst før du har startet programmet, men du må da bruke List egenskapen. Trykk på den i Properties vinduet og trykk på knappen som dukker opp i høyre kolonne. I teksboksen som dukker opp kan du skrive inn de forskjellige tingene brukeren kan velge mellom. For å se hva som er valgt kan du bruke Text egenskapen: If Combo1.Text = "Hallo" Then MsgBox "Hallo til deg også!" End if Normalt sett kan brukeren skrive inn sin egen tekst i combo boksen, men dette er ikke alltid ønskelig. For å gjøre den til "Drop-down only" setter du egenskapen Style til 2. Du har kanskje lagt merke til at når du starter programmet er combo boksene helt tomme. Brukeren må selv velge et arternativ før de har innhold, og dette kan i mange tilfeller være svært plagsomt. For å løse dette må du bli introdusert med en ny Event kalt Form_Load. Denne eventen kalles når formen lastes inn. Legg følgende kode inn i formen, men du må legge den utenfor Command1_Click sub-en. Du kan ikke legge en prosedyre direkte inn i en annen prosedyre. Private Sub Form_Load() Combo1.ListIndex = 0 End Sub Merk at comboboksen må inneholde noe, ellers vil programmet ditt bli avsluttet og du sendes tilbake til VB. Når combobokser er tomme har de ListIndex -1, som ikke refererer til noen tekst i Listen. Defor må du sette indeksen til 0, som er det første elementet i comboboksen. Det er på dette området VB kan virke litt underlig for nybegynnere. Hvorfor begynner VB å telle på 0, når alle andre her i verden begynner på 1? Dette gjelder forsovet også mange andre programmeringspråk, som ikke gjør forvirringen bedre. Det er blant annet fordi matemattikere begynner å telle på null, og derfor er windows basert på dette. VB prøver faktisk også å rette opp på dette med at ved mange teknikker begynner tellingen på 1. Likevel gjør denne blandingen det hele bare værre. Det er grunnen ikke så viktig, så du trenger ikke bry deg om det. Listboks Du finner den rett ved siden av comboboksen. Den eneste forskjellen er at du må ikke trykke på noen knapp for å se alle elementene, men de er allerede synlig. Du forstår nok hva jeg mener når du prøver den ut. Ja, dette var de aller vanligste kontrollene. Jeg skal gå mye dypere inn i de andre senere, men først skal vi se på noen egenskaper som du finner på nevnte kontroller: Egenskap: - Beskrivelse:Backcolor - Bakgrunnsfagren til kontrollenForecolor - Skriftfargen til kontrollenLeft - X-kordinatene til kontrollenTop - Y-kordinatene til kontrollenWidth - Bredden i twipsHeight - Høyden i twipsFont - Skrifttype, -størrelse og -navn.Tag - Variablel som kan brukes til hva som helst.mange av disse egenskapene er selvforklarene, mens noen har sine underligheter. Top er plasseringen på Y-aksen, men denne aksen er annerledes enn den vi lærte i mattemattikktimene. Den er snudd opp ned slik at 0 blir høyere på skjermen enn 400. Hvorfor er ikke så viktig, men du må vite dette. For å endre font'en må du markere den i Properties vinduet og så trykke på knappen som dukker opp. Derretter kan du velge skrifttypen slik du f.eks gjør i Notepad. Twips er målet satt til standard av VB. På min skjerm er 1 piksel lik 15 twip. Vi skal ikke gå innpå det å endre målet i VB ennå, men du kan ha dette i bakhodet. Tag har ingen invirkning på kontrollen og du kan sette den til hva det skal være. Bruk den når du vil lagre ekstra informasjon. Looping Looping er en viktig del av all programmering og er fundamentet for å lage spill. Et greit eksempel på hvor vi må bruke looping er følgende oppgave: Lag et program hvor brukeren får 10 meldinger med samme tekst. Lett, tenker du kanskje, og skriver inn følgende kode: Private Sub Form_Load() MsgBox "hallo" MsgBox "hallo" MsgBox "hallo" MsgBox "hallo" MsgBox "hallo" MsgBox "hallo" MsgBox "hallo" MsgBox "hallo" MsgBox "hallo" MsgBox "hallo" End Sub Vel, jo, oppgaven kan løses på den måten. Men det er mye bedre å bruke looping: Private Sub Form_Load() Dim i For i = 1 To 10 MsgBox "hello" Next End Sub -Men kodene gjør jo det samme, hvorfor bruke looping da?, spør du sikkert. Jo, hva om brukeren skulle få 100 meldinger? Eller kanskje 1000? Da ser du at den beste løsningen er å bruke looping, siden du slipper å måtte bruke hele livet ditt på å skrive millioner av linje med kode, som attpåtil bruker opp enorme mengder med minne. Eksempelet oversatt fra VB til norsk blir slik: -Når formen laster: Lag en variabel med navn "i" Sett variabel "i" til 1 og gå ut av loop hvis "i" er større enn 10 Vis melding "hello" Adder 1 med "i" og gå tilbake -Slutt Du trenger ikke bare gi den samme meldingen: Private Sub Form_Load() Dim i For i = 1 To 10 MsgBox "Melding nummer " & i Next End Sub Mulighetene er uendelige. Du kan f.eks også lage en loop som denne: Private Sub Form_Load() Dim Red, Green Show For Red = 0 To 255 For Green = 0 To 255 Form1.BackColor = RGB(Red, Green, 0) DoEvents Next Next End Sub Show måtte legges til fordi formen er ikke synlig på det tidspunktet Form_Load kalles. Men du ser jo mer hva du kan gjøre, for tenk å måtte skrive alle fargene koden går igjenom uten looping. Det finnes også andre typer looper, og en av dem heter en DO-LOOP. Den er ganske enkel og fungerer slik: Dim i, g Do Until i > 255 Form1.Backcolor = RGB(i, g, 0) DoEvents i = i + 1 g = g + 1 Loop Du trenger ikke å skrive noe etter Do, men da risikerer du å få en uendelig loop. Mer om operatører Du har allerede stiftet bekjentskap med 7 operatører: +, -, *, /, AND, OR og =. Så er det på tide å introduser 2 nye: < og >. Disse brukes for å teste om ett tall er mindre eller større enn ett annet. Du kjenner kanskje prinsippet igjen fra barneskolen. Uansett bruker du de slik: Dim i i = 50 If i < 100 Then MsgBox "i er midre enn hundre" ElseIf i > 100 And i < 200 Then MsgBox "i er større enn hundre og mindre enn 200" Else MsgBox "i er større en 200" End if Select-Case Select Case er en nyttig del av VB som gjør det mye enklere med betingelses programmering. La oss se på et eksempel: Select Case txtTekst.Text Case "hallo" MsgBox "Hallo igjen!" Case "verden" MsgBox "Hallo verden!" Case "farvel" MsgBox "Farvel!" Case Else MsgBox "Hva skrev du?" End Select Som du ser er den lett i bruk og krever egentlig en særlig dyp forklaring. Den ligner veldig på IF-THEN syntaksen, men er mye lettere å skrive. Jeg foretrekker denne framfor IF i veldig mange tilfeller hvor jeg har mange forskjellige betingelser. I de tilfellene hvor du skal ha flere betingelser i samme case bruker du komma for å skille dem fra hverandre: Select Case txtTekst.Text Case "hallo", "verden", "hallo verden" MsgBox "Hallo verden!" Case Else MsgBox "Hva skrev du?" End Select Det er imidlertid et par ting å legge merke til. Skal du teste om et tall er imellom to andre må du gjøre slik: Dim i i = 36 Select Case i Case 0 To 40 MsgBox "Tallet er mellom 0 og 40" Case Else MsgBox "Tallet er utenom 0 og 40" End Select Syntaksen Case Is > 10, Is < 20 er ikke oversatt til Når "i" er større 10 men mindre enn 20, men Når "i" er større enn 10 eller mindre enn 20 som naturlivis er alltid. Mer om funksjoner MsgBox Du har ikke sett halvparten av hva msgbox egentlig er i stand til å gjøre. Skriv inn MsgBox "test", i kode-vinduet. Du vil nå se en liste over forskjellige konstanter. Velg vbInformation og kjør programmet. Opp kommer en meldingsboks med et ikron til venstre. Lek deg litt med de andre konstantene. Du kan bruke flere på en gang ved å addere dem sammen slik: MsgBox "test", vbInformation + vbYesNo Legg så til et komma og skriv inn dette: "title". Kjør programmet og meldingsboksen får Title øverst i vinduet istedenfor Project1 MsgBox er i virkeligheten også en funskjon. Derfor kan du finne ut hvilken tast brukeren har trykket på. Prøv ut dette eksempelet: If MsgBox("Vil du avslutte",vbQuestion + vbYesNo, "Avslutte?") = vbYes Then End End If Som du ser avsluttes programmet når brukeren trykker på Yes. End er en kommando som avslutter programmet, og vbYes er konstanten for knappen Yes i MsgBox'en. InputBox En veldig nyttig kommando som gir muligheten for brukeren å skrive inn tekst i en meldingsboks. Se på dette eksempelet: Dim Out Out = InputBox("Skriv inn noe", "Title", "Standard tekst") MsgBox "InputBox returnerte " & Out, vbInformation, "InputBox test" Timer Denne kontrollen finner du i verktøyboksen som en klokke. Den viser ikke klokken men kan brukes istedenfor en loop. Legg inn en timer i formen og kall den for tmrKlokke. Så legger du denne koden inn: Private Sub tmrKlokke_Timer() Form1.Caption = Time End Sub Set Interval egenskapen til 10 og start programmet. Det vil nå være en klokke i formens caption. Interessant. Interval er hvor mange millisekund det tar før Timer eventen kjøres igjen. Skal du stoppe Timeren må du enten sette Interval til 0 eller Enabled til False. Begge funker. Skal du f.eks få en timer til å kjøre 15 ganger kan du gjøre slik: Private Sub tmrKlokke_Timer() tmrKlokke.Tag = Val(tmrKlokke.Tag) + 1 If tmrKlokke.Tag >= 15 Then tmrKlokke.Enabled = False End If Form1.Backcolor = QBColor(tmrKlokke.Tag) End Sub Sett Interval til 1000 slik at du ser hva som skjer. Val oversetter tekst om til tall. Dette er for å hindre at VB genererer en feil fordi du plusser en tom streng (tekst) med et tall. >= operatøren er ikke mer enn en kombinasjon av > og =. Den betyr ikke annet enn Større eller lik. <= betyr mindre eller lik. Data typer Til nå har vi bare brukt en data-type når vi har deklarert variabler, nemligVariant. Denne datatypen kan inneholde all data, og er satt til standard på alle variabler. Når du skal definere en datatype bruker du As nøkkelordet. En typisk deklarering blir da: Dim Tell As Long Long er sammen med Single den vanligste datatypen for tall. Bruk dem istedenfor Variant da de tar mye mindre plass og er mye raskere. Se på denne tabellen: Data type - Prefiks - Antall Byte - 10000 adderinger Byte - - - 1 - 1,9141 ms Integer - % - 2 - 1,1917 ms Long - & - 4 -1,0491 ms Single - ! - 4 - 1,2922 ms Double - # - 8 - 1,4112 ms Currency - @ - 8 - 1,4373 ms Variant - - - 16 - 3,2100 ms String - - - 2pr. bokstav - Prefiks er den karakteren du kan sette etter variabelen for å definere data typen uten As. Det er bare for å være bakoverkompibelt med eldre BASIC versjoner. mange hardcode VB programmerere kaller bruken av disse prefikser for "street basic" og fnyser av de som bruker dem. Jeg må innrømme at jeg fremdeles bruker de til tider, spesielt når jeg skal spare plass. Ikke gjør som meg, bruk heller As da det er mye lettere å få oversikten. Men jeg får ta med et eksempel: Istedenfor å skrive Dim Tell As Long Så kan du skrive Dim Tell& En variant tar ALLTID minst 16 byte, uansett. Derfor kan du spare mye med å bruke den egnede datatypen, både på plass og ytelse. I tabellen betyr 10000 adderinger hvor lang tid det tar å legge til tallet 1 hele 10 000 ganger. Den er der bare for å vise grunnen til at du helst ikke bør bruke variant. Arrays Arrays er veldig nyttig i mange sammenhenger. Se f.eks på denne koden: Dim Tall(0 To 10), i As Long For i = 0 To 10 Tall(i) = Rnd * 100 Next i = Rnd * 10 MsgBox "Tall nummer " & i & " er lik " & Tall(i) Som du ser lager du arrays med å sette paranteser etter variabelen. Du bruker To nøkkelordet for å definere antallet. Kommentarer For å skrive inn en kommentar i VB-koden setter du inn ett ' etterfulgt av hva du vil si. Det betyr at denne koden her er fullstendig lovlig: MsgBox "Hallo" ' Jo, denne koden hviser en meldingsboks med teksten hallo Åpne/lagre filer Nå skulle du være klar for noe virkelig interessant. Du skal nå lære hvordan du åpner og lagrer data i filer. For å gjøre det bruker vi Open syntaksen: Open "C:\testfil.txt" For Output As #1 Close #1 Oversatt til norsk blir det: Åpne fil C:\testfil.txt og slett alt innhold. Dette er fil nummer 1 Lukk fil nummer 1 For å skrive til filen bruker vi Print kommandoen. Den bruker vi slik: Print #1, "hallo" Du må naturlivis sette kommandoen etter OPEN syntaksen men før CLOSE syntaksen. For å åpne setter vi inn For Input istedenfor For Output Dim Tekst As String Open "C:\testfil.txt" For Input As #1 Line Input #1, Tekst Close #1 MsgBox Tekst Skal du hente flere linjer på en gang må du bruke en DO-LOOP Dim Buff As String, Tekst As String Open "C:\testfil.txt" For Input As #1 Do Until EOF(1) ' EOF er TRUE når VB har nådd enden av fila Line Input #1, Buff Tekst = Tekst & Buff & vbNewLine Loop Close #1 MsgBox Tekst vbNewLine er det samme som å presse enter i en teksbehandler. Skal du åpne en fil i samme mappe som programmet gjør du slik: Dim Tekst As String Open App.Path & "\testfil.txt" For Input As #1 Line Input #1, Tekst Close #1 MsgBox Tekst Åpne programmer Noen ganger vil du kanskje åpne programmer fra ditt program. Det kan du gjøre med Shell kommandoen: Shell "notepad.exe" Shell "calculator.exe" Konklusjon Ja, det var det. Du har nå lært deg de mest grunnlegende teknikkene i VB. Vil vite mer kan du gå inn på hjemmesiden min her. Ellers kan du naturligvis også bruke google for å finne ut mer. Nesten alt du lurer på kan du få svart på med å gjøre det. Fremdeles noe du lurer på? Post det i VB forumet på hardware.no. Du får nok raskt svar og tilbakemelding. Lykke til videre med programmeringen! Skrevet av Kristian.S.Stangeland © 2004 Endret 16. mai 2005 av aadnk Lenke til kommentar
DevN Skrevet 5. mars 2004 Del Skrevet 5. mars 2004 Har ikke lest alt, men sinnsykt bra aadnk! Skal lese resten, eller litt senere... Lenke til kommentar
alex100 Skrevet 6. mars 2004 Del Skrevet 6. mars 2004 Utrolig nyttig. Lærte faktisk mye selv om jeg bare svipet over nå akkurat. Fikk jo lyst til å virkelig lage litt av hvert. Takker for en veldig god guide Lenke til kommentar
endrebjo Skrevet 20. mars 2004 Del Skrevet 20. mars 2004 Har bare en ting å si: Sinnsykt Bra!!! Veldig bra for en fersking (LES: åpnet VB6 kun én gang) som meg Er det mulighet for at det kommer mer?? Takker for veldig bra guide. PS. brukte 3 ( ) kvelder på å komme gjennom Lenke til kommentar
aadnk Skrevet 21. mars 2004 Forfatter Del Skrevet 21. mars 2004 Takker for alle responsene. Hyggelig å høre at guiden falt i smak. Når det gjelder oppfølgere er jeg egentlig ikke sikker på hva jeg skal skrive om videre. Mulig kan jeg fortsette med API-programmering, men det er vel litt for avansert i forhold til nivået guiden slutter med? Uansett, etter denne inføringen er det ikke så vanskelig å komme videre med eksempler fra internett. Har erfart at å begynne programmering er vanskelig med bare google som verktøy. Lenke til kommentar
immo Skrevet 21. mars 2004 Del Skrevet 21. mars 2004 Hei, veldig bra innføring som de skriver over. En bra fortsettelse kunne kanskje være å skrive hvordan man faktisk lager et eget "program" av det man har laget. Tenker da på kompilering til .EXE fil osv. Har såvidt vært innom VB før men aldri blitt noen exe-fil av det lol Stå på! Lenke til kommentar
mobil_brukeren Skrevet 22. mars 2004 Del Skrevet 22. mars 2004 (endret) Det går ikke ann og laste ned det programet.. Edit: Drit bra guide!! jeg kunne ingen ting nå kan jeg vertfall litt Endret 22. mars 2004 av mobil_brukeren Lenke til kommentar
Jonas Skrevet 22. mars 2004 Del Skrevet 22. mars 2004 (endret) Det går ikke ann og laste ned det programet.. Du kunne kansje ha sagt det til MS istedenfor å poste det her.. Veldig fin guide immo, jeg holder på Endret 22. mars 2004 av jonas22282460 Lenke til kommentar
immo Skrevet 22. mars 2004 Del Skrevet 22. mars 2004 Det går ikke ann og laste ned det programet.. Du kunne kansje ha sagt det til MS istedenfor å poste det her.. Veldig fin guide immo, jeg holder på Lenke til kommentar
Hidden Skrevet 28. mars 2004 Del Skrevet 28. mars 2004 Nydelig, jeg skal holde på med dette på jobben de neste dagene! Nå får jeg avbrekk fra å spille Hardwood hearts på nettet, og kan endelig gjøre noe nyttig igjen! Lenke til kommentar
jonask Skrevet 5. april 2004 Del Skrevet 5. april 2004 (endret) Sikkert bra guide, jeg har ikke lest den. Men var jeg deg ville jeg lagt ut en ny verson så fort som mulig å ikke indende koden er en forferdelig uvane, og ved å lære nybegynnere opp til å ikke gjøre det er bare feil detersomåskriveenlengeratrikkelutenmellomromellernoenannenformfortegnsetting Cheers! -- Jonas ___ Lagt til senere ___ Ved nærmere undersøkelse av siden ser jeg jo at det ikke er din feil. det er jo ikke mulig å snike inn tabs på det forumet her sorry =) Endret 5. april 2004 av jonask Lenke til kommentar
DreamCodeR Skrevet 5. april 2004 Del Skrevet 5. april 2004 Sinnsykt bra guide. hvis du kommer med ny, så husk å ta med litt om hvordan man kan bruke en Access database (f.eks) til å hente informasjon utav :!: Hadde det ikke vært for denne guiden så hadde jeg sannsynligvis ikke blitt så motivert VELDIG BRA ! Mvh. DreamCodeR Lenke til kommentar
OscarWoHA Skrevet 21. april 2004 Del Skrevet 21. april 2004 Wow! Dette må vel være blandt de lengste innleggene jeg har sett. Har ikke lest i gjennom guiden (og testet den). Kan derfor ikke uttale meg om den var bra, men førsteinntrykket var bare helt sinsykt bra! Skulle hatt flere folk som deg, aadnk Lenke til kommentar
SirGalrim Skrevet 14. mai 2004 Del Skrevet 14. mai 2004 Sinsykt bra!! Den hjalp meg til og på eksamen! Takk! Stå på videre! Du er god til å forklare og skrive! Lenke til kommentar
JonH Skrevet 31. mai 2004 Del Skrevet 31. mai 2004 Nå har jeg drevet med VB noen år, men den innføringen er kjempebra for de som nettopp har startet! Selv har jeg bare en bok om VB: Hardcore Visual Basic 5, en murstein (ja, den ER rød...). Ellers har jeg lært mye av å være på nett, spesielt disse sidene: VBnet Passer nok best for de litt viderekommende. AllApi Som navnet sier, endel om APIer, men siden blir ikke oppdatert lengre... ActiveVBSide på tysk, for de som behersker det. Lenke til kommentar
skoTner Skrevet 10. august 2004 Del Skrevet 10. august 2004 Holder på med å lage en liten sak, men vil knytte den mot en eksisterende mySQL database. Er det noe mulighet for bruk av mySQL databaser i Visual Basic? Lenke til kommentar
alDoz Skrevet 31. oktober 2004 Del Skrevet 31. oktober 2004 (endret) Fikk VB 6 i ettermiddag og har så smått begynt og pusle med det du skriver i den fine guiden.. Fant en feil: MsgBox txtTall.Text & " * " & txtTall2.Text & " = " txtTall.Text * txtTall2.Text Som skal være: MsgBox txtTall.Text & " * " & txtTall2.Text & " = " & txtTall.Text * txtTall2.Text Uansett, så har jeg begynt og lage en kalkulator med to tekstbokser. Har da lagt til funksjonene - / * men mangler pluss... Får ikke den til. Feks hvis jeg skriver 4 og 5 blir det 45 og ikke 9. Noen tips til hvordan man plusser uten og skrive tallene i koden, men ta de ut fra tekstboksene? Endret 31. oktober 2004 av alDoz Lenke til kommentar
aadnk Skrevet 31. oktober 2004 Forfatter Del Skrevet 31. oktober 2004 ... Fant en feil: MsgBox txtTall.Text & " * " & txtTall2.Text & " = " txtTall.Text * txtTall2.Text Som skal være: MsgBox txtTall.Text & " * " & txtTall2.Text & " = " & txtTall.Text * txtTall2.Text ... Noen tips til hvordan man plusser uten og skrive tallene i koden, men ta de ut fra tekstboksene? Nei, skulle du ha sett. Det hadde sneket seg inn en skrivefeil i koden. Og jeg som utrettelig testet alle linjer for å unngå slike feilkilder. Nåvel, feilen er fikset, takket være en observant leser som alDoz. Takker! Når det gjelder å summere innhold fra tekstbokser må du alltid være påpasselig å inkludere funksjonen ”Val” i uttrykket. Omtrentlig som følger: MsgBox txtTall.Text & " + " & txtTall2.Text & " = " & Val(txtTall.Text) + Val(txtTall2.Text) Eller man kan gjøre slik: Dim dNum1 As Double, dNum2 As Double dNum1 = txtTall.Text dNum2 = txtTall2.Text MsgBox dNum1 & " + " & dNum2 & " = " & dNum + dNum2 Lenke til kommentar
x871kx6167ss7 Skrevet 10. august 2005 Del Skrevet 10. august 2005 http://download.microsoft.com/msdownload/s...ce/vb5ccein.exe Direktelink til download... Lenke til kommentar
Danny92 Skrevet 22. april 2007 Del Skrevet 22. april 2007 Det er en ting jeg lurer på Jeg har prøvd mange muligheter nå men får det ikke til! Alltså jeg vil oppne en litten ting i en ini fil! f.eks: Open "server", "port", SettingsIni Den ini filen ser sånn ut(Den heter settings.ini) : [server] port=90 Der det står 90 skal vises i textboksen ikke port= sånn men bare 90 Har set sånt på mange andre ting også begynte jeg også å trenge det (Bruker VB6) Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå