Ver Mensaje Individual
  #3  
Antiguo 07-08-2012
steelha steelha is offline
Miembro
 
Registrado: mar 2012
Posts: 158
Reputación: 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