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 10-03-2008
Avatar de adonias
adonias adonias is offline
Miembro
 
Registrado: ago 2007
Posts: 45
Poder: 0
adonias Va por buen camino
Ayuda con Boton

Hola Amigos.

Tengo el siguiente problema. en mi form hay 8 botones que todos deben ejecutar la misma accion pero con distintas variable.

Entonces lo que hago es lo siguiente:

Código Delphi [-]
Button1.Caption := Nombre del Botton;
Button1.Visible := true;
Button1.OnClick := Mi_function(Mis varable);

El problema es que cuando ejecuto el exe, la funcion se ejecuta enseguida, y NO cuando hago CLICK sobre el boton.

No se como solucionar esto....

gracias por su ayuda
Responder Con Cita
  #2  
Antiguo 10-03-2008
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
si la funcion se ejecuta es porque la estas llamando en un sitio, revisa las lineas qe se deben ejecutar al iniciar la aplicacion para ver si estas invocando la funcion
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #3  
Antiguo 10-03-2008
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.275
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
Cita:
Empezado por eduarcol Ver Mensaje
si la funcion se ejecuta es porque la estas llamando en un sitio, revisa las lineas qe se deben ejecutar al iniciar la aplicacion para ver si estas invocando la funcion
A veces me ha pasado que algun evento (como el que tu comentas) lo he asignado a algun evento (sin darme cuenta) de los que se ejecutan al inicio (OnShow, OnActive,...); Revisa que no te haya pasado lo mismo...
__________________
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
  #4  
Antiguo 10-03-2008
Avatar de adonias
adonias adonias is offline
Miembro
 
Registrado: ago 2007
Posts: 45
Poder: 0
adonias Va por buen camino
Ya revise, y nada...

es decir cuando coloco esta funcion es cuando ejecuto el form create.. nada mas...

revise todos los botones, y ninguno tiene asignada ninguna accion ni nada..
Responder Con Cita
  #5  
Antiguo 10-03-2008
turminator turminator is offline
Miembro
 
Registrado: abr 2006
Ubicación: Barcelona, Spain
Posts: 91
Poder: 19
turminator Va por buen camino
Cita:
Empezado por adonias Ver Mensaje
Ya revise, y nada...

es decir cuando coloco esta funcion es cuando ejecuto el form create.. nada mas...

revise todos los botones, y ninguno tiene asignada ninguna accion ni nada..
Creo que este es el problema. Has asignado que la función se ejecute nada más crear el Form. Si lo que quieres es asignar la función debes escibiri tu codigo en el evento click del ratón.

Para llegar a dicho evento puedes buscarlo en el inspector de eventos o bien pulsar doble clic directamente encima del botón de la Form (en edición)

Espero te sea de ayuda, ya que yo aún soy un principiante de Delphi.

Saludos!
Responder Con Cita
  #6  
Antiguo 10-03-2008
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.275
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
Coloca un breakpoint al inicio de la función y cuando se pare la ejecución en ese punto visualiza la ventana de "Call stack" (pila de llamadas) y tal vez veas quien ha hecho la llamada y te de pistas de porqué se está lanzando la función en ese punto.
__________________
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
  #7  
Antiguo 11-03-2008
Avatar de adonias
adonias adonias is offline
Miembro
 
Registrado: ago 2007
Posts: 45
Poder: 0
adonias Va por buen camino
Gracias por su ayuda, pero aun asi no funciona...

pegare el codigo completo:

Código Delphi [-]
function Ejecutor(const var1:string ;var2:string ) : tnotifyevent;
begin
//alerto cuando cliqueo el boton
showMessage('Esta es una funcion desde un boton con varias variables');
end;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
C4_server1_nombre :string, 
begin


//Chequeamos y activamos los botones segun INI

C4_server1_nombre:= retINI( 'C4', 'SERVER1_Nombre');
if Length(Trim(C4_server1_nombre)) > 0 then
begin
Button1.Caption := C4_server1_nombre;
Button1.Visible := true;
Button1.onClick  := Ejecutor(var1, var2 );
end;

end;

gracias
Responder Con Cita
  #8  
Antiguo 11-03-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Y si pruebas en el evento Onshow.....

Código Delphi [-]
procedure TForm1.FormShow(Sender: TObject);
var
  C4_server1_nombre :string, 
begin
  //Chequeamos y activamos los botones segun INI
  C4_server1_nombre:= retINI( 'C4', 'SERVER1_Nombre');
  if Length(Trim(C4_server1_nombre)) > 0 then begin
    Button1.Caption := C4_server1_nombre;
    Button1.Visible := true;
    Button1.onClick  := Ejecutor(var1, var2 );
  end;
end;

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #9  
Antiguo 11-03-2008
Avatar de adonias
adonias adonias is offline
Miembro
 
Registrado: ago 2007
Posts: 45
Poder: 0
adonias Va por buen camino
sigue danto el mismo error... sin apretar nada muestra el mensaje aun con el show.

y en Call stk dice the procces is not access...

Una duda...

el OnClick puede llamar una function o obligatoriamente tiene que llamar un Produce (por el TNotifyEvent)?

Última edición por adonias fecha: 11-03-2008 a las 01:41:11.
Responder Con Cita
  #10  
Antiguo 11-03-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por adonias Ver Mensaje
sigue danto el mismo error... sin apretar nada muestra el mensaje aun con el show.

y en Call stk dice the procces is not access...

Una duda...

el OnClick puede llamar una function o obligatoriamente tiene que llamar un Produce (por el TNotifyEvent)?
Bueno, es que por supuesto que esta haciendo bien las cosas, NO es un error, ya que estas ejecutando el proceso cuando inicias tu aplicación.

Que es lo que realmente quieres que haga, no entiendo lo que comentas al inicio del hilo.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #11  
Antiguo 11-03-2008
Avatar de adonias
adonias adonias is offline
Miembro
 
Registrado: ago 2007
Posts: 45
Poder: 0
adonias Va por buen camino
Tengo una serie de botones...

cada uno de estos botones, llama la misma accion , pero con distintas variables...
desde el showform le asigno la funcion al boton con sus variables...

NECESITO QUE ESTA FUNCION SE EJECUTE CUANDO HAGAN CLICK.

Si tu intentas crear un form basico y le das a un boton una funcion como esta:
Código Delphi [-]
function funciondelboton():TnotifyEvent;
begin
  showMessage('jo');
end;
{$R *.dfm}

procedure TForm1.FormShow(Sender: TObject);
begin
Button1.OnClick :=  funciondelboton() ;
end;

el showmesage se ejecuta cuanto tu corres el exe, y no cuando haces click
Responder Con Cita
  #12  
Antiguo 11-03-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Muy bien, entonces has esto
  1. Quita lo que tienes en el evento OnCreate, como lo estabas haciendo inicialmente
  2. Dale doble click a uno de los botones y colocas la función que quieres que se ejecute
  3. Selecciona los demas botones, ve a Eventos y en el evento OnClick selecciona el evento del primer boton.
  4. Listo, compila y ejecuta.

Salud OS

Edito:

No habia visto lo de las variables de cada botón pero en el evento "común" deberia de tener algo así, puede haber algo mas adecuado pero esto es lo que se me ocurre así de bote-pronto.

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  if (sender as TButton).Name = 'Button1' then begin
     //Asigna Variables Boton 1
  end;
  if (sender as TButton).Name = 'Button2' then begin
     //Asigna Variables Boton 2
  end;
  if (sender as TButton).Name = 'Button3' then begin
     //Asigna Variables Boton 3
  end;
  if (sender as TButton).Name = 'Button4' then begin
     //Asigna Variables Boton 4
  end;
  Ejecutor(var1, var2 );
end;
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney

Última edición por egostar fecha: 11-03-2008 a las 02:17:52.
Responder Con Cita
  #13  
Antiguo 11-03-2008
Avatar de adonias
adonias adonias is offline
Miembro
 
Registrado: ago 2007
Posts: 45
Poder: 0
adonias Va por buen camino
:P

Funciono ... mil gracias
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 con SystemMenu botón (x)?? waly2k1 Varios 0 08-02-2007 16:49:47
ayuda con boton creado dinamicamente y sus evento cureham OOP 1 13-09-2006 09:39:14
Ayuda con una tabla de configuracion para boton visibles josevaldez Conexión con bases de datos 1 14-07-2005 17:47:14
ayuda... quitar la barra de herramientas y ajustar tamaño ventana y botón maximizar. gontxalo Internet 6 23-05-2005 15:35:22
ayuda... tamaño ventana y botón maximizar. gontxalo OOP 0 18-05-2005 18:32:52


La franja horaria es GMT +2. Ahora son las 10:56:10.


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