# calculating multiple input text with looping

## Recommended Posts

Hi All ...

I have a program to calculate the value in input text. I create 3 rows and 3 coloumns with looping.

Here is the format :

total1 val1.1 val1.2 val1.3

total2 val2.1 val2.2 val2.3

total3 val3.1 val3.2 val3.3

total1 = val1.1+val1.2+val1.3

...

My Question is how to calculate to get total1, total2, total3 with looping. I dont want to declare one by one.

I need help to solve this problem. Thank you.

##### Share on other sites

Can you show what code you have... it would be easier to help, as I am unsure exactly what you are asking.

##### Share on other sites

Hi DanWilli ...

it's my code :

```dim \$menustate, \$menustate1, \$menustate2, \$menustate3, \$menustate4, \$menustate5, \$menu, \$menu1, \$menu2, \$menu3, \$menu4, \$tot, \$tot2, \$tot3
Local \$btn, \$msg, \$i, \$a, \$a1, \$a2,\$a3, \$a4, \$a5, \$a6, \$a7

GUICreate("Expenses", 800, 500, -1, -1, -1)
GUICtrlCreateLabel("[1]",280, 80,50)
GUICtrlCreateLabel("[2]",355, 80,15)
GUICtrlCreateLabel("Total", 670, 95)

\$i = 1
\$a = 120    ;Date (left)
\$a1 = 120   ;Daily Meal (left)
\$a2 = 120   ;Hotel/Other Allow (left)
\$a3 = 120   ;Ticket Plane (left)
\$a4 = 120   ;Local Transport (left)
\$a5 = 120   ;Public Transport (left)
\$a6 = 120   ;Total (left)
\$a7 = 120   ;Remarks (left)

;\$i = 1
;While \$i <= 31
For \$i = 1 To 3
GUICtrlCreateLabel(\$i, 10, \$a)
\$a = \$a + 14
\$menu = GUICtrlCreateInput("", 250, \$a1 , 70, 15 )
\$a1 = \$a1 + 14
\$menu1 = GUICtrlCreateInput("", 330, \$a2 , 70, 15 )
\$a2 = \$a2 + 14

GUICtrlCreateInput("", 650, \$a6 , 70, 15 )
;MsgBox (0,"", \$tot )
GUICtrlSetBkColor(-1, 0xE0E0E0 )
\$a6 = \$a6 + 14
Next
\$btn = GUICtrlCreateButton("Calculate", 650, 200, 70, 20)

GUISetState()

\$msg = 0
While \$msg <> \$GUI_EVENT_CLOSE
\$msg = GUIGetMsg()
Select
Case \$msg = \$GUI_EVENT_CLOSE
Exitloop
Case \$msg = \$btn

\$ax = 120

; MY PROBLEM IN HERE
for \$i = 1 To 3

;GUICtrlCreateInput("", 650, \$a6 , 70, 15 )
GUICtrlCreateInput(\$tot3, 650, \$ax, 70, 15 )
GUICtrlSetBkColor(-1, 0xE0E0E0 )
\$ax = \$ax + 14

Next

;ExitLoop
EndSelect
WEnd```

Fill coloumn [1] and [2] then click calculate button. The value is wrong. Have idea for this problem?

##### Share on other sites

Ok, I just changed some parts of your code (not a rewrite) so that you can get the basic idea. -

