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 25-10-2007
kakarotv5 kakarotv5 is offline
Miembro
 
Registrado: feb 2007
Posts: 162
Poder: 18
kakarotv5 Va por buen camino
¿Es posible crear un botón en el formulario en tiempo de ejecución?

Normalmente para poner un botón en un formulario pinchamos con el puntero del ratón en el componente Button de la paleta Standard y luego pinchamos en el formulario.

Pues bien, mi idea es saber si se puede poner un botón en el formulario desde código en tiempo de ejecución.

Saludos.
Responder Con Cita
  #2  
Antiguo 25-10-2007
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 es posible

Código Delphi [-]
Boton := TButton.Create(Application);
Boton.Parent := Form1;
Boton.Left    := xx;
Boton.Top    := yy;
Boton.OnClick := Tuprocedimiento;
__________________
...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 25-10-2007
kakarotv5 kakarotv5 is offline
Miembro
 
Registrado: feb 2007
Posts: 162
Poder: 18
kakarotv5 Va por buen camino
¡Muchísimas gracias!

Saludos.
Responder Con Cita
  #4  
Antiguo 25-10-2007
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,

Más que bien que "Application" el "dueño" (y encargado de su liberación) podría ser el propio formulario. No sé. Pienso en que el formulario puede destruirse antes que la aplicación, siendo que el botón no tiene mucho sentido que siga ahí si el formulario en cuestión es destruido. Por lo demás, también podría no darse ningún "dueño" para el botón, eso sí, encargándonos nosotros de su destrucción, por ejemplo, al cierre del formulario. Pero, probablemente no esté demás darle como "dueño" al propio formulario.

PD. Sin ánimo de jorobar.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 25-10-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Conchole, y yo escribiendo y ya se me adelantaron. que lento soy!

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #6  
Antiguo 25-10-2007
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
Cita:
Empezado por dec Ver Mensaje
Hola,

Más que bien que "Application" el "dueño" (y encargado de su liberación) podría ser el propio formulario. No sé. Pienso en que el formulario puede destruirse antes que la aplicación, siendo que el botón no tiene mucho sentido que siga ahí si el formulario en cuestión es destruido. Por lo demás, también podría no darse ningún "dueño" para el botón, eso sí, encargándonos nosotros de su destrucción, por ejemplo, al cierre del formulario. Pero, probablemente no esté demás darle como "dueño" al propio formulario.

PD. Sin ánimo de jorobar.
jeje gracias por la alcaracion, lo que sucede es que se me pega el cassete de creacion de los formularios
__________________
...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
  #7  
Antiguo 25-10-2007
kakarotv5 kakarotv5 is offline
Miembro
 
Registrado: feb 2007
Posts: 162
Poder: 18
kakarotv5 Va por buen camino
He hecho esto:

Código Delphi [-]
procedure Saludo;
begin
 ShowMessage('Hola Mundo');
end;

Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
 Boton         := TButton.Create(Application);
 Boton.Parent  := Form1;
 Boton.Left    := 250;
 Boton.Top     := 250;
 Boton.OnClick := Saludo;  
end;

Pero no me funciona la parte de:

Código Delphi [-]
Boton.OnClick := Saludo;

Me sale el siguiente error:

Código:
[Error] Unit1.pas(37): Incompatible types: 'method pointer and regular procedure'
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
¿Qué ocurre?

Última edición por kakarotv5 fecha: 25-10-2007 a las 16:20:26.
Responder Con Cita
  #8  
Antiguo 25-10-2007
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Lo que pasa el que el procedimiento saludo tiede que ser de tipo evento (TNotifyEvent), con eso quedaría así

Código Delphi [-]
Procedure TForm1.Saludo(Sender : TObject);
Begin
ShowMessage('Hola Mundo');
end;

además para crear el botón el código sería mejor este:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
 Boton         := TButton.Create(Self);
 Boton.Parent  := Form1;
 Boton.Left    := 250;
 Boton.Top     := 250;
 Boton.OnClick := Saludo;  
end;
Saludos
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #9  
Antiguo 25-10-2007
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
Prueba esto

Código Delphi [-]
procedure Saludo(Sender: Tobject);
begin
 ShowMessage('Hola Mundo');
end;
__________________
...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
  #10  
