Delphi - Crear eventos en tiempo de ejecucion

 
Vista:

Crear eventos en tiempo de ejecucion

Publicado por Currelas (6 intervenciones) el 25/06/2004 13:21:38
Buenos dias

Tengo el siguiente problema, creo una serie de botones en tiempo de ejecucion a estos puedo cambiarle sus propiedades en tiempo de ejecucion, pero no logro darles eventos en tiempo de ejecucion.
Como por ejemplo en evento OnClick().
He estado buscando y no he encontrado nada que me funcione.
Agradeceria cualquier ayuda.

Un saludo
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:Crear eventos en tiempo de ejecucion

Publicado por Currelas (6 intervenciones) el 25/06/2004 13:36:53
Especificamente el codigo es este, por si le puede ayudar a alguien mas:
------------------------------------------------------------------------------------------
Var abotones: array of TButton; //define el array de botones
Var alabels: array of TLabel;
i,cantidad:integer; // indice y numero de botones a crear
posx,posy:integer; // posiciones en la forma
begin
PosY:=350; //La del eje de la Y
PosX:=100; //La posicion en el eje de la X
cantidad:=3;
SetLength(abotones,cantidad); // Creo el array de botones
SetLength(alabels,cantidad); // Creo el array de etiquetas
for i:=0 to cantidad-1 do // ciclo de creación
begin
abotones[i]:=TButton.Create(self); // crea el TEdit
alabels[i]:=TLabel.Create(self);
with abotones[i] do
begin
parent :=Form1; // indico el control que contiene el componente
Top:=PosY; // posicion Y en pantalla
Left:=PosX; // posicion X en pantalla
Visible:=true;
//Aqui es donde deberia de ir enlazado un evento para este boton
// Seria un evento del tipo OnClick.
end;
with alabels[i] do
begin
parent :=Form1; // indicamos el control que contiene el componente
Top:=PosY+30; // posicion Y en pantalla
Left:=PosX; // posicion X en pantalla
Caption:=IntToStr(i+1);
Visible:=true;
end;
PosX:=PosX+80;
end;

-----------------------------------------------

Muchas gracias
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:Crear eventos en tiempo de ejecucion

Publicado por Ing Francisco Arena (140 intervenciones) el 25/06/2004 16:20:01
Eso es facil. Antes que nada debes crear un procedimiento que será el que se dispare cuando se produzca el evento. Para el caso del evento OnClick, deberá tener el siguiente "formato" (ó "sintaxis"):

procedure MiProcedimiento (Sender: TObject);
begin
//realizar las tareas aquí.
end;

Ahora bien, cuando crees el Boton u otro objeto debes luego asignarle el evento a dicho objeto o componente. De esta forma, quedaría así:

MiBoton:= TButton.Create(Self);
//... asignación de propiedades...
MiBoton.OnClick:= MiProcedimiento; // LISTO!!!!!!!!!!!!

Lo que debes entender es que el evento es tambien una propiedad del componente, que apunta a un procedimiento. Este procedimiento debe tener la misma cantidad y tipo de parámetros que exige el evento
Otra cosa importante a tener en cuenta, es que el parametro Sender representa al objeto (ó componente) que generó el evento, en este caso el boton.

procedure MiProcedimiento (Sender: TObject);
begin
(Sender As TButton).Caption:= 'Se hizo clic en el boton';
(Sender As TButton).Enabled:= Not (Sender As TButton).Enabled;
end;

Bueno, eso es todo (me salio muy larga la respuesta), pero espero que te clarifique el panaroma.

Saludos...
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:Crear eventos en tiempo de ejecucion

Publicado por Currelas (6 intervenciones) el 29/06/2004 15:06:37
Buenas tardes

Muchas gracias, me tengo que poner esta semana con ello.
Ya os contaré como sale la cosa.

Un saludo
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