Ver Mensaje Individual
  #6  
Antiguo 24-05-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 29
Lepe Va por buen camino
El mensaje original es de hace 4 años... pero bueno, las cosas en ese sentido no han cambiado mucho, los MDI siguen estando por ahí (aunque se desaconseja su uso) y la gente trabaja como quiere y le da la gana (esto último siempre ha sido así ).

El método que propones, me gusta aunque le veo un bug que no me gusta. La ventana que se abre oculta la barra de herramientas del supuesto MDI, al no ser un entorno MDI real, es normal que ocurra.

Otra solución del mismo estilo, es crear las ventanas asignándoles el padre hacia la ventana principal:
Código Delphi [-]
  childWindow := TForm1.Create(frmMain);
  childWindow.Parent := frmMain // esta línea se me olvidó y es la más importante  
Aunque tampoco me convence mucho los efectos que tiene.

Yo si prefiero a los MDI reales y la forma de trabajo con ellos me gusta bastante.

No suelo ocultar las ventanas, sino que las destruyo, pero alguna vez intenté esto y funcionaba:
Código Delphi [-]
type
  TBaseForm = class(TForm)
  private
    Fvisible: Boolean;
    procedure SetVisible(const Value: Boolean);
  public
    { public declarations }
    constructor Create(Aowner:TComponent); override;
    procedure Show;
    procedure Hide;
  published
    property Visible:Boolean read Fvisible write SetVisible;
  end;

implementation

uses publica;

{$R *.dfm}

constructor TBaseForm.Create(Aowner: TComponent);
begin
  inherited Create(aowner);
  visible :=  fsvisible in FFormState;
end;

procedure TBaseForm.Hide;
begin
  ShowWindow(Handle, sw_HIDE);
  FVisible := False;
  DoHide;
end;

procedure TBaseForm.SetVisible(const Value: Boolean);
begin
  if Value <> FVisible then
  begin
    if Value  then  Show
    else Hide;
  end;
end;

procedure TBaseForm.Show;
begin
  ShowWindow(Handle, sw_Show);
  FVisible := True;
  DoShow;
end;

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

Última edición por Lepe fecha: 25-05-2007 a las 16:44:46. Razón: faltaba childwindow.Parent := frmMain
Responder Con Cita