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 07-08-2012
steelha steelha is offline
Miembro
 
Registrado: mar 2012
Posts: 158
Poder: 13
steelha Va por buen camino
Como realizar un logout o Desconectar usuario

Hola, el siguiente hilo es para ver como me pueden ayudar hacer que un usuario ya logueado pueda desconectarse y presentar de nuevo la pantalla de login la cual se ejecuta al inicio de la aplicación, en un hilo anterior ya me habían ayudado con la parte del login (muchas gracias por todo). Uso delphi 7, y utilizo los ADO components para conexion con Access.
Responder Con Cita
  #2  
Antiguo 07-08-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Bueno, no sé cómo hayas hecho para el Login, y, a decir verdad, no es muy buena idea presuponer que todos nos vamos a acordar de tus mensajes anteriores, pues no leemos todos.

Algo que podría funcionar es que dejes tu archivo DPR parecido a este:

Código Delphi [-]
program Project1;

uses
  Controls, Forms,
  Unit1 in 'Unit1.pas' {frmMain},
  Unit2 in 'Unit2.pas' {frmLogin};

{$R *.res}

begin
  Application.Initialize;

  frmLogin := TfrmLogin.Create(Application);

  while frmLogin.ShowModal = mrOk do
  begin
    Application.CreateForm(TfrmMain, frmMain);
    frmMain.ShowModal;
  end;

  //Application.Run;
end.

Aparentemente funciona, pero no sé si pueda presentar algún problema. Este esquema presupone que tu formulario de Login es el que se encarga de corroborar que los datos que proporciona el usuario son correctos.
Responder Con Cita
  #3  
Antiguo 07-08-2012
steelha steelha is offline
Miembro
 
Registrado: mar 2012
Posts: 158
Poder: 13
steelha Va por buen camino
Gracias y disculpa por no especificar aca dejo los codigos

source:

Código Delphi [-]
program prIglesia;

uses
  Forms,
  Windows,
  Controls,
  uPrincipal in 'uPrincipal.pas' {frmprincipal},
  ufrmlogin in 'ufrmlogin.pas' {frmLogin},
  ufrmstatus in 'ufrmstatus.pas' {frmStatus},
  uDataModulo in 'uDataModulo.pas' {dmConcilio: TDataModule},
  ufrmiglesia in 'ufrmiglesia.pas' {frmiglesia},
  ufrmcargos in 'ufrmcargos.pas' {frmcargos},
  ufrmmiembros in 'ufrmmiembros.pas' {frmmiembros},
  ufrmconsultaestatus in 'ufrmconsultaestatus.pas' {frmconsultaestatus},
  ufrmconsultaiglesias in 'ufrmconsultaiglesias.pas' {frmconsultaiglesia},
  ufrmconsultamiembros in 'ufrmconsultamiembros.pas' {frmconsultamiembro},
  ufrmRegistrar in '..\..\Generador Seriales\Activador\ufrmRegistrar.pas' {frmRegistrar},
  ufrmUsuarios in 'ufrmUsuarios.pas' {frmusuarios};

{$R *.res}

begin
  Application.Initialize;

  frmRegistrar := TfrmRegistrar.Create(Application);
  if frmRegistrar.mxProtector.IsRegistered = False then
    frmRegistrar.ShowModal;

  if frmRegistrar.mxProtector.IsRegistered  then
  begin
    frmLogin := TfrmLogin.Create(Application);
    frmLogin.ShowModal;
    if mrOk = 1 then
    begin
      frmLogin.Hide; // o LoginForm.Hide
      Application.CreateForm(Tfrmprincipal, frmprincipal);
      Application.CreateForm(TfrmRegistrar, frmRegistrar);
      Application.CreateForm(TfrmStatus, frmStatus);
      Application.CreateForm(TdmConcilio, dmConcilio);
      Application.CreateForm(Tfrmiglesia, frmiglesia);
      Application.CreateForm(Tfrmcargos, frmcargos);
      Application.CreateForm(Tfrmmiembros, frmmiembros);
      Application.CreateForm(Tfrmconsultaestatus, frmconsultaestatus);
      Application.CreateForm(Tfrmconsultaiglesia, frmconsultaiglesia);
      Application.CreateForm(Tfrmconsultamiembro, frmconsultamiembro);
      Application.CreateForm(Tfrmusuarios, frmusuarios);
    end;
  end;
  Application.Run;
end.

Principal:
Código Delphi [-]
unit uPrincipal;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, ComCtrls, jpeg, ExtCtrls, IniFiles;

