Sumas en inputs GRANDES

Aquí puedes preguntar o compartir tus dudas y conocimientos acerca del programa
Hola tengo una duda un poco leve :D tengo 30 inputs en mi aplicacion (Muchos :S) entones necesito se sumen 2 y den en otro como resultado... (Ej. Input 1 + Input 2 = input 3, Input 4 + Input 5 = input 6. y asi hasta el 30) ¿hay alguna manera de achicar este codigo? (Todo por medio de un solo Xbutton)

Dejo mi apz

Código: Seleccionar todo

http://www.mediafire.com/?jwa3660fqe3juo2
(En el caso de la APZ van por nombres Pa + Pa1 = PAr)

Haber si me pueden ayudar :D
Bueno yo asi a primeras lo haria de esta manera , para utilizar el codigo solo tienes que seguir esta regla a la hora de nombrar los inputs se pueden llamar como kieras pero con terminacion 1,2,3, osea:

Input del valor 1 = nombre_que_quieras1
Input del valor 2 = nombre_que_quieras2
Input de resultado = nombre_que_quieras3

Entonces en el botón de transformar:
tObjects = Page.EnumerateObjects();-- obtenemos tabal con todos los nombre de los objetos d ela pagina.

bEmty = false;-- declaramos una variable (vacio) en falso

for i,v in pairs(tObjects) do-- recorremos la tbl de objetos

	Type = Page.GetObjectType(v);-- obtenemos que typo son (Input,ListBox,label,etc...)
	
	if Type == 7 then -- Si (v = Nombre de objeto)es Input
	
		if (String.Right(v, 1)== "1") or (String.Right(v, 1)== "2") then -- Miramos si terminan con 1 o 2 , 3 no sirve porque es el de resultados.
		
			stxt = Input.GetText(v);-- Obtenemos texto del input
			
			if stxt == "" or type(tonumber(stxt))~= "number" then--Si esta vacio o es diferente a numero ( previa conversion stringToNumber).
			
				bEmty = true;-- Declaramos bEmty en true
			end

		end
	end
end

if not bEmty then -- si bEmty no ha sido declarada en true en ningun input de la tabla , es que todos los campos son correcto ( numeros).

	-- Efectuamos operacion (1+2=3)
	Input.SetText("PA3",tonumber(Input.GetText("PA1")) + tonumber(Input.GetText("PA2")))
	Input.SetText("PM3", tonumber(Input.GetText("PM1")) + tonumber(Input.GetText("PM2")))
	Input.SetText("Iniciativa3", tonumber(Input.GetText("Iniciativa1")) + tonumber(Input.GetText("Iniciativa2")))
	Input.SetText("Prospeccion3", tonumber(Input.GetText("Prospeccion1")) + tonumber(Input.GetText("Prospeccion2")))
	
else-- en caso que se haya declarado bemty alguna vez en true , es que algun campo no esta correcto , mensage...

 	Dialog.Message("Error", "Hay campos sin rellenar o no son números", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
 	
end
Yo en este ejemplo solo he usado 4 grupos de tres inputs para hacerlo mas corto , lo puedes alargar lo que quieras siempre que sigas el patrón de nombres que te he dicho.

Tiene algún filtrillo para detectar si los campos están vacíos o no son números.

Supongo que habrá código para hacerlo mas simple si cabe pero yo he sacado este en un ratillo y me parece valido.

te he subido el ejemplo:

HIDE: ON
Hidebb Message Hidden Description



Nota: en el ejemplo no hay explicaciones (sorry),copia el código de aquí.
Gracias me ah rulado de maravilla :D
y si kiero que solo se sumen los que tengan un check box chekeado? (Ejemplo: Pa1 + Pa2 = Pa3 chekbox chekeado se suma, Chekbox no chekeado en el Pa3 aparece No especificado)
Facil ;)
tObjects = Page.EnumerateObjects();
bEmty = false;
for i,v in pairs(tObjects) do
	Type =Page.GetObjectType(v);
	if Type == 7 then 
		if (String.Right(v, 1)== "1") or (String.Right(v, 1)== "2") then 
			stxt = Input.GetText(v);
			if CheckBox.GetChecked(String.TrimRight(v,"12")) then-- si el check correspondiente esta true , seguimos..
				if stxt == "" or type(tonumber(stxt))~= "number" then
					bEmty = true;
				
				end
			end

		end
	end
end





if not bEmty then

	if CheckBox.GetChecked("PA") then Input.SetText("PA3",tonumber(Input.GetText("PA1"))+tonumber(Input.GetText("PA2"))) end
	if CheckBox.GetChecked("PM") then Input.SetText("PM3", tonumber(Input.GetText("PM1"))+tonumber(Input.GetText("PM2"))) end
	if CheckBox.GetChecked("Iniciativa") then Input.SetText("Iniciativa3", tonumber(Input.GetText("Iniciativa1"))+tonumber(Input.GetText("Iniciativa2"))) end
	if CheckBox.GetChecked("Prospeccion") then Input.SetText("Prospeccion3", tonumber(Input.GetText("Prospeccion1"))+tonumber(Input.GetText("Prospeccion2"))) end
else
 	Dialog.Message("Error", "Hay campos sin rellenar o no son números", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
end
Fíjate en los cambios e intenta entender el script , cualquier duda pregunta ;)
ooo gracias >.< lo habia intentado haciendo el if get.cheked con el set text.
if CheckBox.GetChecked("PA") then
Input.SetText("PA3",tonumber(Input.GetText("PA1")) + tonumber(Input.GetText("PA2")))
else
Input.SetText("PA1", "No utilizado");
Input.SetText("PA2", "No utilizado");
Input.SetText("PA3", "No utilizado");
end
ya vi mas o menos en que estaba mal :D

Otra Duda :S (yo y mis dudas XD) en caso de que el valor de uno aumentara otro... ¿como le haria?
Digamos que 10 de suerte dan 1 en prospeccion como le hago para que cada 10 de suerte a la prospeccion de le aumenten uno. (a la suerte no se le restan 10, solo se aumenta ese 1 a la prospeccion y solo es en el caso de la suerte y la prospeccion) (Ej. 100 en suerte = +10 en prospeccion.)
Bueno seria algo asi al final del codigo :
s = Input.GetText("suerteresultado");--Obtenemos text del resultado de suerte.
p = Input.GetText("Prospeccion3");--Obtenemos text del resultado de prospeccion.
if (s ~= "") and (tonumber(s) >= 10) then-- comprobamos que no este vacio (suerte) ni sea menor de 10.
	n = (tonumber(s)/10);-- Dividimos suerete entre 10 para obtener el aumento de propección.
	if p == "" then --Si prospeccion esta vacio es 0.
		p = 0;
	else-- En caso contrario...
	p= n + tonumber(p);-- p(prospeccion) es igual al numero que tenia + n(aumento de suerte).
	end
		Input.SetText("Propeccion3", p);-- Aplicamos resultado
end
Prueva haber si esto te funciona ( no lo he probado ) :beta:
O.O yo lo estaba intentando de otra manera xD con razon >.<

Descargando

gracias
:pc: :pc: :pc: :pc:
thank you
Gracias rfax ;)
grazie
suis curieux de voir le résultat
gracias :pc: :pc: