Cita: El problema viene que no me reconoce la variable compra porque está inicializada en un evento diferente
Las variables que definas en un método sólo pueden ser usadas en ese método, como las que definas dentro de un bucle sólo podrán ser usadas dentro de ese bucle. Ese sería el ámbito, alcance o scope de definición de la variable. Si deseas usar una variable en varios métodos entonces el alcance de esa variable deberia incluir a esos métodos.