Hello Paola,
Friday, April 15, 2011, 9:35:43 PM, you wrote:
PB> tengo un form editpaises...
PB> type
PB> { TEditPaises }
PB> TEditPaises = class(TForm)
PB> BitBtn1: TBitBtn;
PB> BitBtn2: TBitBtn;
PB> DBEdit1: TDBEdit;
PB> Label1: TLabel;
PB> private
PB> { private declarations }
PB> public
PB> { public declarations }
PB> end;
PB> ahora, en el form principal de la aplicaci�n, en el evento oncreate, PB> intento registrar esta clase:
PB> RegisterClass(TEditPaises);
PB> y obtengo el error:
PB> frmMain.pas(192,28) Error: Incompatible type for arg no. 1: Got "Class PB> Of TEditPaises", expected "WNDCLASS"
Eso es por que "RegisterClass" ya lo incorpora Lazarus para otras tareas (streaming de componentes). Primero tienes que crearte una clase que se encargue de registrar las clases y devolvertelas por el nombre asignado. Por supuesto no puedes usar el nombre de "RegisterClass", yo usar�a algo como "RegisterMyForm" o algo m�s particular en el nombre.
Para a�adir el form al sistema de registro que hayas creado tienes que hacerlo usando el "Initialize" de cada "Unit", de modo que las clases se autoregistren al cargarlas en el uses, sin tener que instanciarlas. Si lo haces en el "OnCreate" primero ya la habr�s instanciado, por lo tanto ya sab�as su nombre, entonces el sistema de registro no sirve para nada (siempre que sea eso lo que quieres hacer).
PB> alguna idea?
PB> Intento con esto crear un form sabiendo su nombre de clase (que est� en PB> un string)
B�sicamente creas una clase que lleve un listado de clases con un nombre asociado, lo cual es b�sicamente un "TStringList" con un par de m�todos para buscar un nombre y para "registrar" clases nuevas. Esa clase la metes en un Unit y debe de aparecer de los primeros en tu .lpr, al menos antes de ning�n form. En todo los forms que quieres que se puedan crear con la factor�a debes de a�adir en el uses la Unit que gestiona tu factor�a y al final del form a�adir:
Initialization
MyFactory.RegisterMyForm(TForm1);
Para que cuando lo metas en un uses, autom�ticamente quede registrado.
Este ejemplo es m�s correcto y m�s vers�til, tienes m�s control de todo lo que sucede:
http://clubdelphi.com/foros/showpost.php?p=10811&postcount=4
Best regards,
Jos