Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-01-2015
Avatar de jeremiselxi
jeremiselxi jeremiselxi is offline
Miembro
 
Registrado: ago 2008
Posts: 199
Poder: 16
jeremiselxi Va por buen camino
Cerrar varios formularios abiertos

Buenos días.

Hoy estaba realizando la opción cerrar sesión en una aplicación con la finalidad de poder cerrar todas las ventanas y dejar solo la del formulario donde realizan el login, en este sentido, ¿existe alguna propiedad o algo que tengan todos los formularios en común que pueda cerrar varios formularios al mismo tiempo y dejar solo el que quiero?

Saludos y muchas bendiciones para todos.
__________________
Cristo te ama, ven a d él, ya k te espera con los brazos abiertos. Dios te bendiga mucho
Responder Con Cita
  #2  
Antiguo 29-01-2015
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.265
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Puedes recorrer todos los formularios de la aplicación y cerrarlos uno a uno.
Si lo necesitas puedes "saltarte" el actual...

Código Delphi [-]
var
  i:integer;
  F:TForm;
begin
  // recorrer los componehtes
  for i := 0 to (Application.ComponentCount - 1) do begin
    // Nos centramos en los formularios
    if (Application.Components[i] is TForm) then begin
      F := TForm(Application.Components[i]);
      // No es este?
      if (F <> Self) then begin
        F.Close;
      end;
    end;
  end;
end;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 29-01-2015
Avatar de jeremiselxi
jeremiselxi jeremiselxi is offline
Miembro
 
Registrado: ago 2008
Posts: 199
Poder: 16
jeremiselxi Va por buen camino
Post

Cita:
Empezado por Neftali Ver Mensaje
Puedes recorrer todos los formularios de la aplicación y cerrarlos uno a uno.
Si lo necesitas puedes "saltarte" el actual...

Código Delphi [-]
var
  i:integer;
  F:TForm;
begin
  // recorrer los componehtes
  for i := 0 to (Application.ComponentCount - 1) do begin
    // Nos centramos en los formularios
    if (Application.Components[i] is TForm) then begin
      F := TForm(Application.Components[i]);
      // No es este?
      if (F <> Self) then begin
        F.Close;
      end;
    end;
  end;
end;
Muchas gracias por responder tan rápido.

Tengo la siguiente inquietud porque no se que pasa.

Cree un proyecto nuevo agregué varios botones y varios formularios al form principal llamado form1 por ejemplo, y agregué un botón con este código, al presionar este botón automáticamente me cierra todos los formularios, pero al probar en mi aplicación se cierran todas las ventanas y hay que abrir nuevamente la aplicación y esto no es lo que quiero.


Mi aplicación consta de lo siguiente:

el formprincipal donde se inicia solicitando que digite el usuario y la contraseña adjunto el código.

adjunto el código:

Código Delphi [-]

unit Form_Login_Principal;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, jpeg, ExtCtrls, StdCtrls, Buttons;

type
  TForm1_Form_Login_Principal = class(TForm)
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Image2: TImage;
    txtusuario: TEdit;
    txtpassword: TEdit;
    Image1: TImage;
    Label3: TLabel;
    Button1: TButton;
    procedure BitBtn1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormShow(Sender: TObject);
    procedure Button1Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1_Form_Login_Principal: TForm1_Form_Login_Principal;

implementation

uses tablas, principal, administraciondesistemas, Adm_accesos_y_clausuras,
  esperar, cambiar_contrasena;

{$R *.dfm}






procedure TForm1_Form_Login_Principal.BitBtn1Click(Sender: TObject);
begin
if (txtusuario.Text='') or (txtpassword.Text='') then
    begin
      ShowMessage('Usuario y/o Contraseña Incorrecta');
    end
else
if (txtusuario.Text <>'') and (txtpassword.Text<>'') then
    begin

      form_tablas.queryiniciarsession.SQL.Clear;
      form_tablas.queryiniciarsession.SQL.add('select * from Usuarios where Usuario =:usu');
      form_tablas.queryiniciarsession.Parameters.ParamByName('usu').Value := txtusuario.Text;
      form_tablas.queryiniciarsession.Open;


      if (txtpassword.Text = form_tablas.queryiniciarsession.Fieldbyname('Password').Asstring) then
        begin
          ShowMessage('Bienvenido(a) ' + form_tablas.queryiniciarsession.Fieldbyname('Nombre_Completo').Asstring);
          formPrincipal.LabeNombredelUsuario.Caption := form_tablas.queryiniciarsession.Fieldbyname('Nombre_Completo').Asstring;
          txtpassword.Text := '';

         
          if form_tablas.queryiniciarsession.Fieldbyname('CambioProximaSession').Asstring <> 'Si' then
            begin

              formPrincipal.Show;
              Form1_Form_Login_Principal.Visible:= false;
            end
          else
            begin
               showmessage('Debes cambiar tu contraseña');
               form_cambiar_contrasena.show
            end

        end
      else
      begin
      ShowMessage('Usuario y/o Contraseña Incorrecta');
      end
    end;