What I did was to change to box assignments to arrays, so that you have a record of all the handles for the controls. (Currently you are only keeping track of the last handle.

```dim \$menustate, \$menustate1, \$menustate2, \$menustate3, \$menustate4, \$menustate5, \$menu, \$menu1, \$menu2, \$menu3, \$menu4, \$tot, \$tot2, \$tot3
Local \$btn, \$msg, \$i, \$a, \$a1, \$a2,\$a3, \$a4, \$a5, \$a6, \$a7
#include <GUIConstantsEx.au3>

GUICreate("Expenses", 800, 500, -1, -1, -1)
GUICtrlCreateLabel("[1]",280, 80,50)
GUICtrlCreateLabel("[2]",355, 80,15)
GUICtrlCreateLabel("Total", 670, 95)

\$i = 1
\$a = 120    ;Date (left)
\$a1 = 120   ;Daily Meal (left)
\$a2 = 120   ;Hotel/Other Allow (left)
\$a3 = 120   ;Ticket Plane (left)
\$a4 = 120   ;Local Transport (left)
\$a5 = 120   ;Public Transport (left)
\$a6 = 120   ;Total (left)
\$a7 = 120   ;Remarks (left)

;\$i = 1
;While \$i <= 31
For \$i = 1 To 3
GUICtrlCreateLabel(\$i, 10, \$a)
\$a = \$a + 14
\$menu[\$i] = GUICtrlCreateInput("", 250, \$a1 , 70, 15 )
\$a1 = \$a1 + 14
\$menu1[\$i] = GUICtrlCreateInput("", 330, \$a2 , 70, 15 )
\$a2 = \$a2 + 14

\$totalbox[\$i] = GUICtrlCreateInput("", 650, \$a6 , 70, 15 )
;MsgBox (0,"", \$tot )
;~         GUICtrlSetBkColor(-1, 0xE0E0E0 )
GUICtrlSetState(-1,\$GUI_disable)
\$a6 = \$a6 + 14
Next
\$btn = GUICtrlCreateButton("Calculate", 650, 200, 70, 20)

GUISetState()

\$msg = 0
While \$msg <> \$GUI_EVENT_CLOSE
\$msg = GUIGetMsg()
Select
Case \$msg = \$GUI_EVENT_CLOSE
Exitloop
Case \$msg = \$btn

\$ax = 120

; MY PROBLEM IN HERE
for \$i = 1 To 3

;GUICtrlCreateInput("", 650, \$a6 , 70, 15 )
;~                 GUICtrlCreateInput(\$tot3, 650, \$ax, 70, 15 )
GUICtrlSetData(\$totalbox[\$i],\$tot3)
;~                 GUICtrlSetBkColor(-1, 0xE0E0E0 )
\$ax = \$ax + 14

Next

;ExitLoop
EndSelect
WEnd```

Like I said I just commented out some unnecessary code and changed some stuff, the idea was to keep your code as close to your existing code as possible.

Just as a sidenote, you don't have to declare all the variables at the start of the script, they can be declared with values as you need them. (Of course it depens if they are used in a function or global etc.)

Edited by hawky358

##### Share on other sites

Hi Hawky

Thank U so much ... It's work

##### Share on other sites

Changed a few things.

```Local \$btn, \$msg, \$i, \$idMenu[12]

GUICreate("Expenses", 800, 500, -1, -1, -1)
GUISetFont(12, 800)
GUICtrlCreateLabel("[1]", 160, 80, 50, 20)
GUICtrlCreateLabel("[2]", 240, 80, 50, 20)
GUICtrlCreateLabel("[3]", 320, 80, 50, 20)
GUICtrlCreateLabel("Total", 510, 95, 100, 20)

For \$i = 0 To 2
GUICtrlCreateLabel("[" & \$i + 1 & "]", 10, \$i * 20 + 120, 120, 20)

\$idMenu[\$i * 4 + 0] = GUICtrlCreateInput("", 140, \$i * 20 + 120, 70, 20)
\$idMenu[\$i * 4 + 1] = GUICtrlCreateInput("", 220, \$i * 20 + 120, 70, 20)
\$idMenu[\$i * 4 + 2] = GUICtrlCreateInput("", 300, \$i * 20 + 120, 70, 20)
\$idMenu[\$i * 4 + 3] = GUICtrlCreateInput("", 500, \$i * 20 + 120, 70, 20)
GUICtrlSetBkColor(-1, 0xE0E0E0)
Next

\$btn = GUICtrlCreateButton("Calculate", 650, 200, 120, 20)

GUISetState()

While \$msg <> -3
\$msg = GUIGetMsg()
Switch \$msg
Case -3
ExitLoop
Case \$btn
For \$i = 3 To UBound(\$idMenu) - 1 Step 4
Next
EndSwitch
WEnd```

## Create an account

Register a new account