Antiguo 25-10-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Pero ven aca es que aqui en santo domingo todo esta en camara lenta? otra vez se me han adelantado.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #11  
Antiguo 25-10-2007
kakarotv5 kakarotv5 is offline
Miembro
 
Registrado: feb 2007
Posts: 162
Poder: 18
kakarotv5 Va por buen camino
Me sigue dando error.

Esta vez es el siguiente:

Código:
[Error] Unit1.pas(37): Incompatible types: 'method pointer and regular procedure'
Responder Con Cita
  #12  
Antiguo 25-10-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
intenta ponerlo asi:

Código Delphi [-]
procedure TForm1.botoclick(Sender: Tobject);
begin
 ShowMessage('Hola Mundo');
end;

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #13  
Antiguo 25-10-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
intenta ponerlo asi:
Código Delphi [-]
procedure TForm1.botonclick(Sender: Tobject);
begin
 ShowMessage('Hola Mundo');
end;


Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #14  
Antiguo 25-10-2007
kakarotv5 kakarotv5 is offline
Miembro
 
Registrado: feb 2007
Posts: 162
Poder: 18
kakarotv5 Va por buen camino
Ahora si.

Arreglado, gracias a todos y un saludo.
Responder Con Cita
  #15  
Antiguo 25-10-2007
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
Buen detalle Enecumene no habia percatado la falla de que era un procedimiento y no un metodo
__________________
...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
  #16  
Antiguo 25-10-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Cita:
Empezado por eduarcol Ver Mensaje
Buen detalle Enecumene no habia percatado la falla de que era un procedimiento y no un metodo
Me estoy volviendo un master no?(ni eso me lo creo ) jajaja.

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #17  
Antiguo 25-10-2007
kakarotv5 kakarotv5 is offline
Miembro
 
Registrado: feb 2007
Posts: 162
Poder: 18
kakarotv5 Va por buen camino
He probado esto mismo en Lazarus y me da el siguiente error en la línea:

Código Delphi [-]
Boton.OnClick := Saludo;

Código:
unit1.pas(38,25) Error: Wrong number of parameters specified for call to "Saludo"
¿En Lazarus no se puede hacer esto?

Última edición por kakarotv5 fecha: 25-10-2007 a las 16:48:05.
Responder Con Cita
  #18  
Antiguo 25-10-2007
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
no conozco lazarus, pero crea el boton y crea el metodo, luego postea aqui la declaracion que te genera automaticamente, asi podre ver que parametros espera
__________________
...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
  #19  
Antiguo 25-10-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
tal vez tenga que ser así:

Código Delphi [-]
Boton.OnClick := Saludo(Sender);
__________________

Responder Con Cita
  #20  
Antiguo 24-09-2008
Avatar de jeremiselxi
jeremiselxi jeremiselxi is offline
Miembro
 
Registrado: ago 2008
Posts: 199
Poder: 16
jeremiselxi Va por buen camino
hola amigos

yo tambien tenia este mismo problema y encontre la solucion. aqui esta el codigo

Cita:
var boton: tbutton;
procedure TForm1.FormCreate(Sender: TObject);
begin
Boton := TButton.Create(Self);
Boton.Parent := Form1;
Boton.Left := 250;
Boton.Top := 250;
Boton.OnClick := Saludo;
boton.Caption:='boton creado';
end;

Procedure TForm1.Saludo(Sender : TObject);
Begin
ShowMessage('Hola Mundo');
end;
end.
pero el truco esta en poner el procedimiento k creamos en esta parte

Cita:
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
Procedure Saludo(Sender : TObject); //aqui hay k ponerlo para k funcione
Cristo ls ama a todos
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
Agregar valor de un formulario a un reporte rave en tiempo de ejecucion alehillebrand Impresión 3 04-08-2010 19:42:31
Crear componentes en tiempo de ejecución Mauro® Varios 6 23-08-2007 19:45:29
Crear elementos en tiempo de ejecucion Tecnic2 OOP 12 15-06-2005 20:12:42
Crear un DSN en tiempo de ejecucion neyvan Conexión con bases de datos 7 21-05-2004 17:41:45
¿Cómo cargar un Glyph para un botón en tiempo de ejecución? Feñiz Gráficos 2 09-12-2003 12:38:53


La franja horaria es GMT +2. Ahora son las 02:12:24.


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