<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
  <META NAME="GENERATOR" CONTENT="GtkHTML/3.26.2">
</HEAD>
<BODY>
Se me tiene que haber olvidado programar :D, las medicinas (que estos días ando malo), me tienen el cerebro frito, o no se qué :P<BR>
<BR>
Veamos....<BR>
<BR>
El jue, 25-06-2009 a las 17:52 +0200, JoshyFun escribió:
<BLOCKQUOTE TYPE=CITE>
<PRE>
Hello Giuseppe,

Thursday, June 25, 2009, 5:15:26 PM, you wrote:

>> Pues yo diría que si :)
GLP> Pues yo no veo el error :P

Jajajaja, ahora sacamos los guantes y nos peleamos :)

GLP> form está declarado como variable del tipo TFrmClientes.

El tipo coincide, pero no la instancia a menos que por algún sitio
hagas:

frmClientes:=Self o algo así.

A ver si consigo explicarlo. Supongamos que al hacer un create en vez
de devolvernos un puntero a una nueva instancia, nos devolviera
siempre un número consecutivo 1,2,3,4....

La variable global "frmClientes" inicialmente es igual a nil (cero).
Ahora en tu código haces:

var
  form: TfrmClientes;
begin
  form:=TfrmClientes.Create();
</PRE>
</BLOCKQUOTE>
<BR>
Por un lado, éste código, asigna la variable form a la dirección de memoria de la nueva instancia de TFrmClientes, lanza un show modal (no visualizado en la citación pero lo comento yo) y luego libera esa variable/objeto, pero Form, sólo existe en el ámbito del procedimiento OnClick donde es referenciado, ni siquiera para el resto de la unidad.<BR>
<BR>
<BLOCKQUOTE TYPE=CITE>
<PRE>

Entonces form es igual a "1", ejecutas el showmodal, y dentro del
onclose llamas a "frmClientes" que recordemos es igual a cero, no
igual a "1" que es el que ha originado la llamada. Para eso existe
"Self" para que no tengas que apuntar quién originó la llamada, ese
siempre es "Self".
</PRE>
</BLOCKQUOTE>
<BR>
Pero, dentro del formulario, FrmClientes (que es el nombre asociado al form), es propiamente Self. El formulario, se encuentra en otro ámbito, y no debería de hecho ni saber de la existencia del valor de la variable "form". Yo le paso su sentencia de cerrado, que debería cerrarlo, y el código continuar después del modal, y liberarse con FreeAndNil(form).<BR>
<BR>
<BLOCKQUOTE TYPE=CITE>
<PRE>

>> Cambia el frmClientes.Close por Self.Close ;)
GLP> Ok, lo probaré, pero igualmente, debería funcionar como lo he puesto :P

No por lo explicado arriba, a menos que haya algo de por medio que
invalide mi exposición.

</PRE>
</BLOCKQUOTE>
<BR>
Pues, a no ser que yo esté equivocado (que no digo que no sea probable), queda invalidado :D
</BODY>
</HTML>