Hola, creo que en los posts anteriores no me he explicado del todo bien, por eso vuelvo a explicar el problema que tengo desde el principio. Imaginemos dos unidades. La unidad 1 contiene un formulario que quiero activar desde la unidad 2.
Código:
UNIDAD1
=======
type
TWinForm = class(System.Windows.Forms.Form)
{$REGION 'Designer Managed Code'}
strict private
Components: System.ComponentModel.Container;
procedure InitializeComponent;
{$ENDREGION}
strict protected
/// <summary>
/// Clean up any resources being used.
/// </summary>
procedure Dispose(Disposing: Boolean); override;
private
{ Private Declarations }
public
constructor Create;
end;
Código:
UNIDAD2
=======
...
uses unidad1; // Para que pueda llamar al TWinForm de la Unidad1.
...
Begin
//Imaginemos que pulso un botón y muestro la TWinForm de la unidad1
TWinForm.Create.Show;
end;
...
Begin
//Ahora imaginemos que ya tenemos el formulario creado pero quiero poner su propiedad enable a false.
TWinForm.Enable := False; // Esta línea de un error al compilar porque dice que la propiedad enable no está definida. La cosa iría como se especifica en la siguiente línea.
TWinForm.Create.Enable := False; // Pero esta línea no pone el formulario ya creado en enable, ya que volvemos a llamar a create para que se cree otro formulario y no se actua sobre el que ya está creado.
End;
La posibilidad que he encontrado para solucionar este problema es:
Código:
Unidad2
======
...
Var
Form1 : TWinForm;
Begin
Form1.Create.Show;
Form1.Enable := True; // Esta vez, esta línea sí que se puede compilar y con esto quedaría el problema que planteo solucionado.
End;
...
Pero ahora imaginemos que el form sobre el que quiero actuar es el principal, el que se crea por defecto al arrancar la aplicación y no se llama a través de ninguna variable. No he encontrado ninguna solución para poder actuar sobre la propiedad Enable del formulario principal.
Un saludo.