Delphi - Para Diego Romero

 
Vista:

Para Diego Romero

Publicado por Sonia (5 intervenciones) el 14/02/2003 16:00:07
procedure TFrmPrincipal.IniciarDetener;
var
i:Integer;
begin
for i:=0 to ComponentCount - 1 do
if (Components[i] is TButton) then
Begin
If (Components[i] as TButton).Caption ='Enable' then
Begin
FrmActividad.Edit2.Text:= (Frmp.Components[1] as TEdit).Text;
FrmActividad.p.text:=IntToStr(I);
FrmActividad.ini.Enabled:=true; //botones
FrmActividad.Fin.Enabled:=False;//botones
FrmActividad.Show;
End
else Begin
If (Components[i] as TButton).Caption ='Disable' then
Begin
FrmActividad.edit2.Text:=(Frmp.Components[i] as TEdit).Text;
FrmActividad.p.text:=IntToStr(I);
FrmActividad.ini.Enabled:=false;
FrmActividad.Fin.Enabled:=true;
FrmActividad.Show;
end;
End;
End;

Bueno cuando voy alformulario 2 frmactivida.. me muestra en la caja de texto P el nuemero 19.. y yo tengo 19 botones.

yo quiero que saber cual fue el boton que presione o que envio esa informacion . por ejm.. de los 19 fue el boton 3 el que presione... comprendes¡? bueno esa es la idea.. pero con el codigo es como si cuenta todos y desde 0 hasta los 19 que haga eso.
yo quiero que sepa que boton fue el que llamo el codigo y de acuerdo al indixe se guarde en la variable I y haga yde ahi bueno que haga lo que tiene que hacer.. espero me entiendas.. bueno un besooo enormee
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Para Diego Romero

Publicado por mamcx (533 intervenciones) el 14/02/2003 16:42:01
Para llegar a TFrmPrincipal.IniciarDetener debes estar llamando desde un evento OnClik de un Boton (Si todos los 19 botones lo unico que hacen es llamar a TFrmPrincipal.IniciarDetener sin hacer nada mas, puedes asignar el mismo OnClik a todos, por si no sabias). El evento OnClick envia un parametro: Sender. Si le haces un TypeCast, veras que SENDER ES el boton que hizo click:

If Sender is TButon then (Sender as TButton).Caption='Yo Fui!';

Entonces, puedes:

Enviar como parametro Sender a TFrmPrincipal.IniciarDetener (Ej: TFrmPrincipal.IniciarDetener((Sender as TButton)); para que de una vez pase como un boton) y NO LE HAGAS un Button.Free!

Y listo.

Claro?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Para Diego Romero

Publicado por Diego Romero (636 intervenciones) el 14/02/2003 23:39:49
Amiga Sonia, el colega mamcx está en lo correcto. Interpreto que quieres saber desde el Form1 qué botón se hizo click en el Form2, tal como escribió mamcx debes hacer uso del parámetro Sender del evento OnClick del Form2.
Primero crea el evento OnClick de cualquiera de los Buttons, para el resto asignales este mismo evento, desde el Object Inspector, tab Events despliega el combo del evento OnClick, selecciona el unico que debe de haber.
En el cuerpo del evento escribe:
Form1.IniciarDetener(Sender as TButton);
Ahora en el Form1 el procedimiento IniciarDetener debe quedar algo así:
procedure TForm1.IniciarDetener(Btn:TButton);
begin
Btn.Caption:='Me hiciste Click!';
end;
Si deceas saber especificamente cuál botón puedes preguntar algo así
if Btn.Name='Button1' then ShowMessage('Click en el Boton 1');
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Muack a Dieguito y thank mamcx

Publicado por Sonia (3 intervenciones) el 15/02/2003 05:36:02
Gracias por la ayuda. chicos que haria sin uds... espero me puedan segur ayudando cuando me haga falta... bueno un saludo a uds.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar