Sådan laver du en lommeregner med Visual Basic

Åbn Visual Basic 6, og vælg "Standard EXE" fra den nye projektmenu. Du vil se en tom formular vises på skærmen.

Omdøb dit projekt og din formular ved at klikke på "Project1" i højre side af skærmen i projektoversigten, og indtast et nyt navn i "Navn"-linjen i boksen Egenskaber, som skal vises under projektlisten ved Standard. Tryk på "Enter" for at acceptere det nye navn. Gør det samme for din formular (et foreslået formularnavn er "CalculatorUI"), og sørg for også at indtaste et lignende navn i "Caption"-egenskaben, hvilket vil ændre teksten i formularens øverste bjælke. Gem projektet i en ny mappe på din computer.

Tilføj knapper og en tekstboks til formularen. Tilføj først en tekstboks, som vil være der, hvor tallene indtastet i lommeregneren vises, samt resultaterne af beregninger. Gør dette ved at vælge TextBox-knappen fra værktøjslinjen i venstre side af skærmen, og derefter trække med musen den størrelse og placering, du ønsker for TextBox. Når du har placeret tekstboksen, kan du ændre størrelsen og placeringen ved at trække den til en anden placering af formularen eller ved at trække håndtagene (de små firkanter) langs kanten af ​​tekstboksen. Sørg for at ændre følgende linjer i vinduet Egenskaber, med tekstboksen valgt: "(Name)" = tbResult, "Alignment" = 1- Højrejuster, "Data Format" = (klik på knappen "..." for at vælge) Tal, "Låst" = Sand, og "Tekst" = 0.

Vælg CommandButton-ikonet på værktøjslinjen, og opret den første knap på samme måde, som du oprettede TextBox for at tilføje knapper. Som reference kan du bruge Windows-beregneren i standardvisning (Programmer > Tilbehør > Lommeregner) som grundlag for dit lommeregnerlayout, idet du udelader knapperne "MC", "MR", "MS" og "M+". På hver knap skal du ændre følgende egenskaber (ved at bruge knappen "+" som eksempel): "(Name)" = btnPlus, "Caption" = +. Gør det samme for resten af ​​lommeregnerknapperne, og gem derefter dit arbejde. Din formular skal nu ligne eksemplet vist her.

Tilføj koden. Bemærk, at hvis dine knapper og tekstboks ikke hedder det samme, som koden angivet her forventer, skal du bruge for at ændre navnene, så de matcher dine knapper og tekstfelt, eller ændre dine knapper og tekstfelt for at matche dette kode. Først skal vi oprette et par variabler til behandling af lommeregnerinput:

Dim sLeft As String, sRight As String, sOperator As String Dim iLeft As Double, iRight As Double, iResult As Double Dim bLeft As Boolean

Hver beregning består af fire dele: et tal til venstre for operatoren (sLeft, iLeft), en operator (sOperator), et tal til højre for operatoren (sRight, iRight) og et resultat (iResult). For at spore, om brugeren indtaster venstre eller højre tal, skal vi oprette en boolesk variabel, bLeft. Hvis bLeft er sandt, indtastes venstre side af beregningen; hvis bLeft er falsk, indtastes højre side.

Initialiser variablen bLeft. Det gør vi ved at oprette en Form_Load-underrutine, som du enten kan skrive som angivet her eller automatisk oprette ved at dobbeltklikke på en del af formularen, der ikke er dækket af en knap eller tekstboks. Inde i funktionen skal vi indstille bLeft til True, fordi det første tal, der indtastes, vil være den venstre del:

Opret en underrutine, der håndterer et klik på en af ​​talknapperne. Vi opretter dette som en underrutine, fordi vi bruger identisk kode for hver knap, og at bruge en underrutine betyder, at vi ikke behøver at gentage den samme kode ti gange. Indtast følgende under Form_Load-underrutinen's End Sub-linje:

Som du kan se, tager denne funktion en strengparameter, sNumber, som vil indeholde det tal, som brugeren har klikket på. Hvis bLeft er sandt, føjes dette tal til strengen, der repræsenterer det tal, der indtastes, sLeft, og tekstboksen, tbResult, opdateres for at vise det nye tal. Hvis bLeft er falsk, udføres den samme handling med sRight i stedet.

Til sidst skal du oprette en klikhændelsesfunktion for hvert nummer, der kalder vores AddNumber-underrutine. Du kan nemt gøre dette ved at dobbeltklikke på hver nummerknap, hvilket vil oprette subrutinestrukturen for dig. Tilføj derefter opkaldet til AddNumber, og udskift nummeret i anførselstegn med det nummer, der er knyttet til knappen. For nul-knappen vil din kode se sådan ud:

Ligeledes vil din kode for den ene knap se sådan ud:

