Ver Mensaje Individual
  #3  
Antiguo 29-01-2015
Avatar de jeremiselxi
jeremiselxi jeremiselxi is offline
Miembro
 
Registrado: ago 2008
Posts: 199
Reputación: 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