Fórum Erro ao sair do sistema #403201

16/06/2011

0

Bom dia à todos

Tenho um sistema de login e form Principal de modelo. Adaptei para fazer logoff. Quando logo com admin, tudo bem, funciona, ao fazer logoff e logar com outro usuário dá um erro quando clico na opção Sair. Segue abaixo da tela de erro Códigos de Login e Logoff, Obrigado






Código do botão Ok do Login:

procedure TFrmLogin.BtnOKClick(Sender: TObject);
var
ValorSenha:TstringField;
begin
  if not DM.tableusers.findkey([ednome.text]) then
  begin
    pnlMensagem.Caption:='Login Recusado, Usuário Desconhecido...';
    inc(Contador);
    if contador=4 then
      frmPrincipal.close;
    ednome.setfocus;
    Exit;
  end;
   ValorSenha:=DM.tableUsers.findfield('Senha') as tStringfield;
  if valorsenha.value<>edsenha.text then
  begin
    pnlMensagem.Caption:='Login Recusado, Senha Inválida...';
    inc(Contador);
    if Contador=4 then
      frmPrincipal.close;
    edsenha.setfocus;
    Exit;
  end;
  frmPrincipal.label2.Caption := frmLogin.EdNome.Text;
  frmPrincipal.enabled:=true;
  frmlogin.release;
end;



Código do Menu Logoff:

procedure TFrmPrincipal.mnuLogoffClick(Sender: TObject);
begin
 frmPrincipal.Release;

 Application.CreateForm(TFrmLogin,FrmLogin);
 Application.CreateForm(TfrmPrincipal,frmPrincipal);
 frmPrincipal.Show;
 // DMFinan.IBDatabaseFinan.Open;
// DMFinan.TBUsuario.Active:=True;
 FrmLogin.ShowModal;
end;



Frederico Brigatte***

Frederico Brigatte***

Responder

Posts

16/06/2011

Wilson Junior

Antes de acessar os seus forms, verifique se os mesmo não são nil. Exemplo:
if  frmPrincipal <> nil then
    frmPrincipal.Release
;


Pois este erro significa que você está tentando acessar algum componente que não foi criado ainda ou que já foi e criado e destruído.

Espero ter colaborado.
Responder

Gostei + 0

16/06/2011

Rafael Mattos

coloca o código do Sair
Responder

Gostei + 0

16/06/2011

Nigro

Geralmente erro 000000 significa que você está tentando usar um componente que foi destruído / não foi criado. É preciso ver a linha que está com erro, faça o seguinte: Vá em Tools - Debugger Options - Language Exceptions e ative a flag "Stop on Delphi Exceptions".
Responder

Gostei + 0

16/06/2011

Frederico Brigatte***

coloca o código do Sair


Qual código?
Responder

Gostei + 0

16/06/2011

Frederico Brigatte***

Antes de acessar os seus forms, verifique se os mesmo não são nil. Exemplo:
if  frmPrincipal <> nil then
    frmPrincipal.Release
;


Pois este erro significa que você está tentando acessar algum componente que não foi criado ainda ou que já foi e criado e destruído.

Espero ter colaborado.


Onde coloco esse código?
Responder

Gostei + 0

16/06/2011

Wilson Junior

Substitua a sua primeira linha do evento mnuLogoffClick.
Responder

Gostei + 0

16/06/2011

Wilson Junior

Substitua a sua primeira linha do evento mnuLogoffClick.
Responder

Gostei + 0

16/06/2011

Frederico Brigatte***

Antes de acessar os seus forms, verifique se os mesmo não são nil. Exemplo:
if  frmPrincipal <> nil then
    frmPrincipal.Release
;


Pois este erro significa que você está tentando acessar algum componente que não foi criado ainda ou que já foi e criado e destruído.

Espero ter colaborado.


Onde coloco esse código?


Coloquei assim:

procedure TFrmPrincipal.mnuLogoffClick(Sender: TObject);
begin
if  frmPrincipal <> nil then
    frmPrincipal.Release
;

 Application.CreateForm(TFrmLogin,FrmLogin);
 Application.CreateForm(TfrmPrincipal,frmPrincipal);
 frmPrincipal.Show;
 FrmLogin.ShowModal;
end;

Ainda da erro ao sair quando troca o usuário.
Responder

Gostei + 0

16/06/2011

Rafael Mattos

debuga e ve qual linha ele para



