Gracias y disculpa por no especificar aca dejo los codigos
source:
Código Delphi
[-]program prIglesia;
uses
Forms,
Windows,
Controls,
uPrincipal in 'uPrincipal.pas' ,
ufrmlogin in 'ufrmlogin.pas' ,
ufrmstatus in 'ufrmstatus.pas' ,
uDataModulo in 'uDataModulo.pas' ,
ufrmiglesia in 'ufrmiglesia.pas' ,
ufrmcargos in 'ufrmcargos.pas' ,
ufrmmiembros in 'ufrmmiembros.pas' ,
ufrmconsultaestatus in 'ufrmconsultaestatus.pas' ,
ufrmconsultaiglesias in 'ufrmconsultaiglesias.pas' ,
ufrmconsultamiembros in 'ufrmconsultamiembros.pas' ,
ufrmRegistrar in '..\..\Generador Seriales\Activador\ufrmRegistrar.pas' ,
ufrmUsuarios in 'ufrmUsuarios.pas' ;
{$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; 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
nivel_usuario : Integer;
logueado : Integer;
public
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
public
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;
rutapr := ExtractFilePath(Application.ExeName);
If not FileExists('Iglesia.ini') then
Begin
ShowMessage('Error en la aplicación, no existe componente principal de configuracion');
Application.Terminate;
end;
ini := TIniFile.Create(rutapr+'Iglesia.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;
FreeAndNil(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;
ini := TIniFile.Create(rutapr+'Iglesia.ini');
ini.WriteString('LOGIN','user',usuario);
ini.WriteDateTime('LOGIN','fecha',now);
edUsuario.Text := user;
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.