Hola JoseQ
tengo un problema similar
uso una clase principal para crear mis Forms
paso como parametro lo necesario para crear mi ventana desde dicha clase
Código Delphi
[-]
procedure TKyndo.CrearVentana(InstanceClass: TFormClass;var Reference;VentanaModal:Boolean=False);
begin
Application.CreateForm(InstanceClass,Reference);
with TForm(Reference) do
begin
Color:=Self.sColor;
FormStyle:=Self.sFormStyle;
WindowState := wsNormal;
Position:=poScreenCenter;
KeyPreview:=True;
OnKeyDown:=FormKeyDown;
...
donde Reference es la variable global de la clase del form
invoco ese procedimiento de la siguiente manera
Código Delphi
[-]
...
var
FrmPrivilegios:TFrmPrivilegios;
...
begin
Kyndo.CrearVentana(TFrmPrivilegios,FrmPrivilegios,False);
el problema es que ahora puse un procedimiento global en el KeyDown de los formularios donde hago un Close a cualquier Form
Código Delphi
[-]
procedure TKyndo.FormKeyDown(Sender: TObject; var Key: Word;Shift: TShiftState);
begin
case key of
VK_HOME:;
VK_RETURN:; VK_ESCAPE:
begin
(Sender as TForm).close; end;
end;
end;
pero me saca el error que planteas, el cual no ocurre dando click en la X del Form, solo ocurre si se invoca el evento Close
he intentado todo, Action:=caFree en el FormClose, TForm(Sender).Destroy, FreeAndNil(TForm(Sender)) y TForm(Sender).Free en el FormKeyDown pero no resulta...
e intentado acomodarme a tu solucion, pero no entiendo bien tu clase
Tactivar, alguien entiende este error?
gracias
saludos desde Colombia