--------------------------------------------------------------------------------
Blog: http://mundodoprogramador.wordpress.com/
MSN: rafmattos@hotmail.com
Twitter: _rafmattos
Responder

Gostei + 0

16/06/2011

Frederico Brigatte***

debuga e ve qual linha ele para



--------------------------------------------------------------------------------
Blog: http://mundodoprogramador.wordpress.com/
MSN: rafmattos@hotmail.com
Twitter: _rafmattos
Como faço isso. Dei um break aqui: procedure TFrmPrincipal.Sair1Click(Sender: TObject); begin // frmPrincipal.Release; // frmLogin.Release; // DM.TableUsers.Close; // frmPrincipal.Destroy; -> (Application.Terminate;) end;
Responder

Gostei + 0

16/06/2011

Frederico Brigatte***

debuga e ve qual linha ele para



--------------------------------------------------------------------------------
Blog: http://mundodoprogramador.wordpress.com/
MSN: rafmattos@hotmail.com
Twitter: _rafmattos
Como faço isso. Dei um break aqui: procedure TFrmPrincipal.Sair1Click(Sender: TObject); begin // frmPrincipal.Release; // frmLogin.Release; // DM.TableUsers.Close; // frmPrincipal.Destroy; -> (Application.Terminate;) end;
A unit Login é essa: unit UnitLogin; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, jpeg, ExtCtrls,db; type TFrmLogin = class(TForm) Image1: TImage; iblnome: TLabel; iblsenha: TLabel; EdNome: TEdit; EdSenha: TEdit; BtnOK: TButton; BtnCancelar: TButton; Label1: TLabel; PnlMensagem: TPanel; procedure BtnCancelarClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure BtnOKClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var FrmLogin: TFrmLogin; implementation uses UnitPrincipal, UnitDM; var Contador:integer; {$R *.DFM} procedure TFrmLogin.BtnCancelarClick(Sender: TObject); begin frmPrincipal.close; end; procedure TFrmLogin.FormShow(Sender: TObject); begin edNome.setfocus; end; procedure TFrmLogin.BtnOKClick(Sender: TObject); var ValorSenha:TstringField; begin if not DM.tableusers.findkey([ednome.text]) then begin pnlMensagem.Caption:='Login Recusado, Usuário Desconhecido...'; inc(Contador); if contador=4 then frmPrincipal.close; ednome.setfocus; Exit; end; ValorSenha:=DM.tableUsers.findfield('Senha') as tStringfield; if valorsenha.valueedsenha.text then begin pnlMensagem.Caption:='Login Recusado, Senha Inválida...'; inc(Contador); if Contador=4 then frmPrincipal.close; edsenha.setfocus; Exit; end; frmPrincipal.label2.Caption := frmLogin.EdNome.Text; frmPrincipal.enabled:=true; frmlogin.release; end; end. A unit Principal é essa: unit UnitPrincipal; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrls; type TFrmPrincipal = class(TForm) MainMenu1: TMainMenu; Cadastro1: TMenuItem; Consulta1: TMenuItem; Relatorio1: TMenuItem; Movimento1: TMenuItem; Senhas1: TMenuItem; Configurar1: TMenuItem; Sair1: TMenuItem; SenhasUsuarios1: TMenuItem; HabilitarSenhas1: TMenuItem; mnuLogoff: TMenuItem; Label1: TLabel; Label2: TLabel; procedure Sair1Click(Sender: TObject); procedure SenhasUsuarios1Click(Sender: TObject); procedure mnuLogoffClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var FrmPrincipal: TFrmPrincipal; implementation uses UnitSenhas, UnitLogin, UnitDM; {$R *.DFM} procedure TFrmPrincipal.Sair1Click(Sender: TObject); begin // frmPrincipal.Release; // frmLogin.Release; // DM.TableUsers.Close; // frmPrincipal.Destroy; Application.Terminate; end; procedure TFrmPrincipal.SenhasUsuarios1Click(Sender: TObject); begin frmsenhas:=tfrmsenhas.create(self); frmsenhas.show; end; procedure TFrmPrincipal.mnuLogoffClick(Sender: TObject); begin //frmPrincipal.Release; Application.CreateForm(TFrmLogin,FrmLogin); Application.CreateForm(TfrmPrincipal,frmPrincipal); frmPrincipal.Show; // DMFinan.IBDatabaseFinan.Open; // DMFinan.TBUsuario.Active:=True; FrmLogin.ShowModal; end; end. A unit do Projeto é essa: program Parte2; uses Forms, UnitPrincipal in 'UnitPrincipal.pas' , UnitLogin in 'UnitLogin.pas' , UnitDM in 'UnitDM.pas' {DM: TDataModule}, UnitSenhas in 'UnitSenhas.pas' ; {$R *.RES} begin Application.Initialize; Application.CreateForm(TFrmPrincipal, FrmPrincipal); Application.CreateForm(TDM, DM); Application.Run; end. Não sei onde dá o erro.
Responder

