Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-01-2010
morfeo21 morfeo21 is offline
Miembro
 
Registrado: may 2003
Posts: 69
Poder: 21
morfeo21 Va por buen camino
Abrir formulario solo una vez

Hola, que tal?

Mi problema es el siguiente:


Tengo un formulario MDI Parent y un formulario MDI Children. Al hacer clic en el boton para abrir el formulario children me lo abre como tantas veces haga clic en el boton sin importar si el form ya esta abierto o no. Como puedo solucionar esto?. gracias de Antemano



el codigo que utilizo es el siguiente:
en el formulario

Código Delphi [-]
procedure XOrdenCompra001(Owner:TComponent);
 Begin
  FrmOrdenCompra001:=TFrmOrdenCompra001.Create(Owner);
  FrmOrdenCompra001.Show;
End;

cuando lo llamo
Código Delphi [-]
   XOrdenCompra001 (Self)

AÑADIDO (Neftalí): Utiliza etiquetas cuando coloque código Delphi.

Última edición por Neftali [Germán.Estévez] fecha: 26-01-2010 a las 12:12:15.
Responder Con Cita
  #2  
Antiguo 25-01-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Cita:
Empezado por morfeo21 Ver Mensaje
Hola, que tal?

Mi problema es el siguiente:


Tengo un formulario MDI Parent y un formulario MDI Children. Al hacer clic en el boton para abrir el formulario children me lo abre como tantas veces haga clic en el boton sin importar si el form ya esta abierto o no. Como puedo solucionar esto?. gracias de Antemano

Seria muy, pero muy interesante, si pusieras el código de como abres el formulario..
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #3  
Antiguo 25-01-2010
Avatar de look
look look is offline
Miembro
 
Registrado: sep 2007
Ubicación: The Shire
Posts: 656
Poder: 17
look Va camino a la fama
Cita:
Empezado por morfeo21 Ver Mensaje
Hola, que tal?

Mi problema es el siguiente:


Tengo un formulario MDI Parent y un formulario MDI Children. Al hacer clic en el boton para abrir el formulario children me lo abre como tantas veces haga clic en el boton sin importar si el form ya esta abierto o no. Como puedo solucionar esto?. gracias de Antemano

Código Delphi [-]
  if not Assigned(Form2) then
  begin
    Form2:=TForm2.create(nil);
  end
  else
  begin
    Form2.show;
  end;
__________________
all your base are belong to us
Responder Con Cita
  #4  
Antiguo 26-01-2010
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola morfeo21, como te indican deberías utilizar la función Assigned, pero si en el OnClose de tu MDIChild liberaras con Action:=caFree; solo va a funcionar la primera ves ya que no te lo pone a nil, por lo que la siguiente ya no se abriría tu formulario.

Código Delphi [-]
//En el OnClose liberas con FreeAndNil
procedure TForm2.FormClose(.....);
begin
 FreeAndNil(Form2);
end;
 
//Y en la llamada a tu MDIChild
if Not Assigned(Form2) then
  Form2:=TForm2.create(Self);

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #5  
Antiguo 26-01-2010
Avatar de jcarteagaf
[jcarteagaf] jcarteagaf is offline
Miembro Premium
 
Registrado: abr 2006
Ubicación: La Paz, Bolivia
Posts: 651
Poder: 19
jcarteagaf Va por buen camino
Tengo una funcion que me hace precisamente eso

Código Delphi [-]
procedure ShowFormMDI(TfrmClass: TFormClass;bMultiInstace : boolean);
var
  i : SmallInt;
  F : TForm;
begin
  if not bMultiInstace then
    for i := Application.MainForm.MDIChildCount - 1 downto 0 do
    begin
      F := Application.MainForm.MDIChildren[i];
      if F.ClassType = TfrmClass then
      begin
        if F.WindowState = wsMinimized then
           F.WindowState := wsNormal;
        F.BringToFront;
        Exit;
      end;
    end;
  with TfrmClass.Create(Application) do
    Show;
end;

y lo llamo de la siguiente forma

Código Delphi [-]
ShowFormMDI(TFormaHija,false);

El segundo parametro te indica si se permite o no que se llame mas de una vez al formulario. Si no lo permites y el formulario esta abierto lo activara.

Espero te sirva

Saludos.
Responder Con Cita
  #6  
Antiguo 27-01-2010
morfeo21 morfeo21 is offline
Miembro
 
Registrado: may 2003
Posts: 69
Poder: 21
morfeo21 Va por buen camino
Gracias Caro era justo lo que necesitaba ya lo estoy implementando en mi proyecto, siempre hay algo que se aprende todos los dias
Responder Con Cita
  #7  
Antiguo 12-06-2013
hectormea hectormea is offline
Registrado
NULL
 
Registrado: jun 2013
Posts: 1
Poder: 0
hectormea Va por buen camino
gracias

Cita:
Empezado por Caro Ver Mensaje
Hola morfeo21, como te indican deberías utilizar la función Assigned, pero si en el OnClose de tu MDIChild liberaras con Action:=caFree; solo va a funcionar la primera ves ya que no te lo pone a nil, por lo que la siguiente ya no se abriría tu formulario.

Código Delphi [-]
//En el OnClose liberas con FreeAndNil
procedure TForm2.FormClose(.....);
begin
 FreeAndNil(Form2);
end;
 
//Y en la llamada a tu MDIChild
if Not Assigned(Form2) then
  Form2:=TForm2.create(Self);

Saluditos




muchas gracias soy nuevo en estoy y me a servido mucho!
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
Abrir el programa solo una vez Paulao Varios 8 10-04-2008 11:15:30
Abrir Formulario MDI b1ast3r OOP 2 08-04-2008 18:18:59
Abrir un formulario hijo solo una vez Walterdf Varios 5 08-04-2008 17:15:01
Aplicacio abrir solo una vez Paulao Varios 1 03-04-2008 17:55:30
Abrir solo hasta n-registros copett Tablas planas 1 27-05-2006 22:18:24


La franja horaria es GMT +2. Ahora son las 01:57:38.


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