Tema: Calculadora
Ver Mensaje Individual
  #7  
Antiguo 17-05-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Reputación: 25
Delphius Va camino a la fama
sebaguillen, con respecto a la última recomendación te la explico mejor.
Como el dódigo de los botones que corresponden a los números es el mismo, ya que en definitiva, lo único que se cambia es el caption que se pasa, yo me valgo de una de las ventajas que tiene Delphi: los eventos compartidos.
¿Que significa esto? Que varios controles pueden hacer uso del mismo evento.

Pones este código en evento onClick del botón 0:

Código Delphi [-]
procedure TForm1.B0Click(Sender: TObject);
begin
  Edicion.Text := IntToStr((Sender as TButton).Tag);
end;

Te explico: El parámetro sender es del tipo TObjet y representa al objeto que envia la orden. Con la orden (Sender as TButton) restringo el tipo de dato y me aseguro de que el objeto sea del tipo TButton.
La propiedad Tag es una propiedad comodín que se le incorpora a los controles y no tiene uso definido... se puede usar para lo que quieras. Valiendome de que es tipo integer, almaceno en ésta el valor del botón. Es decir que para el botón 1, el valor del tag será 1.

Al decir (Sender as TButton).Tag lo que hago es obtener el Tag si el objeto que envia la orden es un botón Y devuelvo dicho valor en el TEdit.

Como verás, en ninguna parte del código pregunto si el botón es el botón 1, 5 o 0... o cualquiera. La magia está en el Tag y el compartir dicho botón. Ya te sigo comentando... esta magia...

Ahora, para cada botón (desde el 1 al 9) haz lo siguiente:
1. Seleccionalo.
2. En el inspector de propiedades busca el evento OnClick. Haz click en la fecha del combo. Te aparecerá en la lista el evento ButtonoClick. Seleccionalo.

Esto, que hiciste, es asignar un evento compartido.

Entonces, la magia consiste ahora en que cuando se pulse cualquier botón (del 0 al 9) se aplique un solo evento. Por ejemplo: se pulsa en botón 5 (Button5). El parámetro sender contendrá el valor "Button5" como Button5 es del tipo TButton se extrae el valor del Tag, que le corresponde, es decir 5.

Es sencillo... y como verás... puede ser muy util.

Con respecto a lo segundo: Si deseas que se escriba en el Edit sin tener el foco en él y que se reciba la orden desde el teclado... debes hacer lo siguiente:
1. Poner la propiedad KeyPreviuw del formulario en true.
2. En el evento onKeyPress del formulario pones el código necesario para que el Edit copie dicho valor.

Espero que se entienda.
Saludos,

PD: Si tienes más dudas, ya sabes...
PD2: Me alegro que hayas solucionado el problema.
__________________
Delphius
[Guia de estilo][Buscar]

Última edición por Delphius fecha: 17-05-2007 a las 05:30:20.
Responder Con Cita