Ver Mensaje Individual
  #9  
Antiguo 09-11-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 31
Lepe Va por buen camino
[sarcasmo]Tienes razón, el enrevesado eres tú [/sarcasmo]

Ya en serio, el hecho de "necesitar" los uses de forma circular, es causa y consecuencia de un mal diseño.

Imagina, tengo una ventana principal, Form1, y después dos ventanas Form2 y Form3. Ahora quiero usar las 3 de forma circular, y estoy en problemas.

La solución: Crear otra unidad (sin Form asociado), además me ayudo de un tipo enumerado que me evita las referencias circulares:
Código Delphi [-]

Unit publica;

interface
   Uses unit1, unit2, unit3;

Type TAbrir = (aForm1, aForm2, aForm3)

procedure Abrir(QueAbrir:TAbrir);
begin
 case QueAbrir of
   aForm1 : TForm1.Create(application);
   aForm2 : TForm2.Create(application);
   aForm3 : TForm3.Create(application);
end;

Ahora Form1, Form2 y Form3 harán uso de la unidad publica, pero ya estamos evitando crear referencias circulares:
Código Delphi [-]
Unit Unit2;

interface

uses publica;

IMPLEMENTATION

procedure TForm2.blabla(...);
begin 
   Form2 := publica.Abrir(aForm2);
end;

Y en otro sentido: Si las clases comparten atributos, será porque tienen algo en común, por tanto, es lógico que compartan la misma unidad ¿no?

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita