Ver Mensaje Individual
  #1  
Antiguo 02-03-2010
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Reputación: 20
movorack Va camino a la famamovorack Va camino a la fama
Creador generico de formulario.

Hola club... aqui liandome la cabeza yo solo...

en mis progamas siempre para crear/mostrar los formularios uso las siguientes lineas:
Código Delphi [-]
if not Assigned(Form) then
  Application.CreateForm(TForm, Form);
Form.Show;

y luego al cerrar los formularios en el evento OnClose le coloco estas otras lineas
Código Delphi [-]
  Action := caFree;
  Form := nil;

Como el código lo tengo que repetir una y otra vez, me puse a darme solo contra el código e hice este procedimiento, basandome en lo que he leido aqui en el club y en otras partes:

Código Delphi [-]
procedure CreateForm(ClassName: TPersistentClass; FormName: String);
  var
    Component : TComponent;
begin
  Component := Application.FindComponent(FormName);
  if not Assigned(Component) then begin
    try
      FindClass('T'+FormName);
    except
      classes.RegisterClass(ClassName);
    end;
    Application.CreateForm(TComponentClass(ClassName), TForm(FormName));
  end else
      TForm(Component).Show;
end;

Funciona!... pero cuando voy a cerrar el formulario... en algunas ocasiones, me lanza un error "Invalid pointer"... y no se donde está el error exactamente pq es lo único que dice... además que no se deja capturar para revisión... solo sale el error y ya...

de ahi en adelante, el programa sigue trabajando bien hasta que lo cierro y vuelve a sacar el error una y otra vez.

el error "Invalid pointer" no sale siempre, como puede salir en relación 1:10, tambien puede ser 1:1 o 1:20...

se que es un error en el procedimiento que cree, pq al usarlo de la otra manera... ya no salen errores.

bueno ya dejo de tirar lora... y si alguien me puede hacer un comentario o aporte... se lo agardeceré.
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita