Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-05-2004
santiellupin santiellupin is offline
Registrado
 
Registrado: sep 2003
Posts: 5
Poder: 0
santiellupin Va por buen camino
Problema con un Timer en tiempo de Ejecucion

Estoy creando una aplicacion y en una de las units, tengo puesto un timer que lo creo en tiempo de ejecucion, pero mi problema no es al crearle, es al asignarle un procedimiento en el evento OnTimer, que me da un error de incompatibilidad del tipo de dato, que el procedimiento no es del tipo tNotifyEvent, sino me equivoco.

Necesito que me digais o que me aconsejeis sobre xq me da el error. Gracias A todos!
Responder Con Cita
  #2  
Antiguo 15-05-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 24
__cadetill Va por buen camino
por que no nos pones el código y la definición del procedure que intentas asignarle así como el error exacto que te da?
Responder Con Cita
  #3  
Antiguo 15-05-2004
santiellupin santiellupin is offline
Registrado
 
Registrado: sep 2003
Posts: 5
Poder: 0
santiellupin Va por buen camino
error

El error que me da es el siguiente:
[Error] uAscensor.pas(73): Incompatible types: 'TNotifyEvent' and 'procedure, untyped pointer o untyped parameter'
Gracias!
Responder Con Cita
  #4  
Antiguo 15-05-2004
santiellupin santiellupin is offline
Registrado
 
Registrado: sep 2003
Posts: 5
Poder: 0
santiellupin Va por buen camino
perdon!

Este es el codigo que se me olvidaba. si necesitas que te ponga toda la unit dimelo que te lo pongo si esto no es suficiente.

constructor cAscensor.Crear(NumPlantas, PlantaActual, PlantaDestino: Integer; Grid: tStringGrid);
begin
inherited Create;
self.NumPlantas := NumPlantas;
self.PlantaActual := PlantaActual;
self.PlantaDestino := PlantaDestino ;
PanelInterno := cPanelInterno.Create ((self as cSujeto), Grid, NumPlantas);
PanelInterno.parent := Grid;
PanelInterno.BoundsRect := Grid.CellRect (0,NumPlantas - PlantaActual);
PanelInterno.SetPisoSelected (NumPlantas - PlantaActual);
self.Grid := Grid;
Timer := tTimer.Create (Grid);
Timer.Enabled := False;
Timer.OnTimer := Llamar(PlantaDestino);
Timer.Interval := 1000;
end;

procedure cAscensor.Llamar(Destino: Integer);
begin
If Destino <> PlantaActual then
begin
RegistrarInicioAscensor;
RegistrarInicioPlanta (Destino);
PlantaDestino := Destino;
end;
end;
Responder Con Cita
  #5  
Antiguo 15-05-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 24
__cadetill Va por buen camino
Bueno, sólo era necesario la manera en que construir el timer y la declaración del procedure Eso sí, podrías haberlo encerrado entre las etiquetas [ delphi ] y [ /delphi ] (sin espacios)

Referente a tu problema es que, si te fijas la declaración de un evento OnTimer es la siguiente:

Código Delphi [-]
procedure OnTimer(Sender: TObject);

Es decir, el parámetro que espera un objeto, no un integer como tu tienes. La variable que necesitas pasarle, podría ser una propiedad privada del objeto y así, desde dónde necesites (evento OnTimer) usarla

Y la forma de asignar el evento sería algo así:

Código Delphi [-]
constructor cAscensor.Crear(NumPlantas, PlantaActual, PlantaDestino: Integer; Grid: tStringGrid);
begin
  inherited Create;

  self.NumPlantas := NumPlantas;
  self.PlantaActual := PlantaActual;
  self.PlantaDestino := PlantaDestino ;
  PanelInterno := cPanelInterno.Create ((self as cSujeto), Grid, NumPlantas);
  PanelInterno.parent := Grid;
  PanelInterno.BoundsRect := Grid.CellRect (0,NumPlantas - PlantaActual);
  PanelInterno.SetPisoSelected (NumPlantas - PlantaActual);
  self.Grid := Grid;
  Timer := tTimer.Create (Grid);
  Timer.Enabled := False;
  Timer.OnTimer := Llamar;
  Timer.Interval := 1000;
end;

y la definición de Llamar...

Código Delphi [-]
procedure Llamar(Sender: TObject);

Espero te sirva
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 15:50:37.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi