Öppna Visual Basic 6 och välj "Standard EXE" från den nya projektmenyn. Du kommer att se ett tomt formulär visas på skärmen.
Byt namn på ditt projekt och ditt formulär genom att klicka på "Project1" till höger på skärmen, i projektlistan, och ange ett nytt namn på raden "Namn" i rutan Egenskaper, som ska visas under projektlistan av standard. Tryck på "Enter" för att acceptera det nya namnet. Gör samma sak för ditt formulär (ett föreslaget formulärnamn är "CalculatorUI"), se till att ange ett liknande namn i egenskapen "Caption" också, vilket kommer att ändra texten i formulärets översta fält. Spara projektet i en ny mapp på din dator.
Lägg till knappar och en textruta i formuläret. Lägg först till en textruta, som kommer att vara där siffrorna som anges i räknaren visas, såväl som resultaten av beräkningarna. Gör detta genom att välja TextBox-knappen i verktygsfältet till vänster på skärmen och sedan dra med musen den storlek och plats du önskar för TextBox. När du har placerat textrutan kan du ändra storlek och plats genom att dra den till en annan plats i formuläret eller genom att dra handtagen (de små rutorna) längs textrutans kant. Se till att ändra följande rader i fönstret Egenskaper, med textrutan markerad: "(Namn)" = tbResult, "Alignment" = 1- Högerjustera, "Dataformat" = (klicka på knappen "..." för att välja) Nummer, "Låst" = Sant och "Text" = 0.
Välj kommandoknappen i verktygsfältet och skapa den första knappen på samma sätt som du skapade textrutan för att lägga till knappar. Som referens, använd Windows-kalkylatorn i standardvyn (Program > Tillbehör > Kalkylator) som grund för din kalkylatorlayout, och utelämna knapparna "MC", "MR", "MS" och "M+". På varje knapp ändrar du följande egenskaper (med "+"-knappen som exempel): "(Namn)" = btnPlus, "Caption" = +. Gör samma sak för resten av räknarens knappar och spara sedan ditt arbete. Ditt formulär ska nu likna exemplet som visas här.
Lägg till koden. Observera att om dina knappar och textruta inte heter samma namn som koden som anges här förväntar dig, behöver du för att ändra namnen så att de matchar dina knappar och textruta, eller ändra dina knappar och textruta för att matcha detta koda. Först måste vi skapa några variabler för att bearbeta indata från räknaren:
Dim sLeft As String, sRight As String, sOperator As String Dim iLeft As Double, iRight As Double, iResult As Double Dim bLeft As Boolean
Varje beräkning består av fyra delar: ett tal till vänster om operatorn (sLeft, iLeft), en operator (sOperator), ett tal till höger om operatorn (sRight, iRight) och ett resultat (iResult). För att spåra om användaren anger vänster eller höger nummer måste vi skapa en boolesk variabel, bLeft. Om bLeft är sant, skrivs den vänstra sidan av beräkningen in; om bLeft är falskt, skrivs höger sida in.
Initiera variabeln bLeft. Vi gör det genom att skapa en Form_Load-underrutin, som du antingen kan skriva som listad här eller automatiskt skapa genom att dubbelklicka på någon del av formuläret som inte täcks av en knapp eller textruta. Inuti funktionen måste vi ställa in bLeft till True, eftersom det första numret som anges kommer att vara den vänstra delen:
Skapa en subrutin som kommer att hantera klickningen av någon av sifferknapparna. Vi skapar detta som en subrutin eftersom vi använder identisk kod för varje knapp, och att använda en subrutin innebär att vi inte behöver upprepa samma kod tio gånger. Ange följande under Form_Load-subrutinens slutunderrad:
Som du kan se tar den här funktionen en strängparameter, sNumber, som kommer att innehålla numret som användaren har klickat på. Om bLeft är sant, läggs detta nummer till i strängen som representerar numret som skrivs in, sLeft, och textrutan, tbResult, uppdateras för att visa det nya numret. Om bLeft är falskt utförs samma operation med sRight istället.
Slutligen, skapa en Click-händelsefunktion för varje nummer som anropar vår AddNumber-subrutin. Du kan göra detta enkelt genom att dubbelklicka på varje sifferknapp, vilket skapar subrutinstrukturen åt dig. Lägg sedan till samtalet i AddNumber, ersätt numret inom citattecken med numret som är kopplat till knappen. För nollknappen kommer din kod att se ut så här:
På samma sätt, för en knapp, kommer din kod att se ut så här:
Hantera operatörerna: plus, minus, tider och dividera. Vi kommer att göra detta som förra steget och skapa en subrutin som anropas i klickhändelserna för operatörsknapparna. Subrutinen kommer att se ut så här:
Om bLeft är sant, vilket betyder att användaren precis har angett den vänstra delen av beräkningen, ställer denna subrutin in sOperator-variabel vi skapade i steg 5 för att vara lika med den angivna operatorn, som skickas till AddOperator som strängen sNewOperator. Det andra steget är att ställa in bLeft till False, eftersom inmatningen av en operator betyder att användaren är klar med att gå in på vänster sida av ekvationen. För att kunna hantera poster som sammanfogar flera operatorer, till exempel 9 * 3 * 2 * 6, måste vi kontrollera också om bLeft är falskt, vilket betyder att användaren har angett en operatör där vi väntade en lika. Först anropar vi Click-händelsen för lika-knappen (beskrivs i nästa steg), som gör beräkningen och ställer in tbResult till resultatet av det som redan har matats in. Sedan rensar vi sRight så att användaren kan ange nästa nummer och ställer in bLeft till False så att programmet vet att vi går in på höger sida av beräkningen nästa.
Lägg slutligen till ett AddOperator-anrop till klickhändelsen för varje operatörsknapp, med samma metod som vi använde i steg 7 för att skapa klickhändelserna för sifferknapparna. Din kod för plusknappen kommer att se ut så här:
Skapa klickhändelsen för equals-knappen, som är den mest komplexa koden i det här programmet. Skapa subrutinstrukturen som du gjorde för de andra knapparna genom att dubbelklicka på lika-knappen i ditt formulär. Din subrutin kommer att se ut så här när du har skrivit in koden:
De första tre raderna med kod kontrollerar om båda sidorna av beräkningen har angetts tillsammans med en operatör. Om endast den vänstra sidan och en operator anges kopieras värdet på den vänstra sidan till höger, så att vi kan härma standardräknarens beteende för att hantera en post som 9 * =, som multiplicerar 9 med sig själv för att få resultatet 81. Resten av koden körs endast om vänster, höger och operatör anges, och börjar med att kopiera strängarna av siffror i våra iLeft och iRight dubbelskrivna variabler, som kan göra det faktiska beräkningar. Select Case-satsen låter oss köra olika kod beroende på vilken operatör som angavs, och utför själva beräkningen och placerar resultatet i iResult. Slutligen uppdaterar vi textrutan med resultatet, kopierar resultatet till sLeft, återställer sRight och ställer in bLeft = True. Dessa sista rader låter oss ta resultatet av beräkningen och använda det för att utföra ytterligare en beräkning.
Hantera de tre sista operationsknapparna: sqrt, % och 1/x. För klickhändelsen för kvadratrotsknappen kommer din kod att se ut så här:
De första 11 kodraderna ser till att om vi inte har ett värde angett för någon sida av ekvationen, vi ersätter noll istället för att försöka kopiera en tom sträng till iLeft eller iRight, vilket genererar en fel. De mittersta linjerna utför kvadratrotfunktionen på den aktuella delen av beräkningen, antingen vänster eller höger. Slutligen vänder vi om kontrollerna vi gjorde i början så att en nolla kopieras som en tom sträng tillbaka till sLeft och sRight.
För procentknappen är koden liknande, med ett undantag: procentoperationen kan endast utföras om både vänster och höger sida anges.
Slutligen, händelsen 1/x, eller bråkdelen, Click, som är mycket lik koden ovan:
Lägg till kod för att hantera C- och CE-knapparna. C raderar all inmatning till räknaren, medan CE endast raderar det nummer som för närvarande matas in.
Kör ditt kalkylatorprogram och gör vilken beräkning du vill. Denna miniräknare kan enkelt byggas ut för att klara fler operationer, mer komplexa beräkningar eller till och med vara en vetenskaplig miniräknare med lite extra arbete.
Dricks
Om du stöter på fel, kontrollera din kod rad för rad, fokusera på raderna som VB har ropat ut som innehåller fel, och jämför den med koden ovan. Koden i den här artikeln har testats fullständigt för att vara felfri, så att kopiera den troget kommer att resultera i ett fungerande program. Om du använder en tidigare version av Visual Basic kan du stöta på vissa problem där ändringar har gjorts i språket i olika versioner. Tidigare versioner av VB använde till exempel Math. Sqrt() istället för Math. Sqr() för att utföra en kvadratrotoperation. Kontrollera referenserna för din specifika version för att se om några ändringar är nödvändiga.