end;

procedure TForm1_Form_Login_Principal.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//Para cerrar el delphi
Application.Terminate
end;

procedure TForm1_Form_Login_Principal.FormShow(Sender: TObject);
begin
txtusuario.SetFocus;


end;

//agregué este botón para verificar si se cierran todos los formularios menos este.
procedure TForm1_Form_Login_Principal.Button1Click(Sender: TObject);
var
  i:integer;
  F:TForm;
begin
  // recorrer los componehtes
  for i := 0 to (Application.ComponentCount - 1) do begin
    // Nos centramos en los formularios
    if (Application.Components[i] is TForm) then begin
      F := TForm(Application.Components[i]);
      // No es este?
      if (F <> Self) then begin
        F.Close;
      end;
    end;
  end;
end;

end.



Ademas de este formulario, este llama al formulario principal y en este es donde tengo en un menú la opción de cerrar sesión, así como también tengo los botones para abrir los demás formularios..

Código Delphi [-]
unit principal;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Menus, Buttons, jpeg;

type
  TformPrincipal = class(TForm)
    MainMenu1: TMainMenu;
    Panel1: TPanel;
    LabeNombredelUsuario: TLabel;
    Label1: TLabel;
    btnsalir: TBitBtn;
    MiCuenta1: TMenuItem;
    CerrarSession1: TMenuItem;
    CambiarContrasea1: TMenuItem;
    SalirdelSistema1: TMenuItem;
    Panel2: TPanel;
    Panel3: TPanel;
    btnModuloAuditoriaTi: TBitBtn;
    BtnModuloAuditoriaFinanciera: TBitBtn;
    Image1: TImage;
    Image2: TImage;
    Reportes1: TMenuItem;
    Reporteporactividades1: TMenuItem;
    ReportedeActividadesrealizadasporaplicacin1: TMenuItem;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure SalirdelSistema1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Reporteporactividades1Click(Sender: TObject);
    procedure btnmodulodereunionesClick(Sender: TObject);
    procedure btnrutinasClick(Sender: TObject);
    procedure CerrarSession1Click(Sender: TObject);
    procedure CambiarContrasea1Click(Sender: TObject);
    procedure btnModuloAuditoriaTiClick(Sender: TObject);
    procedure cerrarlosformularios();
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  formPrincipal: TformPrincipal;

implementation

uses ModuloAccesosyClausuras, soporte_auditores,
  Adm_accesos_y_clausuras_opc, Reporte_ACTIVIDADES_REALIZADAS,
  procedimientos, ins_procesos, Reporte_de_actividades_por_aplicacion,
  Seguimientos, Reuniones, RutinasTI, Form_Login_Principal,
  cambiar_contrasena, usuarios, modulo_auditoriaTI;

{$R *.dfm}

//creé este procedimiento para verificar si se cierran todos los formularios menos este 
procedure TformPrincipal.cerrarlosformularios();
var
  i:integer;
  F:TForm;
begin
  // recorrer los componehtes
  for i := 0 to (Application.ComponentCount - 1) do begin
    // Nos centramos en los formularios
    if (Application.Components[i] is TForm) then begin
      F := TForm(Application.Components[i]);
      // No es este?
      if (F <> Self) then begin
        F.Close;
      end;
    end;
  end;
end;





procedure TformPrincipal.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
Application.Terminate
end;

procedure TformPrincipal.SalirdelSistema1Click(Sender: TObject);
begin
Application.Terminate;
end;

procedure TformPrincipal.FormShow(Sender: TObject);
begin
formPrincipal.WindowState := wsMaximized;
Form_Adm_accesos_y_clausuras_opc.pasar_fechadeedit_a_timer();
end;