Gostei + 0

16/06/2011

Frederico Brigatte***

debuga e ve qual linha ele para



--------------------------------------------------------------------------------
Blog: http://mundodoprogramador.wordpress.com/
MSN: rafmattos@hotmail.com
Twitter: _rafmattos
Como faço isso. Dei um break aqui: procedure TFrmPrincipal.Sair1Click(Sender: TObject); begin // frmPrincipal.Release; // frmLogin.Release; // DM.TableUsers.Close; // frmPrincipal.Destroy; -> (Application.Terminate;) end;
A unit Login é essa: unit UnitLogin; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, jpeg, ExtCtrls,db; type TFrmLogin = class(TForm) Image1: TImage; iblnome: TLabel; iblsenha: TLabel; EdNome: TEdit; EdSenha: TEdit; BtnOK: TButton; BtnCancelar: TButton; Label1: TLabel; PnlMensagem: TPanel; procedure BtnCancelarClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure BtnOKClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var FrmLogin: TFrmLogin; implementation uses UnitPrincipal, UnitDM; var Contador:integer; {$R *.DFM} procedure TFrmLogin.BtnCancelarClick(Sender: TObject); begin frmPrincipal.close; end; procedure TFrmLogin.FormShow(Sender: TObject); begin edNome.setfocus; end; procedure TFrmLogin.BtnOKClick(Sender: TObject); var ValorSenha:TstringField; begin if not DM.tableusers.findkey([ednome.text]) then begin pnlMensagem.Caption:='Login Recusado, Usuário Desconhecido...'; inc(Contador); if contador=4 then frmPrincipal.close; ednome.setfocus; Exit; end; ValorSenha:=DM.tableUsers.findfield('Senha') as tStringfield; if valorsenha.valueedsenha.text then begin pnlMensagem.Caption:='Login Recusado, Senha Inválida...'; inc(Contador); if Contador=4 then frmPrincipal.close; edsenha.setfocus; Exit; end; frmPrincipal.label2.Caption := frmLogin.EdNome.Text; frmPrincipal.enabled:=true; frmlogin.release; end; end. A unit Principal é essa: unit UnitPrincipal; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrls; type TFrmPrincipal = class(TForm) MainMenu1: TMainMenu; Cadastro1: TMenuItem; Consulta1: TMenuItem; Relatorio1: TMenuItem; Movimento1: TMenuItem; Senhas1: TMenuItem; Configurar1: TMenuItem; Sair1: TMenuItem; SenhasUsuarios1: TMenuItem; HabilitarSenhas1: TMenuItem; mnuLogoff: TMenuItem; Label1: TLabel; Label2: TLabel; procedure Sair1Click(Sender: TObject); procedure SenhasUsuarios1Click(Sender: TObject); procedure mnuLogoffClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var FrmPrincipal: TFrmPrincipal; implementation uses UnitSenhas, UnitLogin, UnitDM; {$R *.DFM} procedure TFrmPrincipal.Sair1Click(Sender: TObject); begin // frmPrincipal.Release; // frmLogin.Release; // DM.TableUsers.Close; // frmPrincipal.Destroy; Application.Terminate; end; procedure TFrmPrincipal.SenhasUsuarios1Click(Sender: TObject); begin frmsenhas:=tfrmsenhas.create(self); frmsenhas.show; end; procedure TFrmPrincipal.mnuLogoffClick(Sender: TObject); begin //frmPrincipal.Release; Application.CreateForm(TFrmLogin,FrmLogin); Application.CreateForm(TfrmPrincipal,frmPrincipal); frmPrincipal.Show; // DMFinan.IBDatabaseFinan.Open; // DMFinan.TBUsuario.Active:=True; FrmLogin.ShowModal; end; end. A unit do Projeto é essa: program Parte2; uses Forms, UnitPrincipal in 'UnitPrincipal.pas' , UnitLogin in 'UnitLogin.pas' , UnitDM in 'UnitDM.pas' {DM: TDataModule}, UnitSenhas in 'UnitSenhas.pas' ; {$R *.RES} begin Application.Initialize; Application.CreateForm(TFrmPrincipal, FrmPrincipal); Application.CreateForm(TDM, DM); Application.Run; end. Não sei onde dá o erro.
Responder

Gostei + 0

16/06/2011

Frederico Brigatte***

debuga e ve qual linha ele para



--------------------------------------------------------------------------------
Blog: http://mundodoprogramador.wordpress.com/
MSN: rafmattos@hotmail.com
Twitter: _rafmattos
Como faço isso. Dei um break aqui:
procedure TFrmPrincipal.Sair1Click(Sender: TObject);
begin
 // frmPrincipal.Release;
 // frmLogin.Release;
 // DM.TableUsers.Close;
 // frmPrincipal.Destroy;
-> (Application.Terminate;)
end;

A unit Login é essa:
unit UnitLogin;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, jpeg, ExtCtrls,db;
type TFrmLogin = class(TForm)
Image1: TImage;
iblnome: TLabel;
iblsenha: TLabel;
EdNome: TEdit;
EdSenha: TEdit;
BtnOK: TButton;
BtnCancelar: TButton;
Label1: TLabel;
PnlMensagem: TPanel;
procedure BtnCancelarClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure BtnOKClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmLogin: TFrmLogin;
implementation
uses UnitPrincipal, UnitDM;
var Contador:integer;
{$R *.DFM}

procedure TFrmLogin.BtnCancelarClick(Sender: TObject);
begin
frmPrincipal.close;
end;

procedure TFrmLogin.FormShow(Sender: TObject);
begin
edNome.setfocus;
end;

procedure TFrmLogin.BtnOKClick(Sender: TObject);
var ValorSenha:TstringField;
begin if not DM.tableusers.findkey([ednome.text]) then
begin pnlMensagem.Caption:='Login Recusado, Usuário Desconhecido...';
inc(Contador); if contador=4 then
frmPrincipal.close;
ednome.setfocus;
Exit;
end;
ValorSenha:=DM.tableUsers.findfield('Senha') as tStringfield;
if valorsenha.value<>edsenha.text then begin
pnlMensagem.Caption:='Login Recusado, Senha Inválida...';
inc(Contador); if Contador=4 then
frmPrincipal.close;
edsenha.setfocus;
Exit;
end;
frmPrincipal.label2.Caption := frmLogin.EdNome.Text;
frmPrincipal.enabled:=true;
frmlogin.release;
end;
end.

A unit Principal é essa:
unit UnitPrincipal;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrls;
type
TFrmPrincipal = class(TForm) MainMenu1: TMainMenu;
Cadastro1: TMenuItem;
Consulta1: TMenuItem;
Relatorio1: TMenuItem;
Movimento1: TMenuItem;
Senhas1: TMenuItem;
Configurar1: TMenuItem;
Sair1: TMenuItem;
SenhasUsuarios1: TMenuItem;
HabilitarSenhas1: TMenuItem;
mnuLogoff: TMenuItem;
Label1: TLabel;
Label2: TLabel;
procedure Sair1Click(Sender: TObject);
procedure SenhasUsuarios1Click(Sender: TObject);
procedure mnuLogoffClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var FrmPrincipal: TFrmPrincipal;
implementation
uses UnitSenhas, UnitLogin, UnitDM;
{$R *.DFM}
procedure TFrmPrincipal.Sair1Click(Sender: TObject);
begin
// frmPrincipal.Release;
// frmLogin.Release;
// DM.TableUsers.Close;
// frmPrincipal.Destroy;
Application.Terminate;
end;

procedure TFrmPrincipal.SenhasUsuarios1Click(Sender: TObject);
begin
frmsenhas:=tfrmsenhas.create(self);
frmsenhas.show;
end;
procedure TFrmPrincipal.mnuLogoffClick(Sender: TObject);
begin
//frmPrincipal.Release;
Application.CreateForm(TFrmLogin,FrmLogin);
Application.CreateForm(TfrmPrincipal,frmPrincipal);
frmPrincipal.Show;
// DMFinan.IBDatabaseFinan.Open;
// DMFinan.TBUsuario.Active:=True;
FrmLogin.ShowModal;
end;
end.

A unit do Projeto é essa:

