PDA

Ver la Versión Completa : Crear formularios de forma dinamica


istradlin
13-09-2007, 21:35:34
Buenas a todos, estoy haciendo un proyecto en lazarus y me encuentro con un problema, tengo un boton y, al hacer clic sobre el quiero que se cree un formulario nuevo, el codigo es el siguiente:


var
Form3:TForm;
txt:Tedit;
i:Integer;

Begin
Form3:=TFormCreate(Self);
Form3.Caption:="hola";
Form3.Show();
while(i<20)
begin
txt:=Tedit.Create(Form3);
txt.Caption:="Etiqueta";
txt.Show();
i:=i+1;
end;
End;

Este codigo esta en el evento onclick del boton, el caso es que al ejecutar y pinchar en el boton se me abre el nuevo formulario, pero no se me carga ningun campo de texto, ademas, dentro del while tb queria crear un boton y asignarle un evento a ese boton.

Un saludo y gracias de antemano

Caral
13-09-2007, 21:43:08
Hola
Tal vez esto (http://wiki.clubdelphi.com/wiki/index.php/Tutorial_como_crear_Componentes_en_Delphi_en_Tiempo_de_Ejecuci%C3%B3n_%28Ejemplo_Visual%2C_Wink%29) te de una idea.
Saludos

dec
13-09-2007, 21:45:15
Hola,

Tienes que asignarle un "Parent" a los "Edit".


txt.Parent := Form3;


Para asignar un evento has de hacer lo mismo que para el resto de propiedades, cuidándote de que el método que asignes tenga el mismo "prototipo" que el evento al que quieres asignarle.

Por ejemplo, en el caso de "OnClick" el prototipo es:


Onclick: TNotifyEvent;


Siendo "TNotifyEvent":


TNotifyEvent = procedure(Sender: TObject) of object;


Es decir, que para asignar al evento "OnClick" un método este tendría que ser declarado así, por ejemplo, en la clase "TForm3":


interface

type
TForm3 = class(TForm)
{...}
private
procedure ParaHacerClick(Sender: TObject);
{...}
end;


He implementado así:


procedure TForm3.ParaHacerClick(Sender: TObject);
begin
//
end;


Ese método puedes ya asignarlo sin problemas al evento "OnClick" del botón que crees, ya digo, como si fuera una propiedad más:


btn := TButton.Create(Form3);
btn.OnClick := ParaHacerClick;
{...}

istradlin
14-09-2007, 12:43:11
Muchas gracias voy probar con lo que me habeis respondidol, gracias de nuevo.

noodle_
06-12-2007, 16:30:40
Estoy haciendo un menu dinamico con datos de unas tablas y lo que me falta es asignarle al evento OnClick un procedimiento pero el nombre del procedimiento es un campo de una tabla tipo varchar, como hago para asignar?, o seria mucho mejor si me indican como crear procedimientos dinamicamente, si es posible????
Gracias de Antemano