Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-10-2017
SaraTorres SaraTorres is offline
Miembro
 
Registrado: sep 2017
Posts: 18
Poder: 0
SaraTorres Va por buen camino
Una duda respecto a Funciones

Hola chicos

Por favor, me gustaría saber qué parámetro falta para ejecutar la
procedure TForm1.FormCreate; DENTRO de la Función InicarHotKey
El error me dice: Not enough actual parameters (Los parámetros son insuficientes)

Sin que me hagan preguntas para qué lo quiero, sólo díganme si se puede ejecutar la
procedure dentro de la función. Muchas gracias desde ya chicos.

Código Delphi [-]
FUNCTION InicarHotKey( VAR Params : ARRAY OF PChar; vTitle, p: PChar ) : BOOLEAN;
BEGIN
TForm1.FormCreate();
END;

Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
const
  MOD_ALT = 1;
  MOD_CONTROL = 2;
  MOD_SHIFT = 4;
  MOD_WIN = 8;
  VK_A = $41;
  VK_R = $52;
  VK_F4 = $73;
begin
  id1 := GlobalAddAtom('Hotkey1');
  RegisterHotKey(Handle, id1, MOD_CONTROL, VK_A);
end;
Responder Con Cita
  #2  
Antiguo 07-10-2017
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.834
Poder: 9
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
El FormCreate es un metodo de instancia, que corresponde a un manejador para el evento OnCreate de tu formulario TForm1. Basicamente lo que hace es, cuando se crea un formulario, ejecuta el codigo que se especifica en la implementacion del FormCreate

Por lo general no se invoca explicitamente a estos metodos como estas intentando hacerlo vos, ya que eso lo hace internamente Delphi; estan para permitir al programador meter codigo que se ejecute en determinadas circustancias, de alli el nombre de evento.

El parametro que te falta es el conocido como Sender, que es la instancia que recibio el evento. Como te comentaba, ya que es Delphi quien invoca a estos metodos, es el quien sabe que parametro adecuado poner
Responder Con Cita
  #3  
Antiguo 09-10-2017
Avatar de ElKurgan
[ElKurgan] ElKurgan is offline
Miembro Premium
 
Registrado: nov 2005
Posts: 1.016
Poder: 14
ElKurgan Va por buen camino
También puedes probar poniendo esto:

Código Delphi [-]
TForm1.FromCreate(nil);

Pero coincido con Agustín en sus apreciaciones

Un saludo
Responder Con Cita
  #4  
Antiguo 09-10-2017
Avatar de Caminante
Caminante Caminante is offline
Miembro
 
Registrado: oct 2010
Ubicación: Lima - Peru
Posts: 263
Poder: 8
Caminante Va camino a la fama
Cita:
Empezado por SaraTorres Ver Mensaje
Código Delphi [-]FUNCTION InicarHotKey( VAR Params : ARRAY OF PChar; vTitle, p: PChar ) : BOOLEAN; BEGIN TForm1.FormCreate(); END;


Código Delphi [-]

Hola solo una observacion.
Al hacer TForm1.create estas creando una nueva instancia de TForm1 pero no lo asignas a nada eso te va a crear problemas de memoria.
Si solo deseas llamar al codigo de ese evento mejor ponlo en otro metodo y lo llamas desde donde quieras.

Saludos
__________________
Caminante, son tus huellas el camino y nada más; Caminante, no hay camino, se hace camino al andar.
Antonio Machado
Responder Con Cita
  #5  
Antiguo 09-10-2017
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 9.881
Poder: 27
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Mas allá del acertado consejo que le han brindado, me dá la impresión que SaraTorres está intentando usar un método normal como si se tratara de un método de clase:

En apariencia, la declaración del método sería:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
y el uso que luego intenta:
Código Delphi [-]
  TForm1.FormCreate(); // ¡¡¡ Error !!!
cuando lo correcto es:
Código Delphi [-]
 
  Form1.FormCreate();

Luego en la llamada se requiere enviar un parámetro que puede ser de tipo TObject (y descendientes), de tipo Pointer o nulo como ejemplificó ElKurgan:
Código Delphi [-]
  Form1.FormCreate( nil ); 
  Form1.FormCreate( TObject(115) ); // (1)
  Form1.FormCreate( Pointer('z') );  // (2)
Cabe aclarar que al usar moldeos como en las líneas (1) y (2) hay que tener mucho cuidado de no intentar hacer referencia a propiedades del parámetro Sender dentro del método, vg.:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  ShowMessage( Sender.ClassName ); // ¡¡¡¡ ERROR !!!
  ...

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Duda con transferencia de parámetros de valor entre dos funciones.. linuxtin C++ Builder 10 21-08-2011 23:52:46
Duda en reporte Rave, respecto al alto del registro... ilichhernandez Impresión 2 28-11-2005 21:56:41
Duda con funciones de NativeXml friendspark OOP 5 17-11-2005 14:17:57
duda con funciones Tregistry friendspark API de Windows 3 10-11-2005 14:20:53
Duda respecto al DBEdit!! Carmen Conexión con bases de datos 2 10-11-2004 18:49:53


La franja horaria es GMT +2. Ahora son las 00:13:50.


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