Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-03-2011
Avatar de granodetoro
granodetoro granodetoro is offline
Miembro
NULL
 
Registrado: mar 2011
Posts: 71
Poder: 14
granodetoro Va por buen camino
Post como evitar que un formulario MDICHILd se repita cada ves que lo llamo

hola,tengo un form1 con form.style:MDI con un menu principal y dentro de este ahy una opcion que dice formulario 1 y cuando damos clic , llama a otro formulario que es form2 con formstyle:MDIchild y resulta que si sigo dando clic sale una copia de form2 y si damos clic denuevo sigue apareciendo otra copia...bueno quiero que solo pueda aparecer una vez y no si doy clic que no salga otra copia de form2 ...ayuda
Responder Con Cita
  #2  
Antiguo 29-03-2011
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
La función "Assigned" te puede servir...


o puedes usar este ejemplo: Your Fist MDI Delphi Project en Delphi About
__________________

Responder Con Cita
  #3  
Antiguo 30-03-2011
Avatar de granodetoro
granodetoro granodetoro is offline
Miembro
NULL
 
Registrado: mar 2011
Posts: 71
Poder: 14
granodetoro Va por buen camino
como evitar que un formulario MDICHILd se repita cada ves que lo llamo

tengo un menu principal que llama a un formulario MDIchild entonce cada vez que lo llama el mismo formulario se repite y solo quiero que aparezca una vez

ayudar es aportar y no solo es postear lo0l
ayudenme
Responder Con Cita
  #4  
Antiguo 30-03-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola granodetoro.

Como verás he combinado tus dos mensajes, ya que aunque el título es diferente en los dos planteas la misma situación.
Por favor si no encontras respuesta a tu problema, continua preguntando en el mismo hilo.

Si tu deseo es cambiar el título por uno más significativo, podés solicitarlo a cualquier moderador.

Nota: Cambié el título por el del segundo mensaje, por ser este mas representativo de lo que buscas.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 30-03-2011 a las 01:14:20.
Responder Con Cita
  #5  
Antiguo 30-03-2011
Avatar de granodetoro
granodetoro granodetoro is offline
Miembro
NULL
 
Registrado: mar 2011
Posts: 71
Poder: 14
granodetoro Va por buen camino
bueno grax ecfisa
Responder Con Cita
  #6  
Antiguo 30-03-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola granodetoro.

Aunque el C++ no es mi fuerte, intentá con este código que acabo de probar y no permite abrir el segundo form más de una vez:
Código:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 for(int i = MDIChildCount-1; i >= 0; i--)
  if(MDIChildren[i]->Name == "Form2"){
     MDIChildren[i]->BringToFront();
  return;
  };
  Application->CreateForm(__classid(TForm2), &Form2);
}
Tendrías que sacar 'Form2' (o como se llame tu segundo form ) de: Proyect->Options->Forms->'Auto-create forms'

Y también es buena idea agregar en el evento OnClose del segundo form:
Código:
void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action)
{
 Action= caFree;
}
Sin lugar a dudas algún compañero experto en C++ te sugiera algún modo más elegante y eficiente de realizarlo, pero por ahora...

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 30-03-2011 a las 02:30:02.
Responder Con Cita
  #7  
Antiguo 30-03-2011
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 20
movorack Va camino a la famamovorack Va camino a la fama
en realidad solo debes llamarlo como a otro form.... es decir...

Código Delphi [-]
if TFrmClientes = nil then
  Application.CreateForm(TFrmClientes, FrmClientes);
FrmClientes.show;

Aquí te pongo una función que me imagino la corregiran pero estoy usandola para crear los formularios:

Código Delphi [-]
procedure TFrmMain.CreateForm(AClass: TPersistentClass; FormName: String; ShowModal : Boolean);
  var
    Component : TComponent;
begin
  Component := Application.FindComponent(FormName);

  if not Assigned(Component) then begin
    try
      FindClass('T'+FormName);
    except
      classes.RegisterClass(AClass);
    end;
    Application.CreateForm(TComponentClass(AClass), Component);
  end;

  if Not ShowModal then
    TForm(Component).Show
  else begin
    TForm(Component).ShowModal;
    TForm(Component).Free;
  end;
end;

y entonces al tratar de crear o mostrar el formulario solo llamo:

Self.CreateForm(TPeriodosInv, 'PeriodosInv');

para ambas opciones, ten en cuenta que al cerrar el formulario debes liberarlo:

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

Saludos.
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
  #8  
Antiguo 30-03-2011
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 20
movorack Va camino a la famamovorack Va camino a la fama
jejejejeje.... no habia visto que era C....

que pena... TRAGAME TIERRA!
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
¿Cómo evitar que al cerrar el formulario principal se cierren los demás? Master23 Varios 5 06-06-2010 13:14:46
acceder a los controles de otro formulario MDIChild!! _CALI Varios 1 04-12-2009 22:00:30
Evitar cerrar un formulario desde un componente genius Varios 1 23-11-2006 15:55:42
Evitar cierre del formulario. Tonio Varios 3 16-09-2005 23:47:39
como llamo al shellexecute sarga API de Windows 2 14-04-2004 15:18:49


La franja horaria es GMT +2. Ahora son las 01:12:49.


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
Copyright 1996-2007 Club Delphi