program Parte2;
uses Forms, UnitPrincipal in 'UnitPrincipal.pas' , UnitLogin in 'UnitLogin.pas' , UnitDM in 'UnitDM.pas' {DM: TDataModule}, UnitSenhas in 'UnitSenhas.pas' ;
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TFrmPrincipal, FrmPrincipal);
Application.CreateForm(TDM, DM);
Application.Run;
end.

Não sei onde dá o erro.


Não sei pq ficou assim
Responder

Gostei + 0

16/06/2011

Frederico Brigatte***

debuga e ve qual linha ele para



--------------------------------------------------------------------------------
Blog: http://mundodoprogramador.wordpress.com/
MSN: rafmattos@hotmail.com
Twitter: _rafmattos
Como faço isso. Dei um break aqui:
procedure TFrmPrincipal.Sair1Click(Sender: TObject);
begin
 // frmPrincipal.Release;
 // frmLogin.Release;
 // DM.TableUsers.Close;
 // frmPrincipal.Destroy;
-> (Application.Terminate;)
end;

A unit Login é essa:
unit UnitLogin;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, jpeg, ExtCtrls,db;
type TFrmLogin = class(TForm)
Image1: TImage;
iblnome: TLabel;
iblsenha: TLabel;
EdNome: TEdit;
EdSenha: TEdit;
BtnOK: TButton;
BtnCancelar: TButton;
Label1: TLabel;
PnlMensagem: TPanel;
procedure BtnCancelarClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure BtnOKClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmLogin: TFrmLogin;
implementation
uses UnitPrincipal, UnitDM;
var Contador:integer;
{$R *.DFM}

procedure TFrmLogin.BtnCancelarClick(Sender: TObject);
begin
frmPrincipal.close;
end;

procedure TFrmLogin.FormShow(Sender: TObject);
begin
edNome.setfocus;
end;

procedure TFrmLogin.BtnOKClick(Sender: TObject);
var ValorSenha:TstringField;
begin if not DM.tableusers.findkey([ednome.text]) then
begin pnlMensagem.Caption:='Login Recusado, Usuário Desconhecido...';
inc(Contador); if contador=4 then
frmPrincipal.close;
ednome.setfocus;
Exit;
end;
ValorSenha:=DM.tableUsers.findfield('Senha') as tStringfield;
if valorsenha.value<>edsenha.text then begin
pnlMensagem.Caption:='Login Recusado, Senha Inválida...';
inc(Contador); if Contador=4 then
frmPrincipal.close;
edsenha.setfocus;
Exit;
end;
frmPrincipal.label2.Caption := frmLogin.EdNome.Text;
frmPrincipal.enabled:=true;
frmlogin.release;
end;
end.

A unit Principal é essa:
unit UnitPrincipal;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrls;
type
TFrmPrincipal = class(TForm) MainMenu1: TMainMenu;
Cadastro1: TMenuItem;
Consulta1: TMenuItem;
Relatorio1: TMenuItem;
Movimento1: TMenuItem;
Senhas1: TMenuItem;
Configurar1: TMenuItem;
Sair1: TMenuItem;
SenhasUsuarios1: TMenuItem;
HabilitarSenhas1: TMenuItem;
mnuLogoff: TMenuItem;
Label1: TLabel;
Label2: TLabel;
procedure Sair1Click(Sender: TObject);
procedure SenhasUsuarios1Click(Sender: TObject);
procedure mnuLogoffClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var FrmPrincipal: TFrmPrincipal;
implementation
uses UnitSenhas, UnitLogin, UnitDM;
{$R *.DFM}
procedure TFrmPrincipal.Sair1Click(Sender: TObject);
begin
// frmPrincipal.Release;
// frmLogin.Release;
// DM.TableUsers.Close;
// frmPrincipal.Destroy;
Application.Terminate;
end;

procedure TFrmPrincipal.SenhasUsuarios1Click(Sender: TObject);
begin
frmsenhas:=tfrmsenhas.create(self);
frmsenhas.show;
end;
procedure TFrmPrincipal.mnuLogoffClick(Sender: TObject);
begin
//frmPrincipal.Release;
Application.CreateForm(TFrmLogin,FrmLogin);
Application.CreateForm(TfrmPrincipal,frmPrincipal);
frmPrincipal.Show;
// DMFinan.IBDatabaseFinan.Open;
// DMFinan.TBUsuario.Active:=True;
FrmLogin.ShowModal;
end;
end.

A unit do Projeto é essa:

