Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-04-2007
Avatar de makina
makina makina is offline
Miembro
 
Registrado: oct 2005
Ubicación: Mexico DF.
Posts: 27
Poder: 0
makina Va por buen camino
Ejecutar procedimientos por su nombre y con parametros

Hola a todos!!

Tengo un problema y espero me puedan ayudar.

Necesito poder ejecutar un metodo(procedimiento/funcion) por su nombre, y ademas pasarle valores, ya he buscado en el foro y me encontre con la solucion que propone Neftalí con el uso de RTTI, sin embargo ademas de poder llamar al procedimiento necesito pasarle parametros, algo asi:

Código Delphi [-]
type
   TForm1 = class(TForm)
     Button1: TButton;
     procedure Button1Click(Sender: TObject) ;
     procedure CallMeByName(Sender: TObject;Valor1:string) ;
   private
     procedure ExecMethod(OnObject: TObject; MethodName: string) ;
   end;
 
var
   Form1: TForm1;
 
type
   TExec = procedure of object;
 
procedure TForm1.ExecMethod(OnObject: TObject; MethodName: string) ;
var
   Routine: TMethod;
   Exec: TExec;
begin
   Routine.Data := Pointer(OnObject) ;
   Routine.Code := OnObject.MethodAddress(MethodName) ;
   if NOT Assigned(Routine.Code) then Exit;
   Exec := TExec(Routine) ;
   Exec;
end;
 
procedure TForm1.CallMeByName(Sender: TObject;Valor1:String) ;
begin
   ShowMessage(Valor1) ;
end;
 
procedure TForm1.Button1Click(Sender: TObject) ;
begin
   ExecMethod(Form1, 'CallMeByName', valor1) ;
end;






es decir que en el momento en que ejecute el metodo ExecMethod con el parametro 'CallMeByName' tambien pueda pasarle el parametro valor1.

Espero haber sido claro, y les agradesco su ayuda

------------------------------------------------
makina:

Saludos desde México

Última edición por roman fecha: 26-04-2007 a las 08:24:23. Razón: Corregir etiqueta [delphi]
Responder Con Cita
  #2  
Antiguo 25-08-2010
VictorPenyalver VictorPenyalver is offline
Miembro
 
Registrado: abr 2006
Posts: 19
Poder: 0
VictorPenyalver Va por buen camino
Prueba con esto

Cambia esta declaración

Código Delphi [-]
type
   TExec = procedure of object;

por esta

Ejemplo para un parametro de tipo integer:

Código Delphi [-]
type
   TExec = procedure(valor: integer) of object;
Responder Con Cita
  #3  
Antiguo 29-09-2016
Avatar de Soa Pelaez
Soa Pelaez Soa Pelaez is offline
Miembro
 
Registrado: nov 2015
Posts: 133
Poder: 9
Soa Pelaez Va por buen camino
Implemente tu código y hago que ejecute el procedimiento mediante un mensaje, al darle ok lo ejecuta pero si sucede un error nuevamente aparece el mensaje y pide que le de Ok o cancelar, el procedimiento lo ejecuta tantas veces aparezca esta ventana de mensaje, como hago para que cuando no haya error solo lo ejecute una vez y no todas las veces que le dio Ok a la ventana de mensaje, igual gracias tu código me ha servido bastante.
Espero puedas ayudarme.
Responder Con Cita
  #4  
Antiguo 29-09-2016
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
No entiendo muy bine lo que explicas, pero sospecho que no tiene que ver con esto. ¿Podrías poner tu código?
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
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
Ejecutar mi aplicacion y pasarle parametros ?? cso2000 Varios 5 13-12-2007 17:58:00
Ejecutar aplicación externa con parametros vtorres Varios 6 28-10-2005 04:34:02
Problema al ejecutar aplicacion con parametros RazoR API de Windows 6 04-10-2005 16:19:46
Ejecutar Procedimientos Almacenados dc_systems Firebird e Interbase 1 14-06-2004 19:44:27
Parametros en procedimientos Un abrazo OOP 7 26-05-2003 12:58:13


La franja horaria es GMT +2. Ahora son las 23:08:06.


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