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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-01-2008
dardo dardo is offline
Miembro
 
Registrado: may 2006
Posts: 13
Poder: 0
dardo Va por buen camino
Llamar a un evento desde código

Hola,
tengo un botón que tiene un evento OnClick, con su código.
Necesito llamar a ese evento desde código, sin pinchar el botón.
Además lo tengo que hacer desde otro formulario.
Es decir, estoy en un formulario X, desde código abro otro formulario Y, además al abrirlo ejecuto el evento OnClik de un botón de este formulario Y.
¿Cómo se llama a ese evento?
Gracias.
Responder Con Cita
  #2  
Antiguo 22-01-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Al evento podría llamarse tal que así:

Código Delphi [-]
Form2.Button1OnClick(nil);

Como si fuera cualquier otro método de la clase, como en realidad es. Sin embargo, según tengo entendido no parece muy buena idea hacer ese tipo de llamadas. ¿Tal vez el código del evento en cuestión debería constituir un método aparte que pudiera ser llamado de forma "más natural"? Es posible que pueda hacerse de otro modo lo mismo que persigues... depende de qué sea.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 22-01-2008
espericueta espericueta is offline
Miembro
 
Registrado: ene 2008
Posts: 13
Poder: 0
espericueta Va por buen camino
Click

Hola que tal tambien puedes hacer que se lance el evento con :

Código Delphi [-]
formy.boton.click

sin embargo como dice David esto no es lo mejor , podrias crear un procedimiento o una funcion , y asi llamarlos desde donde necesites sin necesidad de estar invocando un evento.
Responder Con Cita
  #4  
Antiguo 23-01-2008
dardo dardo is offline
Miembro
 
Registrado: may 2006
Posts: 13
Poder: 0
dardo Va por buen camino
Gracias por vuestros comentarios.
Al escribirlo como me decís me da un mensaje de error "This form or method can only allowed for class methods".
Lo hacía así porque hay dos formas de acceder a ese segundo formulario que puede tener dos contenidos, desde el formulario anterior seleccionando una opción elegía el contenido, o también podría hacerlo entrando en ese segundo formulario y pinchando el botón, por eso quería aprovechar el código del evento del botón para acceder directamente desde el formulario anterior.
Lo voy a probar haciendo funciones, y que los eventos de los botones llamen a las funciones.
Saludos.
Responder Con Cita
  #5  
Antiguo 23-01-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Tal vez estás intentando llamar a un método de una clase "estática" que no es tal. Es decir, en lugar de algo como esto:

Código Delphi [-]
Form2.Metodo();

... suponiendo que "Form2" es una variable que guarda una instancia de "TForm2" (por ejemplo) y que es "correcto", puedes estar codificando algo como:

Código Delphi [-]
TForm2.Metodo();

... directamente, lo que no sería válido, a no ser que "TForm2" fuera una clase "estática", es decir, que no requiere de instanciación alguna. Pero, esto último no es lo común, mucho menos en el caso de clases "formularios".

En todo caso no vas por mal camino (en mi opinión) si te decides a utilizar funciones, procedimientos o métodos, que no sean propiamente eventos, porque un evento no debería ser llamado por ti.

El ejemplo del "onclick" es bastante claro: el evento debería lanzarse cuando se hace clic en cierto lugar y no de otro modo, puesto que entonces se están confundiendo las cosas. Supongamos algo de código:

Código Delphi [-]
Unit Form1;

interface

uses
  Forms {...};

type
  TForm1 = class(TForm)
  public
    procedure Button1Click(Sender: TObject);
  end;

implementation

{TForm1}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Self.Caption := 'ClubDelphi';  
end;

end.

Si quieres cambiar el "Caption" del formulario a "ClubDelphi", lo suyo no es que llames al evento "Click" del botón que hace esa tarea, sino, plantearte el asunto más o menos de este otro modo:

Código Delphi [-]
Unit Form1;

interface

uses
  Forms {...};

type
  TForm1 = class(TForm)
  public
    procedure Button1Click(Sender: TObject);
    procedure CambiaCaption(newCaption: string);
  end;

implementation

{TForm1}

procedure TForm1.CambiaCaption(newCaption: string);
begin
  Self.Caption := newCaption;  
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Self.CambiaCaption('ClubDelphi');
end;

end.

Ahora en el evento haces uso de un método para hacer lo que quieres, un método que no es un evento, y que forma parte también, en este caso, de la clase "TForm1". Pues bien, si ahora quisieras cambiar el "Caption" del formulario desde otro lugar, no usarías el evento "Onclick" del botón de marras, sino el método que sirve, precisamente, para lo que quieres hacer, y que puedes usar en donde mejor te parezca: sea en el evento "Onclick" de un botón, o desde cualquier otro sitio.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #6  
Antiguo 23-01-2008
dardo dardo is offline
Miembro
 
Registrado: may 2006
Posts: 13
Poder: 0
dardo Va por buen camino
Muchas gracias, así lo he hecho, es mucho más lógico, no se en qué estaría pensando para intentar hacerlo llamando directamente a eventos.
Saludos a todos.
Responder Con Cita
  #7  
Antiguo 23-01-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

No te preocupes. Que levante la mano quien nunca se haya propuesto eso y cosas "peores" aún.
__________________
David Esperalta
www.decsoftutils.com
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
Como llamar codigo hecho en VC++ desde C# juziel .NET 0 17-10-2007 21:05:13
Llamar evento OnClick de un boton desde otro Form Peterman OOP 7 17-10-2006 19:12:31
Llamar evento desde otro evento nachito_tuc OOP 1 23-08-2006 22:37:43
LLamar Evento onkeypress estebanx Varios 1 26-05-2006 22:43:14
Llamar a evento Keypress edgusano .NET 1 30-11-2005 23:02:29


La franja horaria es GMT +2. Ahora son las 08:29:58.


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