Ver Mensaje Individual
  #3  
Antiguo 11-02-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
1. Cuando cierras el formulario, por defecto sólo se oculta y por ello al abrirlo de nuevo todo sigue igual. Puedes cambiar este comportamiento poniendo

Código Delphi [-]
Action := caFree;

en el evento OnClose del formulario F2. Nota no obstante que entonces deberás crearlo nuevamente cuando lo quieras mostrar.

2. Un formulario puede acceder a las componentes y propiedades públicas de cualquier otro formulario con tan sólo incluir su unidad en la cláusula uses. Sin embargo, tal como lo planteas es una mala práctica:

¿Qué hace F2?

Permite al usuario seleccionar ciertos valores. Tal y como, por ejemplo, un cuadro "Abrir archivo" le permite seleccionar un archivo. Dicho de otra manera, F2 es un formulario meramente auxiliar y no tiene porqué saber que pasa con esos valores.

A quien sí le importa es a F1, ya que es quien los requiere. Lo usual es que F1 use F2.ShowModal para mostrar al formulario auxiliar ya que de esta manera, tiene control de cuándo se cierra y puede así tomar sus valores:

Código:
F2.ShowModal;
Variables <-- F2.Valores
De hecho F1 puede acceder directamente a los combos de F2. Pero esto también es mala idea pues te limita a poder en un futuro cambiar la interfaz de F2. A fin de cuentas a F1 no le interesa cómo hace F2 para obtener sus valores, sólo requiere estos últimos. Es lo mismo que con el mencionado cuadro "Abrir archivo". Cuando lo usamos no sabemos con precisión que controles use internamente, sólo nos interesa su propiedad FileName.

Entonces, lo correcto es crear propiedades públicas, por ejemplo una por cada valor requerido. Cuando F2 se cierre, en su evento OnClose llena estas propiedades tomando los valores de sus combos. Así F1 sólo necesita acceder a esas propiedades públicas.

// Saludos
Responder Con Cita