type
  Tfrmprincipal = class(TForm)
    imgfondo: TImage;
    StatusBar1: TStatusBar;
    MainMenu1: TMainMenu;
    Mantenimiento1: TMenuItem;
    I1: TMenuItem;
    N1Status1: TMenuItem;
    N3Cargos1: TMenuItem;
    N4Miembros1: TMenuItem;
    Consultas1: TMenuItem;
    N1EstatusCargos1: TMenuItem;
    N2Iglesias1: TMenuItem;
    N3Miembros1: TMenuItem;
    N1: TMenuItem;
    N0CuentasdeUsuarios1: TMenuItem;
    Salir1: TMenuItem;
    CerrarSeccin1: TMenuItem;
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure N1Status1Click(Sender: TObject);
    procedure I1Click(Sender: TObject);
    procedure N3Cargos1Click(Sender: TObject);
    procedure N4Miembros1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure N1EstatusCargos1Click(Sender: TObject);
    procedure N2Iglesias1Click(Sender: TObject);
    procedure N3Miembros1Click(Sender: TObject);
    procedure N0CuentasdeUsuarios1Click(Sender: TObject);
    procedure Salir1Click(Sender: TObject);
    procedure CerrarSeccin1Click(Sender: TObject);
  private
    { Private declarations }
    nivel_usuario : Integer;
    logueado      : Integer;
  public
    { Public declarations }
  end;

var
  frmprincipal: Tfrmprincipal;

implementation

uses ufrmlogin,ufrmstatus,ufrmiglesia, ufrmcargos,uDataModulo,
  ufrmmiembros, ufrmconsultaestatus, ufrmconsultaiglesias,
  ufrmconsultamiembros, ufrmUsuarios;

{$R *.dfm}

procedure Tfrmprincipal.FormCloseQuery(Sender: TObject;
  var CanClose: Boolean);
begin
      dmConcilio.conConcilio.Close;
      dmConcilio.conConcilio.Free;
end;

procedure Tfrmprincipal.N1Status1Click(Sender: TObject);
begin
    frmstatus.ShowModal;
end;

procedure Tfrmprincipal.I1Click(Sender: TObject);
begin
  frmiglesia.ShowModal;
end;

procedure Tfrmprincipal.N3Cargos1Click(Sender: TObject);
begin
  frmcargos.Showmodal;
end;

procedure Tfrmprincipal.N4Miembros1Click(Sender: TObject);
begin
  frmmiembros.Showmodal;
end;

procedure Tfrmprincipal.FormShow(Sender: TObject);
begin
  imgfondo.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\imagen\fondo.jpg');
  nivel_usuario := frmLogin.nivel;

  N0CuentasdeUsuarios1.Enabled := False;

  case nivel_usuario of
    0:begin
          Mantenimiento1.Enabled := False;
          Consultas1.Enabled     := False;
      end;
    1..4:begin
          N1Status1.Enabled     := False;
          N3Cargos1.Enabled     := False;
          N4Miembros1.Enabled   := False;
          I1.Enabled            := False;
      end;
    5..8:begin
          N1Status1.Enabled     := True;
          N3Cargos1.Enabled     := True;
          N4Miembros1.Enabled   := True;
          I1.Enabled            := True;
      end;
    9:begin
          N0CuentasdeUsuarios1.Enabled := True;
      end;
  end;
  Salir1.Enabled  := True;
  logueado        := 0;
end;

procedure Tfrmprincipal.N1EstatusCargos1Click(Sender: TObject);
begin
  frmconsultaestatus.Showmodal;
end;

procedure Tfrmprincipal.N2Iglesias1Click(Sender: TObject);
begin
  frmconsultaiglesia.Showmodal;
end;

procedure Tfrmprincipal.N3Miembros1Click(Sender: TObject);
begin
  frmconsultamiembro.Showmodal;
end;

procedure Tfrmprincipal.N0CuentasdeUsuarios1Click(Sender: TObject);
begin
  frmusuarios.ShowModal;
end;

procedure Tfrmprincipal.Salir1Click(Sender: TObject);
begin
  Self.Close;
end;

procedure Tfrmprincipal.CerrarSeccin1Click(Sender: TObject);
begin
    Mantenimiento1.Enabled := False;
    Consultas1.Enabled     := False;
    N1Status1.Enabled      := False;
    N3Cargos1.Enabled      := False;
    N4Miembros1.Enabled    := False;
    I1.Enabled             := False;
    CerrarSeccin1.Enabled  := False;
    N0CuentasdeUsuarios1.Enabled := False;

    logueado := 1;
    frmLogin.ShowModal;
end;
end.

Login:

Código Delphi [-]
unit ufrmlogin;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, jpeg, ExtCtrls, RzForms, StdCtrls, IniFiles, DB, ADODB;

type
  TfrmLogin = class(TForm)
    RzFormShape1: TRzFormShape;
    Label1: TLabel;
    Label2: TLabel;
    edUsuario: TEdit;
    edClave: TEdit;
    btEntrar: TButton;
    btCerrar: TButton;
    ADOConnection: TADOConnection;
    qryUsuario: TADOQuery;
    qryUsuarioUserID: TWideStringField;
    qryUsuarioPassword: TWideStringField;
    qryUsuarioUsuario: TWideStringField;
    qryUsuarioLevel: TSmallintField;
    qryUsuarioActivo: TBooleanField;
    procedure btCerrarClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure btEntrarClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
    usuario : string;
    nivel   : Integer;
  end;

