Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Lazarus, FreePascal, Kylix, etc. (https://www.clubdelphi.com/foros/forumdisplay.php?f=14)
-   -   Crear formularios de forma dinamica (https://www.clubdelphi.com/foros/showthread.php?t=48036)

istradlin 13-09-2007 20:35:34

Crear formularios de forma dinamica
 
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:

Código:


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 20:43:08

Hola
Tal vez esto te de una idea.
Saludos

dec 13-09-2007 20:45:15

Hola,

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

Código Delphi [-]
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:

Código Delphi [-]
Onclick: TNotifyEvent;

Siendo "TNotifyEvent":

Código Delphi [-]
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":

Código Delphi [-]
interface

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

He implementado así:

Código Delphi [-]
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:

Código Delphi [-]
btn := TButton.Create(Form3);
btn.OnClick := ParaHacerClick;
{...}

istradlin 14-09-2007 11:43:11

Muchas gracias voy probar con lo que me habeis respondidol, gracias de nuevo.

noodle_ 06-12-2007 15:30:40

Ayuda con los eventos
 
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


La franja horaria es GMT +2. Ahora son las 08:50:01.

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