Håndter operatørerne: plus, minus, gange og divider. Vi vil gøre dette som sidste trin, og skabe en underrutine, der kaldes i klikhændelser for operatørknapperne. Subrutinen vil se sådan ud:

Hvis bLeft er sandt, hvilket betyder, at brugeren lige har indtastet den venstre del af beregningen, sætter denne underrutine sOperator-variabel, vi oprettede i trin 5 for at svare til den indtastede operator, som sendes til AddOperator som strengen sNewOperator. Det andet trin er at indstille bLeft til False, fordi indtastningen af ​​en operator betyder, at brugeren er færdig med at indtaste venstre side af ligningen. For at håndtere indgange, der sætter flere operatorer sammen, såsom 9 * 3 * 2 * 6, skal vi kontroller også, om bLeft er falsk, hvilket betyder, at brugeren har indtastet en operatør, hvor vi forventede en lige med. Først kalder vi Click-hændelsen for lig-knappen (beskrevet i næste trin), som udfører beregningen og sætter tbResult til resultatet af det, der allerede er indtastet. Derefter rydder vi sHøjre, så brugeren kan indtaste det næste tal, og indstiller bLeft til False, så programmet ved, at vi indtaster højre side af udregningen næste.

Tilføj endelig et AddOperator-kald til klikhændelsen for hver operatørknap ved at bruge samme metode, som vi brugte i trin 7 til at oprette klikhændelser for talknapperne. Din kode til plusknappen vil se sådan ud:

Opret Klik-begivenheden for er lig-knappen, som er den mest komplekse kode i dette program. Opret underrutinestrukturen, som du gjorde for de andre knapper, ved at dobbeltklikke på lig-knappen på din formular. Din subrutine vil se sådan ud, når du har indtastet koden:

De første tre linjer med kode kontrollerer, om begge sider af beregningen er blevet indtastet sammen med en operatør. Hvis kun venstre side og en operator indtastes, kopieres værdien af ​​venstre side til højre, så vi kan efterligne standardregnerens adfærd til at håndtere en post som 9 * =, som multiplicerer 9 med sig selv for at få et resultat på 81. Resten af ​​koden kører kun, hvis venstre, højre og operatør er indtastet, og starter med at kopiere rækkerne af tal ind i vores iLeft og iRight dobbeltskrevne variable, som kan gøre det faktiske beregninger. Select Case-sætningen giver os mulighed for at køre forskellig kode afhængigt af hvilken operatør der blev indtastet, og udfører den faktiske beregning, og placerer resultatet i iResult. Til sidst opdaterer vi tekstboksen med resultatet, kopierer resultatet til sLeft, nulstiller sRight og indstiller bLeft = True. Disse sidste linjer giver os mulighed for at tage resultatet af beregningen og bruge det til at udføre en anden beregning.

Håndter de sidste tre betjeningsknapper: sqrt, % og 1/x. For klikhændelsen på kvadratrodsknappen vil din kode se sådan ud:

De første 11 linjer kode sørger for, at hvis vi ikke har en værdi indtastet for begge sider af ligningen, vi erstatter nul i stedet for at prøve at kopiere en tom streng til iLeft eller iRight, hvilket vil generere en fejl. De midterste linjer udfører kvadratrodsfunktionen på den aktuelle del af beregningen, enten til venstre eller højre. Til sidst vender vi de kontroller, vi gjorde i begyndelsen, så et nul kopieres som en tom streng tilbage til sLeft og sRight.

For procentknappen er koden ens, med én undtagelse: procenthandlingen kan kun udføres, hvis både venstre og højre side er indtastet.

Til sidst, hændelsen 1/x eller brøken, klik, som minder meget om koden ovenfor:

Tilføj kode for at håndtere C- og CE-knapperne. C sletter alle input til lommeregneren, hvorimod CE kun sletter det tal, der aktuelt indtastes.

Kør dit lommeregnerprogram og lav den udregning, du ønsker. Denne lommeregner kan nemt udvides til at håndtere flere operationer, mere komplekse beregninger eller endda til at være en videnskabelig lommeregner med lidt ekstra arbejde.

Tip

Hvis du støder på fejl, så tjek din kode linje for linje, med fokus på de linjer, som VB har kaldt ud som indeholdende fejl, og sammenlign den med koden ovenfor. Koden indeholdt i denne artikel er blevet fuldt testet til at være fejlfri, så kopiering af den trofast vil resultere i et funktionelt program. Hvis du bruger en tidligere version af Visual Basic, kan du støde på nogle problemer, hvor der er foretaget ændringer i sproget på tværs af versioner. Tidligere versioner af VB brugte for eksempel Math. Sqrt() i stedet for Math. Sqr() for at udføre en kvadratrodsoperation. Tjek referencerne for din specifikke version for at se, om der er behov for ændringer.