var
  frmLogin: TfrmLogin;

implementation

{$R *.dfm}

procedure TfrmLogin.btCerrarClick(Sender: TObject);
begin
  Application.Terminate;
end;

procedure TfrmLogin.FormCreate(Sender: TObject);
var
    ini   : TIniFile;
    provider : string;
    source   : string;
    security : string;
    password : string;
    jet       : string;
    rutadb   : string;
    rutapr   : string;
    user     : string;
    fechalg  : string;
    cadenacn : string;
begin
  provider:= '';
  source  := '';
  security:= '';
  password:= '';
  jet      := '';
  rutadb  := '';
  user    := '';
  fechalg := '';
  cadenacn:= '';

  usuario := '';
  nivel   := 0;

  //Obtener Ruta donde se ejecuta la aplicacion
  rutapr := ExtractFilePath(Application.ExeName);

  //Verificar que exista el archivo de configuracion
  If not FileExists('Iglesia.ini') then
  Begin
    ShowMessage('Error en la aplicación, no existe componente principal de configuracion');
    Application.Terminate;
  end;

  //Crear o Abrir Archivo INI
  ini := TIniFile.Create(rutapr+'Iglesia.ini');

  //Leer Archivo INI
  provider:= ini.ReadString('DB','provider','');
  source  := ini.ReadString('DB','source','');
  security:= ini.ReadString('DB','security','');
  password:= ini.ReadString('DB','password','');
  jet      := ini.ReadString('DB','jet','');
  rutadb  := ini.ReadString('DB','ruta','');
  user    := ini.ReadString('LOGIN','user','');
  fechalg := ini.ReadString('LOGIN','fecha','');

  edUsuario.Text := user;

  //Liberar recurso INI
  FreeAndNil(ini);

  //Conectar a DB con los datos obtenidos desde el ini
  cadenacn:=  'Provider='+provider+';'+
              'Data Source='+source+';'+
              security;

  ADOConnection.Connected := False;
  ADOConnection.ConnectionString := cadenacn;
  ADOConnection.Connected := True;
end;

procedure TfrmLogin.btEntrarClick(Sender: TObject);
var
    ini   : TIniFile;
    provider : string;
    source   : string;
    security : string;
    password : string;
    jet       : string;
    rutadb   : string;
    rutapr   : string;
    user     : string;
    fechalg  : string;
    cadenacn : string;
begin
  provider:= '';
  source  := '';
  security:= '';
  password:= '';
  jet      := '';
  rutadb  := '';
  user    := '';
  fechalg := '';
  cadenacn:= '';
  usuario := '';

  qryUsuario.Close;
  qryUsuario.SQL.Text := 'SELECT * FROM tblusuarios Where userid='+QuotedStr(Trim(edUsuario.Text))+' AND password='+QuotedStr(Trim(edClave.Text));
  qryUsuario.Open;
  If qryUsuario.RecordCount < 1 then
    begin
      ShowMessage('Usuario ó Clave erronea, intente de nuevo');
      edUsuario.SetFocus;
    end
  else
    If qryUsuarioActivo.Value = True then
      begin
        usuario := qryUsuarioUsuario.Text;
        nivel   := qryUsuarioLevel.Value;

        //Modificar Archivo INI
        ini := TIniFile.Create(rutapr+'Iglesia.ini');
        ini.WriteString('LOGIN','user',usuario);
        ini.WriteDateTime('LOGIN','fecha',now);

        edUsuario.Text := user;

        //Liberar recurso INI
        FreeAndNil(ini);

        Self.Close;
      end
    else
      begin
        ShowMessage('Usuario no está Activo, verifique un Administrador');
        edUsuario.SetFocus;
      end;
end;

procedure TfrmLogin.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  qryUsuario.Close;
  ADOConnection.Close;
  qryUsuario.Free;
  ADOConnection.Free;
end;

end.

Ok, en la opción nueva que he colocado Cerrar sección, lo que hago es que deshabilito todas las opciones del menú y luego presento (frmlogin.showmodal) la pantalla de login pero al cerrarse da un error : Project priglesia.exe raised exception class eaccessviolation with message 'Access violation at address 004ADFEA in module 'priglesia.exe'. Read of address 00000000. process stopped. use step or run to continue'. El curso se posiciona en la linea después del formshow.modal del login cuando se hace por segunda ves.
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
IBX ¿como asignar usuario,base de datos, nombre de usuario por codigo? JXJ Firebird e Interbase 4 09-05-2010 18:45:24
login y logout para base de datos _CALI Conexión con bases de datos 1 22-04-2008 16:23:03
Ayuda al usuario para realizar búsquedas rochi Conexión con bases de datos 19 28-04-2005 09:57:31
Login y Logout douguiehm Varios 5 10-12-2004 19:46:36


La franja horaria es GMT +2. Ahora son las 18:54:46.


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