program Parte2;
uses Forms, UnitPrincipal in 'UnitPrincipal.pas' , UnitLogin in 'UnitLogin.pas' , UnitDM in 'UnitDM.pas' {DM: TDataModule}, UnitSenhas in 'UnitSenhas.pas' ;
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TFrmPrincipal, FrmPrincipal);
Application.CreateForm(TDM, DM);
Application.Run;
end.

Não sei onde dá o erro.


Não sei pq ficou assim


A listagem é essa:

procedure TFrmPrincipal.Sair1Click(Sender: TObject);
begin
 // frmPrincipal.Release;
 // frmLogin.Release;
 // DM.TableUsers.Close;
 // frmPrincipal.Destroy;
-> (Application.Terminate;)
end;

A unit Login é essa:
unit UnitLogin;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, jpeg, ExtCtrls,db;
type TFrmLogin = class(TForm)
Image1: TImage;
iblnome: TLabel;
iblsenha: TLabel;
EdNome: TEdit;
EdSenha: TEdit;
BtnOK: TButton;
BtnCancelar: TButton;
Label1: TLabel;
PnlMensagem: TPanel;
procedure BtnCancelarClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure BtnOKClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmLogin: TFrmLogin;
implementation
uses UnitPrincipal, UnitDM;
var Contador:integer;
{$R *.DFM}

procedure TFrmLogin.BtnCancelarClick(Sender: TObject);
begin
frmPrincipal.close;
end;

procedure TFrmLogin.FormShow(Sender: TObject);
begin
edNome.setfocus;
end;

procedure TFrmLogin.BtnOKClick(Sender: TObject);
var ValorSenha:TstringField;
begin if not DM.tableusers.findkey([ednome.text]) then
begin pnlMensagem.Caption:='Login Recusado, Usuário Desconhecido...';
inc(Contador); if contador=4 then
frmPrincipal.close;
ednome.setfocus;
Exit;
end;
ValorSenha:=DM.tableUsers.findfield('Senha') as tStringfield;
if valorsenha.value<>edsenha.text then begin
pnlMensagem.Caption:='Login Recusado, Senha Inválida...';
inc(Contador); if Contador=4 then
frmPrincipal.close;
edsenha.setfocus;
Exit;
end;
frmPrincipal.label2.Caption := frmLogin.EdNome.Text;
frmPrincipal.enabled:=true;
frmlogin.release;
end;
end.

A unit Principal é essa:
unit UnitPrincipal;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrls;
type
TFrmPrincipal = class(TForm) MainMenu1: TMainMenu;
Cadastro1: TMenuItem;
Consulta1: TMenuItem;
Relatorio1: TMenuItem;
Movimento1: TMenuItem;
Senhas1: TMenuItem;
Configurar1: TMenuItem;
Sair1: TMenuItem;
SenhasUsuarios1: TMenuItem;
HabilitarSenhas1: TMenuItem;
mnuLogoff: TMenuItem;
Label1: TLabel;
Label2: TLabel;
procedure Sair1Click(Sender: TObject);
procedure SenhasUsuarios1Click(Sender: TObject);
procedure mnuLogoffClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var FrmPrincipal: TFrmPrincipal;
implementation
uses UnitSenhas, UnitLogin, UnitDM;
{$R *.DFM}
procedure TFrmPrincipal.Sair1Click(Sender: TObject);
begin
// frmPrincipal.Release;
// frmLogin.Release;
// DM.TableUsers.Close;
// frmPrincipal.Destroy;
Application.Terminate;
end;

procedure TFrmPrincipal.SenhasUsuarios1Click(Sender: TObject);
begin
frmsenhas:=tfrmsenhas.create(self);
frmsenhas.show;
end;
procedure TFrmPrincipal.mnuLogoffClick(Sender: TObject);
begin
//frmPrincipal.Release;
Application.CreateForm(TFrmLogin,FrmLogin);
Application.CreateForm(TfrmPrincipal,frmPrincipal);
frmPrincipal.Show;
// DMFinan.IBDatabaseFinan.Open;
// DMFinan.TBUsuario.Active:=True;
FrmLogin.ShowModal;
end;
end.

A unit do Projeto é essa:

program Parte2;
uses Forms, UnitPrincipal in 'UnitPrincipal.pas' , UnitLogin in 'UnitLogin.pas' , UnitDM in 'UnitDM.pas' {DM: TDataModule}, UnitSenhas in 'UnitSenhas.pas' ;
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TFrmPrincipal, FrmPrincipal);
Application.CreateForm(TDM, DM);
Application.Run;
end.

