PDA

Ver la Versión Completa : Llamar un procedimiento desde otro


martini002
02-06-2012, 04:12:15
Saludos Comunidad,

He estado haciendo algunos ejercicios de la universidad
y me he encontrado con un particular problema,
como siempre antes de preguntar he buscado y leido sobre el tema
pero sin la suerte de encontrar algo que realmente me funcione,

Tengo en mi codigo un procedimiento


procedure TFormEjercicio1.Image1Click(Sender: TObject);


el cual ejecuta algunas cosas
pero como esa imagen la converti en boton
tambien tiene un texto, que al ser clickeado no hace nada
entonces quiero en vez de copiar todo el procedimiento dentro del nuevo


Procedure TFormEjercicio1.Label3Click(Sender: TObject);


Me gustaria conocer la forma de llamar al primer procedimiento desde el segundo,
les dejo adicional el codigo completo sobre este sencillo programita

Espero esten bien
Best,
Martin



unit Ejercicio1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;

type
TFormEjercicio1 = class(TForm)
FndPrncEjer1 : TImage;
IngresarNumero : TEdit;
Label1 : TLabel;
Label2 : TLabel;
Image1 : TImage;
Label3 : TLabel;
SumaPares : TEdit;
ProductoM5 : TEdit;
Label4 : TLabel;
Label5 : TLabel;
Label7: TLabel;
procedure Image1Click(Sender: TObject);
procedure Label3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
FormEjercicio1 : TFormEjercicio1;
I : Integer;
Vector : Array [1..10] of Integer;
implementation

{$R *.dfm}

Procedure InicializarVector;
Var
I :Integer;
Begin
for I := 1 to 10 do
Vector[I]:=0;
End;

procedure TFormEjercicio1.Image1Click(Sender: TObject);
var
Num, Suma, Producto : Integer;

begin
Num:=StrToInt(IngresarNumero.Text);
if Num > 0 then
if I <= 9 then
if Num MOD 5 = 0 then
Begin
Vector[I]:=Num;
I:=I+1;
Producto:=StrToInt(ProductoM5.Text)*Num;
ProductoM5.Text:=IntToStr(Producto);
Label7.Caption:='Restan '+IntToStr(10-I)+' Numeros';
IngresarNumero.Text:='';
End
Else
if Num MOD 2 = 0 then
Begin
I:=I+1;
Suma:= StrToInt(SumaPares.Text)+Num;
SumaPares.Text:=IntToStr(Suma);
Label7.Caption:='Restan '+IntToStr(10-I)+' Numeros';
IngresarNumero.Text:='';
End
Else
Begin
I:=I+1;
Label7.Caption:='Restan '+IntToStr(10-I)+' Numeros';
IngresarNumero.Text:='';
End
Else
Begin
ShowMessage('Solo 10 Numeros Maximo');
End
Else
Begin
ShowMessage('Numero NO Mayor a 0');
End;
End;

procedure TFormEjercicio1.Label3Click(Sender: TObject);
begin
procedure Image1Click(Sender: TObject);// Es lo que he intentado hacer
end;

End.

ecfisa
02-06-2012, 05:37:14
Hola martini002.


Me gustaria conocer la forma de llamar al primer procedimiento desde el segundo


Ejemplo:

...
procedure TForm1.Image1Click(Sender: TObject);
begin
if Sender is TLabel then
ShowMessage(TLabel(Sender).Name); // muestra Label3 cuando se invoca desde Label3Click
end;

procedure TForm1.Label3Click(Sender: TObject);
begin
Image1Click(Sender)
end;
...

Como ves, no estabas tan lejos... :)

Saludos

martini002
02-06-2012, 05:58:12
:O

Funciona!
Mil gracias Ecfisa, gracias por tu tiempo,
haz levantado mi animo :)

Saludos