Buenas tardes, tenia la necesidad de hacer un login que abriese primero que la ventana principal. Vi unos ejemplos de caral y trate de implementarlo pero el problema viene cuando encuentro al usuario y debe presentarse la ventana principal obtengo el siguiente error y no he podido solucionarlo. Por favor necesito de su ayuda:
Código Delphi
[-] Application.Initialize;
LoginForm := TfrmLogin.Create(Application);
if LoginForm.ShowModal = ID_OK then
begin
LoginForm.Free; Application.CreateForm(Tfrmprincipal, frmprincipal);
end;
Application.Run;
Este es el error justamente en la linea del if loginform:
Project prIglesia.exe raised exception class EAccessViolation with message 'Access violation at address 0045C04D in module 'prIglesia.exe'. Read of address 000002F4'. Process stopped. Use step or Run to continue.
Acontunuacion coloco el codigo del login form:
unit ufrmlogin;
interface
Código Delphi
[-]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;
procedure btCerrarClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure btEntrarClick(Sender: TObject);
private
public
ini : TIniFile;
provider : string;
source : string;
security : string;
password : string;
jet : string;
rutadb : string;
rutapr : string;
user : string;
fechalg : string;
cadenacn : string;
end;
var
frmLogin: TfrmLogin;
implementation
{$R *.dfm}
procedure TfrmLogin.btCerrarClick(Sender: TObject);
begin
Application.Terminate;
end;
procedure TfrmLogin.FormCreate(Sender: TObject);
begin
provider:= '';
source := '';
security:= '';
password:= '';
jet := '';
rutadb := '';
user := '';
fechalg := '';
cadenacn:= '';
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;
source := Trim(rutapr) + 'Data\' + Trim(source);
FreeAndNil(ini);
cadenacn:= 'Provider=Microsoft.Jet.OLEDB.4.0;'+
'Password='+password+';'+
'Data Source='+source+';'+
'Persist Security Info=False';
ADOConnection.Connected := False;
ADOConnection.ConnectionString := cadenacn;
ADOConnection.Connected := True;
end;
procedure TfrmLogin.btEntrarClick(Sender: TObject);
begin
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
frmLogin.Close;
end;
end.
Muchas gracias por cualquier ayuda