Erro ao sair do sistema

Delphi

16/06/2011

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***

Curtidas 0

Respostas

Wilson Junior

Wilson Junior

16/06/2011

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.
GOSTEI 0
Rafael Mattos

Rafael Mattos

16/06/2011

coloca o código do Sair
GOSTEI 0
Nigro

Nigro

16/06/2011

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".
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

16/06/2011

coloca o código do Sair


Qual código?
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

16/06/2011

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?
GOSTEI 0
Wilson Junior

Wilson Junior

16/06/2011

Substitua a sua primeira linha do evento mnuLogoffClick.
GOSTEI 0
Wilson Junior

Wilson Junior

16/06/2011

Substitua a sua primeira linha do evento mnuLogoffClick.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

16/06/2011

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.
GOSTEI 0
Rafael Mattos

Rafael Mattos

16/06/2011

debuga e ve qual linha ele para



--------------------------------------------------------------------------------
Blog: http://mundodoprogramador.wordpress.com/
MSN: rafmattos@hotmail.com
Twitter: _rafmattos
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

16/06/2011

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;
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

16/06/2011

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.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

16/06/2011

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.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

16/06/2011

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
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

16/06/2011

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.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

16/06/2011

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.
GOSTEI 0
Wilson Junior

Wilson Junior

16/06/2011

Selecione a primeira linha do evento do botão logoff e aperte "F5", ele irá colocar a linha em vermelho, gerando um break-point, execute o programa e tente efetuar o logoff, ele irá para neste break-poit, após vá apertando "F8" e veja em qual linha gera o erro.

Aguardo retorno.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

16/06/2011

Selecione a primeira linha do evento do botão logoff e aperte "F5", ele irá colocar a linha em vermelho, gerando um break-point, execute o programa e tente efetuar o logoff, ele irá para neste break-poit, após vá apertando "F8" e veja em qual linha gera o erro.

Aguardo retorno.


Wilson,

O erro dá quando eu clico no botão Sair quando executo logoff.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

16/06/2011

Selecione a primeira linha do evento do botão logoff e aperte "F5", ele irá colocar a linha em vermelho, gerando um break-point, execute o programa e tente efetuar o logoff, ele irá para neste break-poit, após vá apertando "F8" e veja em qual linha gera o erro.

Aguardo retorno.


Wilson,

O erro dá quando eu clico no botão Sair quando executo logoff.


Quando executa o sistema e clica no botão Sair, o sistema encerra normalmente. Quando faço logoff e entro com outro usuário, dá o erro quando clica no botão Sair.
GOSTEI 0
Wilson Junior

Wilson Junior

16/06/2011

Tente assim no seu botão sair:
begin
  FreeAndNil( DM );
  Application.Termine;
end;


Espero ter colaborado.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

16/06/2011

Tente assim no seu botão sair:
begin
  FreeAndNil( DM );
  Application.Termine;
end;


Espero ter colaborado.


Apaga o que tem lá e adiciona esse, ou somente adicionar.
GOSTEI 0
Wilson Junior

Wilson Junior

16/06/2011

Coloque o código no seu evento Sair, substitua, pois o seu código está comentado.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

16/06/2011

Coloque o código no seu evento Sair, substitua, pois o seu código está comentado.


Ok, vou testar e posto o resultado, ok?

Obrigado por hora.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

16/06/2011

Coloque o código no seu evento Sair, substitua, pois o seu código está comentado.


Ok, vou testar e posto o resultado, ok?

Obrigado por hora.



Ainda esta dando erro.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

16/06/2011

Coloque o código no seu evento Sair, substitua, pois o seu código está comentado.


Ok, vou testar e posto o resultado, ok?

Obrigado por hora.



Ainda esta dando erro.



Wilson, o erro esta dando no end; Dei um breakpoint na linha FreeAndNil( DM ); e quando vai no end; da erro.

procedure TFrmPrincipal.Sair1Click(Sender: TObject);
begin
//  frmPrincipal.Release;
//  frmLogin.Release;
//  DM.TableUsers.Close;
//  frmPrincipal.Destroy;

  FreeAndNil( DM );
  Application.Terminate;


 // Application.Terminate;
end;
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

16/06/2011


procedure TFrmPrincipal.Sair1Click(Sender: TObject);
begin
  frmPrincipal.Close;
end;

GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

16/06/2011


procedure TFrmPrincipal.Sair1Click(Sender: TObject);
begin
  frmPrincipal.Close;
end;



Adiciona essa linha?





Continua o erro. Não sei mais...... Helllllllllllllllllllllllllllllllllllp!!!!!!!!!!!!



GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

16/06/2011


procedure TFrmPrincipal.Sair1Click(Sender: TObject);
begin
  frmPrincipal.Close;
end;



Adiciona essa linha?





Continua o erro. Não sei mais...... Helllllllllllllllllllllllllllllllllllp!!!!!!!!!!!!



Posso enviar por email para alguém ver pra mim isso? Preciso com urgência disso, to parado nesse erro.
GOSTEI 0
Eliel Martins

Eliel Martins

16/06/2011

  Olá Frederico !

  Se quiser pode mandar no meu e-mail (eliel_martins@hotmail.com) que eu vejo para você.


  Espero ter ajudado.


  Eliel G. Martins 
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

16/06/2011

  Olá Frederico !

  Se quiser pode mandar no meu e-mail (eliel_martins@hotmail.com) que eu vejo para você.


  Espero ter ajudado.


  Eliel G. Martins 
Enviei, obrigado.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

16/06/2011

  Olá Frederico !

  Se quiser pode mandar no meu e-mail (eliel_martins@hotmail.com) que eu vejo para você.


  Espero ter ajudado.


  Eliel G. Martins 
Enviei, obrigado.
Eliel você recebeu?
GOSTEI 0
José

José

16/06/2011

Este tópico esta sendo fechado por inatividade. Se necessário, sinalizar para que seja reaberto ou abrir um novo.
GOSTEI 0
POSTAR