procedure TformPrincipal.Reporteporactividades1Click(Sender: TObject);
begin
Form_Reporte_ACTIVIDADES_REALIZADAS.Fechadesde.Date:= strtodate(datetostr (date));
Form_Reporte_ACTIVIDADES_REALIZADAS.Fechahasta.Date:= strtodate(datetostr (date));
Form_Reporte_ACTIVIDADES_REALIZADAS.show
end;

procedure TformPrincipal.btnmodulodereunionesClick(Sender: TObject);
begin
Form_Reuniones.show
end;

procedure TformPrincipal.btnrutinasClick(Sender: TObject);
begin
Form_RutinasTI.show;
Form_RutinasTI.reiniciar;
end;

procedure TformPrincipal.CerrarSession1Click(Sender: TObject);
begin
if MessageDlg('¿Desea Cerrar la Sesión?', mtInformation, [mbyes, mbno], 0) = mryes then
  begin
    //llamo al procedimiento cerrarlosformularios;
    cerrarlosformularios;
    ShowMessage('Se cerraron todos los formularios');
    formPrincipal.hide;
    Form1_Form_Login_Principal.Show;
    Form1_Form_Login_Principal.txtusuario.Clear;
    Form1_Form_Login_Principal.txtpassword.Clear;
    ShowMessage('Sesión Cerrada');

  end
end;

procedure TformPrincipal.CambiarContrasea1Click(Sender: TObject);
begin
Form_cambiar_contrasena.show;
Form_cambiar_contrasena.txtpassword.Clear;
Form_cambiar_contrasena.NewContrasena.Clear;
Form_cambiar_contrasena.confirmcontrasena.Clear;

end;

procedure TformPrincipal.btnModuloAuditoriaTiClick(Sender: TObject);
begin
Form_modulo_auditoriaTI.show
end;

procedure TformPrincipal.Button1Click(Sender: TObject);
var
  i:integer;
  F:TForm;
begin
  // recorrer los componehtes
  for i := 0 to (Application.ComponentCount - 1) do begin
    // Nos centramos en los formularios
    if (Application.Components[i] is TForm) then begin
      F := TForm(Application.Components[i]);
      // No es este?
      if (F <> Self) then begin
        F.Close;
      end;
    end;
  end;
end;

end.

podrías dame una mano
__________________
Cristo te ama, ven a d él, ya k te espera con los brazos abiertos. Dios te bendiga mucho
Responder Con Cita
  #4  
Antiguo 30-01-2015
engranaje engranaje is offline
Miembro
 
Registrado: may 2011
Posts: 163
Poder: 13
engranaje Va por buen camino
Creo que el problema está en:
Código Delphi [-]
procedure TformPrincipal.FormClose(Sender: TObject;   var Action: TCloseAction); 
begin 
  Application.Terminate 
end;

Si desde TForm1_Form_Login_Principal cierrras TformPrincipal, al cerrar TformPrincipal se dispara su FormClose y por tanto el Application.Terminate de modo que cierras la aplicación.
Responder Con Cita
  #5  
Antiguo 30-01-2015
Avatar de jeremiselxi
jeremiselxi jeremiselxi is offline
Miembro
 
Registrado: ago 2008
Posts: 199
Poder: 16
jeremiselxi Va por buen camino
Cita:
Empezado por engranaje Ver Mensaje
Creo que el problema está en:
Código Delphi [-]
procedure TformPrincipal.FormClose(Sender: TObject;   var Action: TCloseAction); 
begin 
  Application.Terminate 
end;

Si desde TForm1_Form_Login_Principal cierrras TformPrincipal, al cerrar TformPrincipal se dispara su FormClose y por tanto el Application.Terminate de modo que cierras la aplicación.
Amigo engranaje en Republica Dominicana se le dice esta frase cuando solucionan un problema, así que te diré esta frase: Engranaje tu eres un mounstruo .

Muchísimas gracias eso era el problema.

Saludos y bendiciones a todos.
__________________
Cristo te ama, ven a d él, ya k te espera con los brazos abiertos. Dios te bendiga mucho
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Error al cerrar o abrir varios formularios wolfran_hack Varios 1 10-07-2013 11:17:11
Cerrar Formularios con la Tecla ESC sleep25000 Varios 2 30-06-2011 13:08:33
Obtener formularios abiertos Bauhaus1975 Varios 4 09-10-2008 17:32:17
Cerrar formularios zvf OOP 2 28-04-2006 17:11:34
Cerrar formularios FunBit OOP 2 09-09-2005 11:31:59


La franja horaria es GMT +2. Ahora son las 19:49:03.


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