Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Eliminar fsMDIChild desde fsMDIForm (https://www.clubdelphi.com/foros/showthread.php?t=70340)

riddick 15-10-2010 05:48:04

Eliminar fsMDIChild desde fsMDIForm
 
Hola a todos, soy nuevo en este foro y me gustaría que alguien me pudiera ayudar con mi problema.

Bueno mi problema es el siguiente estoy trabajando con formularios MDI y necesito eliminar o cerrar un fsMDIChild desde el form padre y crear otro fsMDIChild, para crear el form padre utilizo lo siguiente:
Código Delphi [-]
        fVentas:=TframeVentas.Create(self);
        fVentas.BorderStyle:=bsNone;
        fVentas.Show;

espero y este explicando bien de ante mano gracias.

Neftali [Germán.Estévez] 15-10-2010 12:27:28

Hola Riddick, bienvenido al foro.

Cita:

Empezado por riddick (Mensaje 379359)
Bueno mi problema es el siguiente estoy trabajando con formularios MDI y necesito eliminar o cerrar un fsMDIChild desde el form padre y crear otro fsMDIChild, para crear el form padre utilizo lo siguiente:

fVentas:=TframeVentas.Create(self);
fVentas.BorderStyle:=bsNone;
fVentas.Show;

Para cerrar/ocultar el form que has creado deberías bastar con que hagas algo así:

Código Delphi [-]
  fVentas.Hide;
o 
  fVentas.Close;

No se si es a esto a lo que te refieres.

Cuando añadas código Delphi, utiliza TAG's, verás que se lee mejor.

cloayza 15-10-2010 17:54:50

Supongamos que en este boton es donde creas los formularios fsMDIChild.

Código Delphi [-]
procedure Tform1.button1Click(Sender:TObject);
begin
        fVentas:=TframeVentas.Create(self);
        fVentas.BorderStyle:=bsNone;
        fVentas.Show;
end;

Cada vez que ejecutes este codigo se creara un nuevo formulario. Si lo que deseas es que solo se cree uno y cuando lo cierres se elimine de memoria deberias hacer lo siguiente.

Código Delphi [-]
procedure Tform1.button1Click(Sender:TObject);
begin
        {Si el formulario esta creado, sales del procedimiento}
        if Assigned(fVentas) Then Exit;

        {Si no esta creado lo crea}
        fVentas:=TframeVentas.Create(self);
        fVentas.BorderStyle:=bsNone;
        fVentas.Show;
end;

En el evento OnClose del Formulario fVentas debes agregar esta linea de codigo

Código Delphi [-]

procedure TfVentas.Button1Click(Sender: TObject);
begin
       fventas.Close;
end;

procedure TfVentas.FormClose(Sender: TObject; var Action: TCloseAction);
begin
       Action:=caFree;
end;

Saludos.

ecfisa 15-10-2010 19:07:50

Hola riddick.

Es recomendable hacer una busqueda previa en el foro antes de realizar el post.
Como recordaba haber visto este tema muchas veces, hice una simple busqueda con la palabra 'MDIChild':

post 1
post 2
post 3
post 4
post 5
...

Y hay muchos muchos más...

Saludos. :)

cloayza 15-10-2010 19:28:44

Lo que sucede es que el amigo riddick es nuevo por aca y de seguro le falto leer la Guía de Estilo :D

Saludos

riddick 16-10-2010 06:01:12

Eliminar fsMDIChild desde fsMDIForm
 
hola gracias a todos por comentar, ya he resueltos el problema utilizando

Código Delphi [-]
fventas.close;

pero me surge otro problema si necesito crear otra vez el mismo formulario ya no me permite crearlo y utilizo lo que me ha aconsejado para que cuando presione el boton nada mas se pueda crear una vez
Código Delphi [-]

       if Assigned(fVentas) Then Exit;

        fVentas:=TframeVentas.Create(self);
        fVentas.BorderStyle:=bsNone;
        fVentas.Show;
        fventas.Left:=0;
        fventas.Top:=0;

y en el close del formulario lo tengo asi

Código Delphi [-]
procedure TframeVentas.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;

de ante mano gracias a todos por ayudarme y disculpen si no me doy a explicar bien, soy nuevo en esto gracias

ecfisa 16-10-2010 06:37:29

Cita:

Empezado por riddick (Mensaje 379465)
hola gracias a todos por comentar, ya he resueltos el problema utilizando ...

Hola riddik, así como te recomendé que primero busques si ya fué tratado el problema, tengo que destacar
el que hayas posteado de que forma lo solucionaste. Es algo que todos deberían hacer y en la práctica, pocos lo hacen.

Sobre el otro problema, me surge una duda por un nombre en tu código: ¿ Es un TForm o un TFrame ?

Saludos. :)


La franja horaria es GMT +2. Ahora son las 16:43:15.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi