[Lazarus-es] Creación dinámica de Forms

Jose Antonio Cuello josea en artextrading.com
Vie Sep 25 08:41:25 CEST 2009


Gracias por contestar. Ya he probado eso, tanto con 
application.CreateForm como por el procedimiento NewForm() pero el 
problema es que los fuentes de Lazarus me dan un error de access 
violation al no existir el archivo de recursos, es decir cuando intenta 
cargarlo (*.lrs), archivo que no tengo pues quiero crear el formulario 
dinamicamente, sin existir un formulario visual.

A mi me suena haberlo hecho con Delphi, pero lo que no recuerdo era si 
el form Main de la aplicación siempre tiene que existir como recurso 
visual, es decir con su pas y su lfm, y luego el resto de forms los 
creaba dinámicamente o si también creaba dinámicamente el Main. Miraré 
por los backups a ver si encuentro ese trabajo para confirmar esto.
Un saludo.
> Message: 4
> Date: Wed, 23 Sep 2009 23:44:50 +0200
> From: JoshyFun <joshyfun en gmail.com>
> Subject: Re: [Lazarus-es] Creación dinámica de Forms
> To: Spanish version of Lazarus List
> 	<lazarus-es en lists.lazarus.freepascal.org>
> Message-ID: <44183816.20090923234450 en gmail.com>
> Content-Type: text/plain; charset=ISO-8859-1
>
> Hello Jose,
>
> Wednesday, September 23, 2009, 3:37:41 PM, you wrote:
>
> JAC> Hola, ¿se pueden crear todos los formularios (incluido el "main") de una
> JAC> aplicación de manera dinámica?. Lo pregunto porque al intentarlo, al
> [...]
> JAC> Type
> JAC>   PMiForm: ^TMiForm;
> JAC>   TMiForm = TObject(TForm);
> JAC> Bueno, espero haberme explicado correctamente. Gracias y un saludo.
>
> A ver, nunca he hecho nada de eso, pero se puede hacer, ya que es
> justo lo que hace Lazarus en el .lpr. Vamos que tienes que hacerlo del
> mismo modo que el código del .lpr, por ejemplo:
>
> ------------------------------------------
> program chk;
>
> {$mode objfpc}{$H+}
>
> uses
>   {$IFDEF UNIX}{$IFDEF UseCThreads}
>   cthreads,
>   {$ENDIF}{$ENDIF}
>   Interfaces, // this includes the LCL widgetset
>   Forms, LResources,
>   ufrmMain, ufrmMain2;
>
> begin
>   {$I chkrecover.lrs} //Incluye los recursos de tu programa, entre
>                       //ellos el diseño de los forms
>   Application.Title:='Mi Programa';
>   Application.Initialize;
>   //Aquí puedes llamar a funciones ya, aunque cuidado ya que
>   //no hay ningún form creado.
>   if LoQueQuierasProbar then begin
>     Application.CreateForm(TfrmMain, frmMain);
>   end else begin
>     Application.CreateForm(TfrmMain2, frmMain2);
>   end;
>   Application.Run; //Esto es necesario para crear la
>                    //cola de eventos y el proceso de los mismos
> end.
> -------------------------------------
>
>   





More information about the Lazarus-es mailing list