Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-10-2014
ander ander is offline
Miembro
 
Registrado: may 2003
Posts: 56
Poder: 21
ander Va por buen camino
Generar evento en libreria

Hola a todos.
Lo que quiero hacer es generar un evento de un componente existente (ej. OnTimer) en una libreria.
Como podria hacerlo ?? He generado esta libreria y no doy pico en bola.
Si alguien pudiese decirme como se hace con un ejemplo se lo agradeceria.
Código Delphi [-]

library My_Dll;

 uses
  System.SysUtils,
  System.Classes,winapi.windows,Vcl.Dialogs,Vcl.ExtCtrls;

 var i:Integer;

{$R *.res}

procedure TiemTimer;
begin
 inc(i);
 ShowMessage(inttostr(i)) ;
end;

procedure pruebaTiempo ; stdcall;
var
 Tiempo:TTimer;
 pp:TComponent;
begin
  i:=0;
  Tiempo:=TTimer.Create(pp);                // Esto no creo que esté bien
  Tiempo.Name:='Tiempo'+IntToStr(I);
  tiempo.Interval:=5000;
  tiempo.Enabled:=True;
  tiempo.OnTimer:=TiemTimer;               // Error: Incompatible types: 'method pointer and regular procedure'
end;                                                

exports pruebaTiempo;

begin

end.

Gracias de antemano
Responder Con Cita
  #2  
Antiguo 29-10-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.272
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Tal vez algo así es lo que necesitas...
No acabo de tener claro lo que quieres hacer, pero esto creo que hace lo que pretendes.

Código Delphi [-]
library My_DLL;

uses
  SysUtils,
  Classes, windows, Dialogs, ExtCtrls, forms;

type
  TestClass = class
  private
    Tiempo:TTimer;
    procedure MyOnTimer(Sender:TObject);
  public
    procedure init();
  end;

var
  i:Integer;
  t:TestClass;
  running:boolean;

{$R *.res}


procedure Finalizar; stdcall;
begin
  t.Tiempo.Enabled := False;
  running := true;
  t.Free;
end;

procedure pruebaTiempo ; stdcall;
begin
  t := TestClass.Create();
  running := true;
  t.init;
end;

procedure TestClass.init;
begin
  Tiempo := TTimer.Create(nil);
  i:=0;
  // Tiempo.Name:='Tiempo'+IntToStr(I);
  tiempo.Interval:=2000;
  tiempo.OnTimer := MyOnTimer;
  tiempo.Enabled:=True;  
end;


procedure TestClass.MyOnTimer(Sender: TObject);
begin
  inc(i);
  ShowMessage(inttostr(i)) ;

end;

exports pruebaTiempo;
exports Finalizar;

end.

(1) El componente puedes crearlo pasando un nil, pues no "pertenece" a ningún formulario.
(2) En cuanto al segundo error te está diciendo que el evento que asignes debe pertenecer a una clase.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 29-10-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.272
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Para hacer la llamada; Un proyecto con lo siguiente:

Código Delphi [-]
...

  procedure pruebaTiempo(); cdecl;  external 'My_DLL.dll';
  procedure Finalizar(); cdecl;  external 'My_DLL.dll';

var
  Form1: TForm1;

implementation

procedure TForm1.Iniciar(Sender: TObject);
begin
  pruebaTiempo;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Finalizar;
end;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
Respuesta



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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ayuda para generar evento a traves de RaisError SQL Cristhor1982 Varios 0 14-03-2013 23:13:57
La libreria NSP Apetelinau API de Windows 0 09-07-2007 12:18:59
Llamar evento desde otro evento nachito_tuc OOP 1 23-08-2006 21:37:43
Libreria Mp3 Perio Varios 7 16-05-2006 16:17:16
Generar Evento en titemmenu morfeo21 Varios 2 01-05-2004 08:08:23


La franja horaria es GMT +2. Ahora son las 06:37:27.


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