Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   MDIChild abre otro MDIChild (https://www.clubdelphi.com/foros/showthread.php?t=55213)

Paulao 10-04-2008 17:08:01

MDIChild abre otro MDIChild
 
Señores, no consigo abri un form MDIChild apartir de otro. Hay como hacerlo? Yo puzo el otro form com fsNormal, pero no logre exito. Em mi codigo esta asi:

Cita:

procedure TFRM_CNSCliente.Grid_00DBTableViewDblClick(Sender: TObject);
begin
if not Assigned(FRM_MNTCliente) then
begin
FRM_MNTCliente := TFRM_MNTCliente.Create(Self);
FRM_MNTCliente.FormStyle := fsNormal;
FRM_MNTCliente.Visible := True;
Self.Close;
FRM_MNTCliente.ShowModal;
FreeAndNil(FRM_MNTCliente);
end;
end;
Se for posible abri el form, pero no fsNormal, mas si fsMdiChild, yo quedaria bien. Pero si no es posible, puede ser normal mismo. Siempre que hago como estas arriba, viene la exception: CANNOT MAKE VISIBLE WINDOW MODAL. Mira, el form FRM_MNTCliente es fsMdiChild y no fsNormal. Gracias a todos.

eduarcol 10-04-2008 17:24:01

si lo quieres como MDI que es lo que entiendo este codigo deberia servirte, fijate que cambio el Show por ActiveMdiChild, si no entiendes avisa a ver si alguien traduce

Código Delphi [-]
procedure TFRM_CNSCliente.Grid_00DBTableViewDblClick(Sender: TObject);
begin
   if not Assigned(FRM_MNTCliente) then
   begin 
      FRM_MNTCliente := TFRM_MNTCliente.Create(Self);
      FRM_MNTCliente.ActiveMdiChild;
   end;
end;

jachguate 10-04-2008 17:25:40

La excepción salta porque pones visible a True y luego llamas a ShowModal.

Debiera funcionar así:

Código Delphi [-]
procedure TFRM_CNSCliente.Grid_00DBTableViewDblClick(Sender: TObject);
begin
  if not Assigned(FRM_MNTCliente) then
  begin
    FRM_MNTCliente := TFRM_MNTCliente.Create(Self);
    try
      FRM_MNTCliente.FormStyle := fsNormal;
      Self.Close;
      FRM_MNTCliente.ShowModal;
    finally
      FreeAndNil(FRM_MNTCliente);
    end;
  end;
end;

Finalmente, si querés que el form creado sea también un MDIChild, te recuerdo que estos formularios no pueden mostrarse de manera modal, por lo que tendrías que mostrarlo con Show y esperar a que el usuario lo cierre para destruirlo.

Hasta luego.

;)

Paulao 10-04-2008 17:43:34

EduarCol, yo hizo e ok, pero yo necessito cierrar el Form que haz el chamado, asi, haciendo con tu codigo:

Cita:

procedure TFRM_CNSCliente.Grid_00DBTableViewDblClick(Sender: TObject);
begin
if not Assigned(FRM_MNTCliente) then
begin
FRM_MNTCliente := TFRM_MNTCliente.Create(Self);
FRM_MNTCliente.ActiveMdiChild;
Self.Close;
end;
end;
Si hago asi, el form no aparece en la pantalla, pero el esta creado, pero solo no muestra. Es este mi problema, por eso yo intente hacer con el form Modal, pero tambien no logre exito.

eduarcol 10-04-2008 17:52:29

Cambia el self por el nombre del formulario y deberia funcionar bien.

Código Delphi [-]
procedure TFRM_CNSCliente.Grid_00DBTableViewDblClick(Sender: TObject);
begin
   if not Assigned(FRM_MNTCliente) then
   begin 
      FRM_MNTCliente := TFRM_MNTCliente.Create(Self);
      FRM_MNTCliente.ActiveMdiChild;
      FRM_MNTCliente.Close;
   end;
end;

Paulao 10-04-2008 17:58:11

Descobri el error. Es que yo no puedo llamar um Form MdiChild de otro Form MDIChild.

eduarcol 10-04-2008 18:02:05

1 Archivos Adjunto(s)
claro que si se puede, de hecho lo acabo de hacer... antes de responderte arme un ejemplo y funciono bien... te adjunto el ejemplo para que lo analizes


La franja horaria es GMT +2. Ahora son las 13:29:18.

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