Não sei onde tá dando erro.
Responder

Gostei + 0

16/06/2011

Frederico Brigatte***

debuga e ve qual linha ele para



--------------------------------------------------------------------------------
Blog: http://mundodoprogramador.wordpress.com/
MSN: rafmattos@hotmail.com
Twitter: _rafmattos
Como faço isso. Dei um break aqui:
procedure TFrmPrincipal.Sair1Click(Sender: TObject);
begin
 // frmPrincipal.Release;
 // frmLogin.Release;
 // DM.TableUsers.Close;
 // frmPrincipal.Destroy;
-> (Application.Terminate;)
end;

A unit Login é essa:
unit UnitLogin;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, jpeg, ExtCtrls,db;
type TFrmLogin = class(TForm)
Image1: TImage;
iblnome: TLabel;
iblsenha: TLabel;
EdNome: TEdit;
EdSenha: TEdit;
BtnOK: TButton;
BtnCancelar: TButton;
Label1: TLabel;
PnlMensagem: TPanel;
procedure BtnCancelarClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure BtnOKClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmLogin: TFrmLogin;
implementation
uses UnitPrincipal, UnitDM;
var Contador:integer;
{$R *.DFM}

procedure TFrmLogin.BtnCancelarClick(Sender: TObject);
begin
frmPrincipal.close;
end;

procedure TFrmLogin.FormShow(Sender: TObject);
begin
edNome.setfocus;
end;

procedure TFrmLogin.BtnOKClick(Sender: TObject);
var ValorSenha:TstringField;
begin if not DM.tableusers.findkey([ednome.text]) then
begin pnlMensagem.Caption:='Login Recusado, Usuário Desconhecido...';
inc(Contador); if contador=4 then
frmPrincipal.close;
ednome.setfocus;
Exit;
end;
ValorSenha:=DM.tableUsers.findfield('Senha') as tStringfield;
if valorsenha.value<>edsenha.text then begin
pnlMensagem.Caption:='Login Recusado, Senha Inválida...';
inc(Contador); if Contador=4 then
frmPrincipal.close;
edsenha.setfocus;
Exit;
end;
frmPrincipal.label2.Caption := frmLogin.EdNome.Text;
frmPrincipal.enabled:=true;
frmlogin.release;
end;
end.

A unit Principal é essa:
unit UnitPrincipal;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrls;
type
TFrmPrincipal = class(TForm) MainMenu1: TMainMenu;
Cadastro1: TMenuItem;
Consulta1: TMenuItem;
Relatorio1: TMenuItem;
Movimento1: TMenuItem;
Senhas1: TMenuItem;
Configurar1: TMenuItem;
Sair1: TMenuItem;
SenhasUsuarios1: TMenuItem;
HabilitarSenhas1: TMenuItem;
mnuLogoff: TMenuItem;
Label1: TLabel;
Label2: TLabel;
procedure Sair1Click(Sender: TObject);
procedure SenhasUsuarios1Click(Sender: TObject);
procedure mnuLogoffClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var FrmPrincipal: TFrmPrincipal;
implementation
uses UnitSenhas, UnitLogin, UnitDM;
{$R *.DFM}
procedure TFrmPrincipal.Sair1Click(Sender: TObject);
begin
// frmPrincipal.Release;
// frmLogin.Release;
// DM.TableUsers.Close;
// frmPrincipal.Destroy;
Application.Terminate;
end;

procedure TFrmPrincipal.SenhasUsuarios1Click(Sender: TObject);
begin
frmsenhas:=tfrmsenhas.create(self);
frmsenhas.show;
end;
procedure TFrmPrincipal.mnuLogoffClick(Sender: TObject);
begin
//frmPrincipal.Release;
Application.CreateForm(TFrmLogin,FrmLogin);
Application.CreateForm(TfrmPrincipal,frmPrincipal);
frmPrincipal.Show;
// DMFinan.IBDatabaseFinan.Open;
// DMFinan.TBUsuario.Active:=True;
FrmLogin.ShowModal;
end;
end.

A unit do Projeto é essa:

program Parte2;
uses Forms, UnitPrincipal in 'UnitPrincipal.pas' , UnitLogin in 'UnitLogin.pas' , UnitDM in 'UnitDM.pas' {DM: TDataModule}, UnitSenhas in 'UnitSenhas.pas' ;
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TFrmPrincipal, FrmPrincipal);
Application.CreateForm(TDM, DM);
Application.Run;
end.

Não sei onde dá o erro.


Não sei pq ficou assim


A listagem é essa:

procedure TFrmPrincipal.Sair1Click(Sender: TObject);
begin
 // frmPrincipal.Release;
 // frmLogin.Release;
 // DM.TableUsers.Close;
 // frmPrincipal.Destroy;
-> (Application.Terminate;)
end;

A unit Login é essa:
unit UnitLogin;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, jpeg, ExtCtrls,db;
type TFrmLogin = class(TForm)
Image1: TImage;
iblnome: TLabel;
iblsenha: TLabel;
EdNome: TEdit;
EdSenha: TEdit;
BtnOK: TButton;
BtnCancelar: TButton;
Label1: TLabel;
PnlMensagem: TPanel;
procedure BtnCancelarClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure BtnOKClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmLogin: TFrmLogin;
implementation
uses UnitPrincipal, UnitDM;
var Contador:integer;
{$R *.DFM}

procedure TFrmLogin.BtnCancelarClick(Sender: TObject);
begin
frmPrincipal.close;
end;

procedure TFrmLogin.FormShow(Sender: TObject);
begin
edNome.setfocus;
end;

procedure TFrmLogin.BtnOKClick(Sender: TObject);
var ValorSenha:TstringField;
begin if not DM.tableusers.findkey([ednome.text]) then
begin pnlMensagem.Caption:='Login Recusado, Usuário Desconhecido...';
inc(Contador); if contador=4 then
frmPrincipal.close;
ednome.setfocus;
Exit;
end;
ValorSenha:=DM.tableUsers.findfield('Senha') as tStringfield;
if valorsenha.value<>edsenha.text then begin
pnlMensagem.Caption:='Login Recusado, Senha Inválida...';
inc(Contador); if Contador=4 then
frmPrincipal.close;
edsenha.setfocus;
Exit;
end;
frmPrincipal.label2.Caption := frmLogin.EdNome.Text;
frmPrincipal.enabled:=true;
frmlogin.release;
end;
end.

A unit Principal é essa:
unit UnitPrincipal;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrls;
type
TFrmPrincipal = class(TForm) MainMenu1: TMainMenu;
Cadastro1: TMenuItem;
Consulta1: TMenuItem;
Relatorio1: TMenuItem;
Movimento1: TMenuItem;
Senhas1: TMenuItem;
Configurar1: TMenuItem;
Sair1: TMenuItem;
SenhasUsuarios1: TMenuItem;
HabilitarSenhas1: TMenuItem;
mnuLogoff: TMenuItem;
Label1: TLabel;
Label2: TLabel;
procedure Sair1Click(Sender: TObject);
procedure SenhasUsuarios1Click(Sender: TObject);
procedure mnuLogoffClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var FrmPrincipal: TFrmPrincipal;
implementation
uses UnitSenhas, UnitLogin, UnitDM;
{$R *.DFM}
procedure TFrmPrincipal.Sair1Click(Sender: TObject);
begin
// frmPrincipal.Release;
// frmLogin.Release;
// DM.TableUsers.Close;
// frmPrincipal.Destroy;
Application.Terminate;
end;

procedure TFrmPrincipal.SenhasUsuarios1Click(Sender: TObject);
begin
frmsenhas:=tfrmsenhas.create(self);
frmsenhas.show;
end;
procedure TFrmPrincipal.mnuLogoffClick(Sender: TObject);
begin
//frmPrincipal.Release;
Application.CreateForm(TFrmLogin,FrmLogin);
Application.CreateForm(TfrmPrincipal,frmPrincipal);
frmPrincipal.Show;
// DMFinan.IBDatabaseFinan.Open;
// DMFinan.TBUsuario.Active:=True;
FrmLogin.ShowModal;
end;
end.

A unit do Projeto é essa:

program Parte2;
uses Forms, UnitPrincipal in 'UnitPrincipal.pas' , UnitLogin in 'UnitLogin.pas' , UnitDM in 'UnitDM.pas' {DM: TDataModule}, UnitSenhas in 'UnitSenhas.pas' ;
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TFrmPrincipal, FrmPrincipal);
Application.CreateForm(TDM, DM);
Application.Run;
end.

Não sei onde tá dando erro.


Alguém me ajuda com esse erro, to travado nisso.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar