Para resolver esos asuntos, se adjunta información que se actualiza cuando cambia.
Así sería útil por ejemplo disponer de un a enumeración sociada con cada operación.
Enumeracion Operaciones
Ninguno = -2 // ningún operador ha sido seleccionado aún.
Borrar = -1 //para borrar todo, incluído los operandos.
Resultado = 0
Suma =1
Resta = 2
Multiplica = 3
Divide = 4
...
Fin enumeracion
// Ovbiamente los nombres y valores asigna los que sean de tu preferencia,
o según el código permita simplificarlo...
Se debe tener una variable donde guardar la operación ...
Variable Op de tipo Operaciones
Ahora cuando se pulse el botón correspondiente (o la opción, según sea el caso), simplemente actualizas el dato de la variable Op con el operador que le corresponde:
Si tienes un botón y cada uno con su código....
BotonSuma_Pulsado(parametros...)
Op = Suma
Fin BotonPulsado
BotonResultado_Pulsado(parametros...)
Op = Resultado
Fin BotonPulsado
Si tienes opciones (o botones), pero todos derivan el evento al mismo manejador...
OpcionSuma_Seleccionado, OpcionResta_Seleccionado, OpcionResultado_Seleccionado, .... (parametros...)
Seleccionar Opcion.name <---- diferenciamos en este caso el operador, según el nombre del control seleccionado.
caso "OpcionSuma"
Op = Suma
caso "OpcionResta"
Op = Resta
Caso "OpcionResultado"
Op = resultado
Caso ....
...
Fin Seleccion
Fin OpcionSeleccionado
Finalmente haces los cálculos:
Funcion Calcular(Var1, Var2, Op)
Seleccionar Op
caso Suma
Var1 = Var1 + Var2
Caso Resta
Var1 = Var1 - Var2
....
....
Caso Resultado
Mostrar Var1
Fin Seleccion
Devolver Var1
Fin funcion
Naturalmente este modo exige tener disponibles los operandos antes de calcular. Y en cambio no impone nada respecto del orden en que se obtienen...
...Cuando sería más acorde que se siga el orden natural en que se hacen las operaciones:
1º introducir un operando, luego el operador, luego el 2º operando, Tras esto se mandaría a calcular...
Y entonces luego como el resultado de operar con ambos operandos se reúnen en el primero, tras aplicar un operador, vuelves a tener disponible poder introducir otro operador y otro operando.
Solo si se pulsa el "=", entonces muestras el resultado que se almacena en Var1...
Y si se pulsa el de 'Borrar', dejas desierto ambos operandos y el operador.
Puede ser distinto y más o menos eficiente, pero como no has dado apenas detalles, no es conveniente extenderse ni más ni de otro modo.
-------------------------------------------------------------------
p.d.: Me explico mejor, que si no puede quedar confuso:
- Si se introducen en orden: operando1 + operador + operando2 , se hace necesario que el cáclulo se ejecute tras pulsar un nuevo operador, sea cual sea, pero antes de almacenar éste. Y entonces es preciso cambiarel código (pongo por ejemplo el de un botón) así:
BotonSuma_Pulsado(parametros...)
Si Op es mayor o igual a 0
Var1 = Calcular(Var1, Var2, Op)
Fin si
Op = Suma
Fin BotonPulsado
Así puede seguirse añadiendo más operandos y más operadores.
- Pero si no se introducen en orden, será preciso que cuando se pulsa un operador el operador se actualiza, y solo cuando el operador sea "=", es cuando se procede a realizar el cálculo, incluso aunque no se hayan introducido uno o los dos operandos, pues se enteinde en ese caso que vale/n 0. y el código sería más bien:::
OpcionSuma_Seleccionado, OpcionResta_Seleccionado, OpcionResultado_Seleccionado, .... (parametros...)
Seleccionar Opcion.name <---- diferenciamos en este caso el operador, según el nombre del control seleccionado.
caso "OpcionSuma"
Op = Suma
caso "OpcionResta"
Op = Resta
Caso ....
Op = ...
Caso "OpcionResultado"
Var1 = Calcular(Var1, Var2, Op) <----- Aquí el cambio sustancial...
Fin Seleccion
Fin OpcionSeleccionado