compilação form
fiz uma tela de login com o seguinte codigo:
var
Form9: TForm9;
tentativas : integer;
implementation
uses Unit1, Unit3, Unit5, Unit6, Unit7;
{$R *.dfm}
procedure TForm9.BitBtn1Click(Sender: TObject);
begin
if tentativas = 3 then
begin
BitBtn1.Enabled :=false;
ShowMessage('Numero de tentativas excedido');
end
else
begin
if (Edit1.Text = 'paulosg') and (Edit2.Text = '1')then
begin
Form1.Show;
end
else
begin
tentativas :=tentativas +1;
ShowMessage('Usuário ou Senha inválidos');
end;
end;
end;
end.
agora não estou conseguindo compilar para aparecer somente a tela de login. Qdo compilo o projeto aparece a tela de login mais tambem a tela principal(ela só tem abrir, quando eu inserir o usuario e senha). me ajudem a fazer com que a tela principal apareça qdo fizer login correto.
Paulo
Respostas
Gilvanio Gonçalves
03/10/2012
abra o seu projeto, no menu do delphi clique em project e em options
na aba forms, na opção Main form selecione seu form de login. exemplo ele se chama frmlogin.
logo abaixo tem dois quadros um se chama auto create forms, esta a esquerda.
o outro se chama Available form esta a direita.
se seu form frologin estiver no quadro da direita, selecione ele e clique
na seta para a esquerda rara ser levado para o quadro da direita.
se seu form principal estiver no quadro a esquerda selecione ele e clique na set
para a direita ara ele ser levado para o quadro da esquerda, e é isto.
dê ok. para finalizar e pronto.
facil, facil.
não esqueça que em main form tem que ficar frmlogin
Marcos Iwazaki
03/10/2012
Pq teria problema de aparecer sua tela principal embaixo da tela de login?
Simplesmente se o cara erra ou cancelar o login da um Applicaton.Terminate e fecha tudo.
Não fica legal vc deixar a tela de login como principal.
Qual tela vc setar como tela principal do projeto... ela não pode ser fechada, pois qdo fechar ela fecha o sistema.
Dae fica aqueles programas feios que qdo vc clica em minizar, ele não minimiza direito.. fica aparecendo acima da barra do windows.
Gilvanio Gonçalves
03/10/2012
ou sua logica.
como é mais comum fazerem aplicativos com tela de login na frente do form
principal, como cita o colega acima, pois sendo mais facil como um B A BA de iniciantes.
mas tem se usado muito tela de login separada como vc quer, em programas de empresas de desenvolvimento de
software bém profissional.
não vejo incoveniencia nisto, a unica coisa que pode é ficar um pouco desagradavel na questão
de layout(visualização), pois a tela de login ficará por cima dos icones da area de trabalho do seu cliente
se a area estiver lotada de icones, sua tela de login ficará com visualização prejudicada
devido a tantas coisas no desktop, mas isto vem de vc.
uma tela login com um layout bém feito e apresentavel, vale a pena.
Paulo
03/10/2012
Pq teria problema de aparecer sua tela principal embaixo da tela de login?
Simplesmente se o cara erra ou cancelar o login da um Applicaton.Terminate e fecha tudo.
Não fica legal vc deixar a tela de login como principal.
Qual tela vc setar como tela principal do projeto... ela não pode ser fechada, pois qdo fechar ela fecha o sistema.
Dae fica aqueles programas feios que qdo vc clica em minizar, ele não minimiza direito.. fica aparecendo acima da barra do windows.
eu quero a tela principal embaixo do login, mais ela está aparecendo em cima do login. Como eu faço para ela(frmprincipal) ap aparecer em baixo do login?
Os codigos que estou usando são:
var
FrmLogin: TFrmLogin;
tentativas : integer;
implementation
uses Unit1, Unit3, Unit5, Unit6, Unit7;
{$R *.dfm}
procedure TFrmLogin.BitBtn1Click(Sender: TObject);
begin
if tentativas = 3 then
begin
BitBtn1.Enabled :=false;
ShowMessage('Numero de tentativas excedido');
end
else
begin
if (EdtApelido.Text = 'PAULOSG') and (EdtSenha.Text = '1')then
begin
Form1.Showmodal;
end
else
begin
tentativas :=tentativas +1;
ShowMessage('Usuário ou Senha inválidos');
end;
end;
end;
procedure TFrmLogin.BtnCancelarClick(Sender: TObject);
begin
Application.Terminate;
end;
end.
Só lembrando que na opção dos forms, eu coloquei o frmlogin 1º, por isso eu não estou entendendo pq o frm principal aparece 1º do que o frmlogin. por favor me ajudem.
Alisson Santos
03/10/2012
Paulo
03/10/2012
nao deu certo. Abriu 1º a tela principal.
Marcos Iwazaki
03/10/2012
Pois quando eu comecei a programar tbm fiz isso.
So depois de um tempo que vi q era errado, e fica feio.
So que qdo eu comecei ninguem me disse nada. Por isso se ele realmente quer fazer desta maneira ok, vamos ajudá-lo a fazer.
Agora se ele esta fazendo desta maneira pq ele achava que era a unica maneira, agente ja pode ajudar mostrando outras formas.
ou sua logica.
como é mais comum fazerem aplicativos com tela de login na frente do form
principal, como cita o colega acima, pois sendo mais facil como um B A BA de iniciantes.
mas tem se usado muito tela de login separada como vc quer, em programas de empresas de desenvolvimento de
software bém profissional.
não vejo incoveniencia nisto, a unica coisa que pode é ficar um pouco desagradavel na questão
de layout(visualização), pois a tela de login ficará por cima dos icones da area de trabalho do seu cliente
se a area estiver lotada de icones, sua tela de login ficará com visualização prejudicada
devido a tantas coisas no desktop, mas isto vem de vc.
uma tela login com um layout bém feito e apresentavel, vale a pena.
Marcos Iwazaki
03/10/2012
posta aqui o codigo do seu dpr fazendo favor.
nao deu certo. Abriu 1º a tela principal.
Paulo
03/10/2012
posta aqui o codigo do seu dpr fazendo favor.
nao deu certo. Abriu 1º a tela principal.
codigo dpr:
unit Unit10;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TFrmLogin = class(TForm)
EdtUsuario: TEdit;
EdtSenha: TEdit;
LblUsuario: TLabel;
LblSenha: TLabel;
BtnOk: TBitBtn;
BtnCancelar: TBitBtn;
procedure BtnOkClick(Sender: TObject);
procedure BtnCancelarClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmLogin: TFrmLogin;
tentativas : integer;
implementation
uses Unit1, Unit3, Unit5, Unit6, Unit7;
{$R *.dfm}
Marcos Iwazaki
03/10/2012
esse é o .pas da unit10.
vai em project > view source
posta aqui o codigo do seu dpr fazendo favor.
nao deu certo. Abriu 1º a tela principal.
codigo dpr:
unit Unit10;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TFrmLogin = class(TForm)
EdtUsuario: TEdit;
EdtSenha: TEdit;
LblUsuario: TLabel;
LblSenha: TLabel;
BtnOk: TBitBtn;
BtnCancelar: TBitBtn;
procedure BtnOkClick(Sender: TObject);
procedure BtnCancelarClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmLogin: TFrmLogin;
tentativas : integer;
implementation
uses Unit1, Unit3, Unit5, Unit6, Unit7;
{$R *.dfm}
Paulo
03/10/2012
esse é o .pas da unit10.
vai em project > view source
posta aqui o codigo do seu dpr fazendo favor.
nao deu certo. Abriu 1º a tela principal.
codigo dpr:
unit Unit10;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TFrmLogin = class(TForm)
EdtUsuario: TEdit;
EdtSenha: TEdit;
LblUsuario: TLabel;
LblSenha: TLabel;
BtnOk: TBitBtn;
BtnCancelar: TBitBtn;
procedure BtnOkClick(Sender: TObject);
procedure BtnCancelarClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmLogin: TFrmLogin;
tentativas : integer;
implementation
uses Unit1, Unit3, Unit5, Unit6, Unit7;
{$R *.dfm}
Codigo dpr:
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' ,
Unit3 in 'Unit3.pas' ,
Unit5 in 'Unit5.pas' ,
Unit6 in 'Unit6.pas' ,
Unit7 in 'Unit7.pas' ,
Unit10 in 'Unit10.pas' ;
{$R *.res}
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TFrmLogin, FrmLogin);
Application.CreateForm(TForm3, Form3);
Application.CreateForm(TForm5, Form5);
Application.CreateForm(TForm6, Form6);
Application.CreateForm(TForm7, Form7);
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
Marcos Iwazaki
03/10/2012
Se vc quer que apenas o Login apareça
Vai em Project > Option > Forms > Main Form <- aqui selecione o seu form login
se vc quer q o form principal aparece e logo depois venha o login e fique em cima do form principal
Vai em Project > Option > Forms > Main Form <- aqui selecione o seu form principal
e no OnCreate do form Principal chame o login como showmodal.
Marcos Iwazaki
03/10/2012
https://dl.dropbox.com/u/43263814/Login.rar
Alisson Santos
03/10/2012
Vou fazer um exemplo desse em casa e posto aqui para você.
Paulo
03/10/2012
Se vc quer que apenas o Login apareça
Vai em Project > Option > Forms > Main Form <- aqui selecione o seu form login
se vc quer q o form principal aparece e logo depois venha o login e fique em cima do form principal
Vai em Project > Option > Forms > Main Form <- aqui selecione o seu form principal
e no OnCreate do form Principal chame o login como showmodal.
não deu Certo.
Mais obrigado!
Gilvanio Gonçalves
03/10/2012
vejo que ficou um lenga lenga de perguntas pra vc e nada de um resultado
positivo.
então vc quer a tela principal na frente e a tela de login em cima,a
espera do usuario se identificar, isto amigo é um b a ba
para todos iniciantes em delphi, vamos lá então.
acredito que no seu projeto tenha um datamodule para as suas tabelas ok.
caso não tenha crie um, ou se não vou ter que te passar outro codigo.
vamos começar pelo data module, vá no object inspector e na proriedade oncreate dele
coloque este codigo:
From1.show; frmLogin:=TfrmLogin.create(self); frmlogin.show;
estou supondo que form1 seja o form principal ok.
inclua na uses do da module a unit de do form de login e a unit do form principal.
que ficara assim na uses do datamodule:
var DM: TDM; implementation uses ULogin, UForm1;
---------------------------------------------
no form1 que acredito ser o form principal
na propridade dele mude o enabled para false
visible para false.
uma observação a ser feita, na uses do form1 não pode conter a uses
do formlogin ok.
-----------------------------------------
agora vamos ao codigo do seu form login:
var
FrmLogin: TFrmLogin;
tentativas : integer;
implementation
uses UForm1;// esta tem que estar que é do formprincipal, como disse acredito que seja
este form.
//uses Unit1, Unit3, Unit5, Unit6, Unit7;// não sei o uso destas units?
use as conforme deve ser o seu projeto junto form1.
{$R *.dfm}
procedure TFrmLogin.BitBtn1Click(Sender: TObject);
begin
if tentativas = 3 then
begin
BitBtn1.Enabled :=false;
ShowMessage('Numero de tentativas excedido');
end
else
begin
if (EdtApelido.Text = 'PAULOSG') and (EdtSenha.Text = '1')then
begin
Form1.enabled:=true; // preste a atenção como é o procedimento para o form1 e frmlogin.
frmlogin.release;
end
else
begin
tentativas :=tentativas +1;
ShowMessage('Usuário ou Senha inválidos');
end;
end;
end;no menu do delphi vá em project e options.
no campo onde esta assim :main form , tem que estar form1
no quadros abaixo;
da esquerda que é Auto-create forms, tem que conter o seu form1, e no
quadro a direita que é avaliable forms o FrmLogin, caso esteja algum
ao contrário selecione ele e clique na setas que levam os forms para
a direta ou esquerda
----------------------------------------
e esta pronto o B a Ba dos iniciantes em Delphi.
uma obervação:
no seu codigo já esta definido o usuario e senha. o seu programa terá acesso por um usuario
apenas? e sempre o mesmo usuario?
o correto na de login é verificar o usuario e a senha no banco de dados,
claro que no seu projeto vc terá que fazer um form de cadastro de usuarios
e tabela para o mesmo.
se vc não sabe como fazer pelo banco de dados, é só dizer que também
te passo esta rotina,
------------------------------------------------------------------
e é isto, esta pronto sua tela de login do jeito que vc disse que queria.
não sei porque tantas perguntas pra vc em uma rotina tão simples, até dpr
vc teve que postar, dificil viu!. até+.
Gilvanio Gonçalves
03/10/2012
fiz uma tela de login com o seguinte codigo:
var
Form9: TForm9;
tentativas : integer;
implementation
uses Unit1, Unit3, Unit5, Unit6, Unit7;
{$R *.dfm}
procedure TForm9.BitBtn1Click(Sender: TObject);
begin
if tentativas = 3 then
begin
BitBtn1.Enabled :=false;
ShowMessage('Numero de tentativas excedido');
end
else
begin
if (Edit1.Text = 'paulosg') and (Edit2.Text = '1')then
begin
Form1.Show;
end
else
begin
tentativas :=tentativas +1;
ShowMessage('Usuário ou Senha inválidos');
end;
end;
end;
end.
agora não estou conseguindo compilar para aparecer somente a tela de login. Qdo compilo o projeto aparece a tela de login mais tambem a tela principal(ela só tem abrir, quando eu inserir o usuario e senha). me ajudem a fazer com que a tela principal apareça qdo fizer login correto.
a solução esta no final deste poste amigo, desfrute.
Gilvanio Gonçalves
03/10/2012
fiz uma tela de login com o seguinte codigo:
var
Form9: TForm9;
tentativas : integer;
implementation
uses Unit1, Unit3, Unit5, Unit6, Unit7;
{$R *.dfm}
procedure TForm9.BitBtn1Click(Sender: TObject);
begin
if tentativas = 3 then
begin
BitBtn1.Enabled :=false;
ShowMessage('Numero de tentativas excedido');
end
else
begin
if (Edit1.Text = 'paulosg') and (Edit2.Text = '1')then
begin
Form1.Show;
end
else
begin
tentativas :=tentativas +1;
ShowMessage('Usuário ou Senha inválidos');
end;
end;
end;
end.
agora não estou conseguindo compilar para aparecer somente a tela de login. Qdo compilo o projeto aparece a tela de login mais tambem a tela principal(ela só tem abrir, quando eu inserir o usuario e senha). me ajudem a fazer com que a tela principal apareça qdo fizer login correto.
a solução esta logo acima amigo,postado por mim, desfrute.
Paulo
03/10/2012
vejo que ficou um lenga lenga de perguntas pra vc e nada de um resultado
positivo.
então vc quer a tela principal na frente e a tela de login em cima,a
espera do usuario se identificar, isto amigo é um b a ba
para todos iniciantes em delphi, vamos lá então.
acredito que no seu projeto tenha um datamodule para as suas tabelas ok.
caso não tenha crie um, ou se não vou ter que te passar outro codigo.
vamos começar pelo data module, vá no object inspector e na proriedade oncreate dele
coloque este codigo:
From1.show; frmLogin:=TfrmLogin.create(self); frmlogin.show;
estou supondo que form1 seja o form principal ok.
inclua na uses do da module a unit de do form de login e a unit do form principal.
que ficara assim na uses do datamodule:
var DM: TDM; implementation uses ULogin, UForm1;
---------------------------------------------
no form1 que acredito ser o form principal
na propridade dele mude o enabled para false
visible para false.
uma observação a ser feita, na uses do form1 não pode conter a uses
do formlogin ok.
-----------------------------------------
agora vamos ao codigo do seu form login:
var
FrmLogin: TFrmLogin;
tentativas : integer;
implementation
uses UForm1;// esta tem que estar que é do formprincipal, como disse acredito que seja
este form.
//uses Unit1, Unit3, Unit5, Unit6, Unit7;// não sei o uso destas units?
use as conforme deve ser o seu projeto junto form1.
{$R *.dfm}
procedure TFrmLogin.BitBtn1Click(Sender: TObject);
begin
if tentativas = 3 then
begin
BitBtn1.Enabled :=false;
ShowMessage('Numero de tentativas excedido');
end
else
begin
if (EdtApelido.Text = 'PAULOSG') and (EdtSenha.Text = '1')then
begin
Form1.enabled:=true; // preste a atenção como é o procedimento para o form1 e frmlogin.
frmlogin.release;
end
else
begin
tentativas :=tentativas +1;
ShowMessage('Usuário ou Senha inválidos');
end;
end;
end;no menu do delphi vá em project e options.
no campo onde esta assim :main form , tem que estar form1
no quadros abaixo;
da esquerda que é Auto-create forms, tem que conter o seu form1, e no
quadro a direita que é avaliable forms o FrmLogin, caso esteja algum
ao contrário selecione ele e clique na setas que levam os forms para
a direta ou esquerda
----------------------------------------
e esta pronto o B a Ba dos iniciantes em Delphi.
uma obervação:
no seu codigo já esta definido o usuario e senha. o seu programa terá acesso por um usuario
apenas? e sempre o mesmo usuario?
o correto na de login é verificar o usuario e a senha no banco de dados,
claro que no seu projeto vc terá que fazer um form de cadastro de usuarios
e tabela para o mesmo.
se vc não sabe como fazer pelo banco de dados, é só dizer que também
te passo esta rotina,
------------------------------------------------------------------
e é isto, esta pronto sua tela de login do jeito que vc disse que queria.
não sei porque tantas perguntas pra vc em uma rotina tão simples, até dpr
vc teve que postar, dificil viu!. até+.
Gilvanio! nem sei como te agradecer pois sofri tanto e vc me ajudou do jeitinho que eu queria.
Não aproveitando da sua generosidade, eu queria que vc me passasse passo a passo como fazer um form de cadastro de usuarios, pois na minha empresa são vários usuarios que operam o sistema. Grato!
e tabela para o mesmo
Paulo
03/10/2012
vejo que ficou um lenga lenga de perguntas pra vc e nada de um resultado
positivo.
então vc quer a tela principal na frente e a tela de login em cima,a
espera do usuario se identificar, isto amigo é um b a ba
para todos iniciantes em delphi, vamos lá então.
acredito que no seu projeto tenha um datamodule para as suas tabelas ok.
caso não tenha crie um, ou se não vou ter que te passar outro codigo.
vamos começar pelo data module, vá no object inspector e na proriedade oncreate dele
coloque este codigo:
From1.show; frmLogin:=TfrmLogin.create(self); frmlogin.show;
estou supondo que form1 seja o form principal ok.
inclua na uses do da module a unit de do form de login e a unit do form principal.
que ficara assim na uses do datamodule:
var DM: TDM; implementation uses ULogin, UForm1;
---------------------------------------------
no form1 que acredito ser o form principal
na propridade dele mude o enabled para false
visible para false.
uma observação a ser feita, na uses do form1 não pode conter a uses
do formlogin ok.
-----------------------------------------
agora vamos ao codigo do seu form login:
var
FrmLogin: TFrmLogin;
tentativas : integer;
implementation
uses UForm1;// esta tem que estar que é do formprincipal, como disse acredito que seja
este form.
//uses Unit1, Unit3, Unit5, Unit6, Unit7;// não sei o uso destas units?
use as conforme deve ser o seu projeto junto form1.
{$R *.dfm}
procedure TFrmLogin.BitBtn1Click(Sender: TObject);
begin
if tentativas = 3 then
begin
BitBtn1.Enabled :=false;
ShowMessage('Numero de tentativas excedido');
end
else
begin
if (EdtApelido.Text = 'PAULOSG') and (EdtSenha.Text = '1')then
begin
Form1.enabled:=true; // preste a atenção como é o procedimento para o form1 e frmlogin.
frmlogin.release;
end
else
begin
tentativas :=tentativas +1;
ShowMessage('Usuário ou Senha inválidos');
end;
end;
end;no menu do delphi vá em project e options.
no campo onde esta assim :main form , tem que estar form1
no quadros abaixo;
da esquerda que é Auto-create forms, tem que conter o seu form1, e no
quadro a direita que é avaliable forms o FrmLogin, caso esteja algum
ao contrário selecione ele e clique na setas que levam os forms para
a direta ou esquerda
----------------------------------------
e esta pronto o B a Ba dos iniciantes em Delphi.
uma obervação:
no seu codigo já esta definido o usuario e senha. o seu programa terá acesso por um usuario
apenas? e sempre o mesmo usuario?
o correto na de login é verificar o usuario e a senha no banco de dados,
claro que no seu projeto vc terá que fazer um form de cadastro de usuarios
e tabela para o mesmo.
se vc não sabe como fazer pelo banco de dados, é só dizer que também
te passo esta rotina,
------------------------------------------------------------------
e é isto, esta pronto sua tela de login do jeito que vc disse que queria.
não sei porque tantas perguntas pra vc em uma rotina tão simples, até dpr
vc teve que postar, dificil viu!. até+.
Gilvanio! nem sei como te agradecer pois sofri tanto e vc me ajudou do jeitinho que eu queria.
Não aproveitando da sua generosidade, eu queria que vc me passasse passo a passo como fazer um form de cadastro de usuarios, pois na minha empresa são vários usuarios que operam o sistema. Grato!
e tabela para o mesmo
Se não for pedir muito eu gostaria que vc me ensinasse passo a passo criação de um form de Backup e Restore para o meu sistema de cadastro
Componentes:
ADOCONNECTION
ADOQUERY
DATASOURCE
BD: ACCESS
Gilvanio Gonçalves
03/10/2012
vejo que ficou um lenga lenga de perguntas pra vc e nada de um resultado
positivo.
então vc quer a tela principal na frente e a tela de login em cima,a
espera do usuario se identificar, isto amigo é um b a ba
para todos iniciantes em delphi, vamos lá então.
acredito que no seu projeto tenha um datamodule para as suas tabelas ok.
caso não tenha crie um, ou se não vou ter que te passar outro codigo.
vamos começar pelo data module, vá no object inspector e na proriedade oncreate dele
coloque este codigo:
From1.show; frmLogin:=TfrmLogin.create(self); frmlogin.show;
estou supondo que form1 seja o form principal ok.
inclua na uses do da module a unit de do form de login e a unit do form principal.
que ficara assim na uses do datamodule:
var DM: TDM; implementation uses ULogin, UForm1;
---------------------------------------------
no form1 que acredito ser o form principal
na propridade dele mude o enabled para false
visible para false.
uma observação a ser feita, na uses do form1 não pode conter a uses
do formlogin ok.
-----------------------------------------
agora vamos ao codigo do seu form login:
var
FrmLogin: TFrmLogin;
tentativas : integer;
implementation
uses UForm1;// esta tem que estar que é do formprincipal, como disse acredito que seja
este form.
//uses Unit1, Unit3, Unit5, Unit6, Unit7;// não sei o uso destas units?
use as conforme deve ser o seu projeto junto form1.
{$R *.dfm}
procedure TFrmLogin.BitBtn1Click(Sender: TObject);
begin
if tentativas = 3 then
begin
BitBtn1.Enabled :=false;
ShowMessage('Numero de tentativas excedido');
end
else
begin
if (EdtApelido.Text = 'PAULOSG') and (EdtSenha.Text = '1')then
begin
Form1.enabled:=true; // preste a atenção como é o procedimento para o form1 e frmlogin.
frmlogin.release;
end
else
begin
tentativas :=tentativas +1;
ShowMessage('Usuário ou Senha inválidos');
end;
end;
end;no menu do delphi vá em project e options.
no campo onde esta assim :main form , tem que estar form1
no quadros abaixo;
da esquerda que é Auto-create forms, tem que conter o seu form1, e no
quadro a direita que é avaliable forms o FrmLogin, caso esteja algum
ao contrário selecione ele e clique na setas que levam os forms para
a direta ou esquerda
----------------------------------------
e esta pronto o B a Ba dos iniciantes em Delphi.
uma obervação:
no seu codigo já esta definido o usuario e senha. o seu programa terá acesso por um usuario
apenas? e sempre o mesmo usuario?
o correto na de login é verificar o usuario e a senha no banco de dados,
claro que no seu projeto vc terá que fazer um form de cadastro de usuarios
e tabela para o mesmo.
se vc não sabe como fazer pelo banco de dados, é só dizer que também
te passo esta rotina,
------------------------------------------------------------------
e é isto, esta pronto sua tela de login do jeito que vc disse que queria.
não sei porque tantas perguntas pra vc em uma rotina tão simples, até dpr
vc teve que postar, dificil viu!. até+.
Gilvanio! nem sei como te agradecer pois sofri tanto e vc me ajudou do jeitinho que eu queria.
Não aproveitando da sua generosidade, eu queria que vc me passasse passo a passo como fazer um form de cadastro de usuarios, pois na minha empresa são vários usuarios que operam o sistema. Grato!
e tabela para o mesmo
Se não for pedir muito eu gostaria que vc me ensinasse passo a passo criação de um form de Backup e Restore para o meu sistema de cadastro
Componentes:
ADOCONNECTION
ADOQUERY
DATASOURCE
BD: ACCESS
posso sim te dar um exemplo do cadastro de usuário, basico, e vejo esta questão de back-up?
só me responda, uma coisa, o seu projeto vai utilizar banco de dados access?
vc tem habilidade com o access? com os componentes de acesso a dados, como ADOCONNECTION,ADOQUERY,DATASOURCE?
pois não vou entrar em detalhe de transação de conexão ao banco de dados,ok.
principalmente que vc esta me pedindo exemplo de duas rotinas, usuarios e back-up,ok.
pra dizer a verdade nem sei se neste forum podemos estender um topico com um passo a passo, pois forum é para sanar duvidas apenas, se nenhum moderador se opor , eu darei o exemplo passo a passo pra vc, digo isto pois sou novato neste forum,ok. e em forum existe uma area expecifica para exemplos não como funciona aqui!.
Paulo
03/10/2012
vejo que ficou um lenga lenga de perguntas pra vc e nada de um resultado
positivo.
então vc quer a tela principal na frente e a tela de login em cima,a
espera do usuario se identificar, isto amigo é um b a ba
para todos iniciantes em delphi, vamos lá então.
acredito que no seu projeto tenha um datamodule para as suas tabelas ok.
caso não tenha crie um, ou se não vou ter que te passar outro codigo.
vamos começar pelo data module, vá no object inspector e na proriedade oncreate dele
coloque este codigo:
From1.show; frmLogin:=TfrmLogin.create(self); frmlogin.show;
estou supondo que form1 seja o form principal ok.
inclua na uses do da module a unit de do form de login e a unit do form principal.
que ficara assim na uses do datamodule:
var DM: TDM; implementation uses ULogin, UForm1;
---------------------------------------------
no form1 que acredito ser o form principal
na propridade dele mude o enabled para false
visible para false.
uma observação a ser feita, na uses do form1 não pode conter a uses
do formlogin ok.
-----------------------------------------
agora vamos ao codigo do seu form login:
var
FrmLogin: TFrmLogin;
tentativas : integer;
implementation
uses UForm1;// esta tem que estar que é do formprincipal, como disse acredito que seja
este form.
//uses Unit1, Unit3, Unit5, Unit6, Unit7;// não sei o uso destas units?
use as conforme deve ser o seu projeto junto form1.
{$R *.dfm}
procedure TFrmLogin.BitBtn1Click(Sender: TObject);
begin
if tentativas = 3 then
begin
BitBtn1.Enabled :=false;
ShowMessage('Numero de tentativas excedido');
end
else
begin
if (EdtApelido.Text = 'PAULOSG') and (EdtSenha.Text = '1')then
begin
Form1.enabled:=true; // preste a atenção como é o procedimento para o form1 e frmlogin.
frmlogin.release;
end
else
begin
tentativas :=tentativas +1;
ShowMessage('Usuário ou Senha inválidos');
end;
end;
end;no menu do delphi vá em project e options.
no campo onde esta assim :main form , tem que estar form1
no quadros abaixo;
da esquerda que é Auto-create forms, tem que conter o seu form1, e no
quadro a direita que é avaliable forms o FrmLogin, caso esteja algum
ao contrário selecione ele e clique na setas que levam os forms para
a direta ou esquerda
----------------------------------------
e esta pronto o B a Ba dos iniciantes em Delphi.
uma obervação:
no seu codigo já esta definido o usuario e senha. o seu programa terá acesso por um usuario
apenas? e sempre o mesmo usuario?
o correto na de login é verificar o usuario e a senha no banco de dados,
claro que no seu projeto vc terá que fazer um form de cadastro de usuarios
e tabela para o mesmo.
se vc não sabe como fazer pelo banco de dados, é só dizer que também
te passo esta rotina,
------------------------------------------------------------------
e é isto, esta pronto sua tela de login do jeito que vc disse que queria.
não sei porque tantas perguntas pra vc em uma rotina tão simples, até dpr
vc teve que postar, dificil viu!. até+.
Gilvanio! nem sei como te agradecer pois sofri tanto e vc me ajudou do jeitinho que eu queria.
Não aproveitando da sua generosidade, eu queria que vc me passasse passo a passo como fazer um form de cadastro de usuarios, pois na minha empresa são vários usuarios que operam o sistema. Grato!
e tabela para o mesmo
Se não for pedir muito eu gostaria que vc me ensinasse passo a passo criação de um form de Backup e Restore para o meu sistema de cadastro
Componentes:
ADOCONNECTION
ADOQUERY
DATASOURCE
BD: ACCESS
posso sim te dar um exemplo do cadastro de usuário, basico, e vejo esta questão de back-up?
só me responda, uma coisa, o seu projeto vai utilizar banco de dados access?
vc tem habilidade com o access? com os componentes de acesso a dados, como ADOCONNECTION,ADOQUERY,DATASOURCE?
pois não vou entrar em detalhe de transação de conexão ao banco de dados,ok.
principalmente que vc esta me pedindo exemplo de duas rotinas, usuarios e back-up,ok.
pra dizer a verdade nem sei se neste forum podemos estender um topico com um passo a passo, pois forum é para sanar duvidas apenas, se nenhum moderador se opor , eu darei o exemplo passo a passo pra vc, digo isto pois sou novato neste forum,ok. e em forum existe uma area expecifica para exemplos não como funciona aqui!.
SIM, BD ACCESS
TENHO POUCA HABILIDADE COM ACC
Paulo
03/10/2012
vejo que ficou um lenga lenga de perguntas pra vc e nada de um resultado
positivo.
então vc quer a tela principal na frente e a tela de login em cima,a
espera do usuario se identificar, isto amigo é um b a ba
para todos iniciantes em delphi, vamos lá então.
acredito que no seu projeto tenha um datamodule para as suas tabelas ok.
caso não tenha crie um, ou se não vou ter que te passar outro codigo.
vamos começar pelo data module, vá no object inspector e na proriedade oncreate dele
coloque este codigo:
From1.show; frmLogin:=TfrmLogin.create(self); frmlogin.show;
estou supondo que form1 seja o form principal ok.
inclua na uses do da module a unit de do form de login e a unit do form principal.
que ficara assim na uses do datamodule:
var DM: TDM; implementation uses ULogin, UForm1;
---------------------------------------------
no form1 que acredito ser o form principal
na propridade dele mude o enabled para false
visible para false.
uma observação a ser feita, na uses do form1 não pode conter a uses
do formlogin ok.
-----------------------------------------
agora vamos ao codigo do seu form login:
var
FrmLogin: TFrmLogin;
tentativas : integer;
implementation
uses UForm1;// esta tem que estar que é do formprincipal, como disse acredito que seja
este form.
//uses Unit1, Unit3, Unit5, Unit6, Unit7;// não sei o uso destas units?
use as conforme deve ser o seu projeto junto form1.
{$R *.dfm}
procedure TFrmLogin.BitBtn1Click(Sender: TObject);
begin
if tentativas = 3 then
begin
BitBtn1.Enabled :=false;
ShowMessage('Numero de tentativas excedido');
end
else
begin
if (EdtApelido.Text = 'PAULOSG') and (EdtSenha.Text = '1')then
begin
Form1.enabled:=true; // preste a atenção como é o procedimento para o form1 e frmlogin.
frmlogin.release;
end
else
begin
tentativas :=tentativas +1;
ShowMessage('Usuário ou Senha inválidos');
end;
end;
end;no menu do delphi vá em project e options.
no campo onde esta assim :main form , tem que estar form1
no quadros abaixo;
da esquerda que é Auto-create forms, tem que conter o seu form1, e no
quadro a direita que é avaliable forms o FrmLogin, caso esteja algum
ao contrário selecione ele e clique na setas que levam os forms para
a direta ou esquerda
----------------------------------------
e esta pronto o B a Ba dos iniciantes em Delphi.
uma obervação:
no seu codigo já esta definido o usuario e senha. o seu programa terá acesso por um usuario
apenas? e sempre o mesmo usuario?
o correto na de login é verificar o usuario e a senha no banco de dados,
claro que no seu projeto vc terá que fazer um form de cadastro de usuarios
e tabela para o mesmo.
se vc não sabe como fazer pelo banco de dados, é só dizer que também
te passo esta rotina,
------------------------------------------------------------------
e é isto, esta pronto sua tela de login do jeito que vc disse que queria.
não sei porque tantas perguntas pra vc em uma rotina tão simples, até dpr
vc teve que postar, dificil viu!. até+.
Gilvanio! nem sei como te agradecer pois sofri tanto e vc me ajudou do jeitinho que eu queria.
Não aproveitando da sua generosidade, eu queria que vc me passasse passo a passo como fazer um form de cadastro de usuarios, pois na minha empresa são vários usuarios que operam o sistema. Grato!
e tabela para o mesmo
Se não for pedir muito eu gostaria que vc me ensinasse passo a passo criação de um form de Backup e Restore para o meu sistema de cadastro
Componentes:
ADOCONNECTION
ADOQUERY
DATASOURCE
BD: ACCESS
posso sim te dar um exemplo do cadastro de usuário, basico, e vejo esta questão de back-up?
só me responda, uma coisa, o seu projeto vai utilizar banco de dados access?
vc tem habilidade com o access? com os componentes de acesso a dados, como ADOCONNECTION,ADOQUERY,DATASOURCE?
pois não vou entrar em detalhe de transação de conexão ao banco de dados,ok.
principalmente que vc esta me pedindo exemplo de duas rotinas, usuarios e back-up,ok.
pra dizer a verdade nem sei se neste forum podemos estender um topico com um passo a passo, pois forum é para sanar duvidas apenas, se nenhum moderador se opor , eu darei o exemplo passo a passo pra vc, digo isto pois sou novato neste forum,ok. e em forum existe uma area expecifica para exemplos não como funciona aqui!.
SIM, BD ACCESS
TENHO POUCA HABILIDADE COM ACCE
Gilvanio Gonçalves
03/10/2012
sem restrições nos modulos que o usuario pode ou não acessar
no sistema,ok.
no seu delphi clique em new form, na propriedade nome, mude para frmUsuarios
no caption = Cadastro de Usuários.
em Heigth digite 160 e em width 526.
position = poScreenCenter.
salve o form como UCadUsuarios.
insira o componente Dbnavigator da aba Dat Controls, na propriedade dele em VisibleButtons
clique no sinal de +, mude as opções NbInsert, nbDelete,nbEdit,nbPost,nbCancel,nbRefresh,
todos para FALSE.
alinhe ele no topo do form.
-------------------------------
insira neste form 6 Button na aba Standard, alinhe eles
Abaixo do Dbnavigator.
Button1 Mude o Caption para Novo, nome = BtnNovo, Button2 = Confirmar,Nome = BtnConfirmar,
button3 = Alterar, Nome = BtnAlterar, Button4 = Cancelar, nome = Btn Cancelar,
Button5 = Excluir,nome = BtnExcluir, Button6 = Sair nome = BtnSair.
insira 2 dbedtis e 1 edit e também 3 label.
alinhe eles abaixo dos botões desta forma:
Label1 label2 label3 Obeserve label em cima e dbedit e edit abaixo.
dbedit1 dbedit2 edit1
edit1 mude o nome para EdConfirmSenha, apague a proriedade text dele.
label1 mude o caption para Nome, label2 = Senha, label3 = confirmar senha.
insira um panel no form, na propriedade dele deixe caption em branco
em nome, mude para pnlmensagem, em align mude para alBottom.
----------------------------------------------------
criando a tebela de usuario no access:
abra a access e clique em arquivos, novo e Banco de dados em branco.
salve com o nome Banco.mdb na pasta do seu aplicativo.
apos salvar clique criar tabela em modo design.
define estes campos:
nome do campo: tipo de dados:
CodUso Numeração Autom
Nome Texto
Senha texto
clique com o mouse usando o lado direito sobre Coduso e selecione ( Chave Primária)
no menu do access clique o icone de disket e salve a tabela com o nome de usuarios.
de dois cliques sobre a tabela usuarios, ela ficará eo estado de edição.
insira o primeiro registro nela, em nome digite, admin, em senha, 0001.
clique em fechar e feche o access.
----------------------------------------------------------------
no seu datamodule insira o componente ADOConnection, mude o nome para Conection.
em LoginPrompt = false, em porvider = Microsoft.Jet.OLEDB.4.0, em mode = cmShareDenyRead
na proriedade ConnectionString dele clique no botão com 3 pontinhos, será aberta uma tela,
nesta tela deixe a opção Use Connection strig selecionada, e na caixa de texto
abaixo insira este codigo:
Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:\PastaApli\DB\Banco.mdb;Mode=Share Deny None;Extended Properties="";Persist Security Info=False;Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False
onde no codigo esta, Source=C:\PastaApli coloque o nome da pasta do seu aplicativo, o resto deixe como esta.
Feito isto, clique em build, será aberta uma tela para vc indicar o caminho de sua de banco de dados.
na caixa de texto 1> selecione ou insira o nome de m banco de dados: clique no botão com tres pontinhos.
localize a sua pasta e o banco de dados dentro dela, ao localizar clique em abrir.
na caixa de texto focará assim: C:\pastaApli\DB\banco.mdb. ( PastaApli Pasta do seu projeto).
o restante deixe como está, se quizer testar a conexão como banco de dados, clique em testar conexão,
se vc tiver feito certo, vc recebra a mensagem: teste de conexão concluido com
exito, de ok, e outro ok , novamente, e na ultima tela ok para finalizar.
ainda no seu datamodule insira os componentes: ADOQuery da aba ADO no Delphi, mude o nome para QUso.
clique no componente Quso, na proriedade dele em connection:
selecione Conection:
na propriedade SQL clieque no botão com 3 pontinhos, será aberta uma janela editor de instrução:
clique dentro do quadro e digite esta instrução:
Select * from usuarios
clique em ok.
agora insira um datasource ao lado do conponente QUso, mude o nome para DsQuso.
na proriedade dataset dele selecione QUso.
No Evento onCreate do datamodule,Insira este Codigo:
Quso.Open;
------------------------------------------------------------------------
no form CadUsuario
dbedit1 em dataField = Nome, DataSource = Dados.DsQuso.
Dbedit2 datafield = senha, Datasource = Dados.DsQuso.
Dbnavigator DataSource = Dados.DsQuso
no evento onclose do form este codigo:
dados.Quso.cancel; Dados.Quso.close;
na uses do form declare esta variavel:
uses UnitDM;// mude para o nome da unit do seu datamodule.
var
flagadmin:integer;// variavel nova.
{$R *.DFM}-------------------------------------------------------
codigo para os botões:
Botão Novo codigo no evento onclick:
pnlMensagem.caption:=' Você está incluindo um novo Usuário ok!'; Dados.QUso.append; btnnovo.enabled:=false; btnconfirmar.enabled:=true; btnalterar.enabled:=false; btncancelar.enabled:=true; btnexcluir.enabled:=false; btnSair.enabled:=false; Edit1.visible:=true; Edit1.clear; Label3.visible:=true; dbedit1.setfocus;
---------------------------
Botão Confirmar:
if flagadmin=1 then
if dbedit1.text<>'admin' then
begin
MessageDlg('O Usuário Admin não pode ser alterado, somente a senha', mtWarning,[mbok], 0);
flagAdmin:=0;
Dados.Quso.Cancel;
pnlMensagem.Caption:=' Escolha uma das opções...';
btnnovo.enabled:=true;
btnconfirmar.enabled:=false;
btnalterar.enabled:=true;
btncancelar.enabled:=false;
btnfechar.enabled:=true;
edit1.visible:=false;
Label3.visible:=false;
exit;---------------------------------------
Botão Alterar:
if dbedit1.text='admin'then begin flagadmin:=1; pnlmensagem.caption:='Você agora está alterando dados do Admin...'; end else pnlMensagem.caption:='Você agora está alterando dados do usuário...'; Dados.Quso.edit; btnnovo.enabled:=false; btnconfirmar.enabled:=true; btnalterar.enabled:=false; btncancelar.enabled:=true; btnexcluir.enabled:=false; btnfechar.enabled:=false; dbedit1.readonly:=false; dbedit2.readonly:=false; dbedit1.setfocus;
-----------------------------------------
Botão Cancelar:
flagadmin:=0;
pnlMensagem.caption:= ' Inclussão de Dados Cancelada...';
Dados.Quso.cancel;
btnnovo.enabled:=true;
btnconfirmar.enabled:=false;
btnalterar.enabled:=true;
btncancelar.enabled:=false;
btnexcluir.enabled:=true;
btnfechar.enabled:=true;
edit1.visible:=false;
Label3.visible:=false;
------------------------------
Botão Excluir:
[code]if dbedit1.text='admin' then
begin
Messagedlg('O Usuário admin não pode ser excluído',mtwarning,[mbok],0);
exit;
end
else
if messagedlg('Você está excluíndo o usuário, tem certeza disto?', mtconfirmation, [mbyes,mbno],0)=mryes then
begin
Dados.Quso.delete;
dbedit1.setfocus;
end;
dbedit1.setfocus;
---------------------------
Botão Sair:
[code]close;observações:
onde esta Dados, mude para o nome correto de seu datamodule.
no codigo observe que defini um usuario Administrador do sistema nome Admin.
que foi o unico registro que inserimos manualmente na tabela,pois não pode um sistema que loga por usuarios, ficar
sem um usuario de administração,sem um usuario não há como entrar no sistema, como logar
se não existe nenhum usuário?.
observe também que no codigo é determinado que o usuario Admin, não pode ser excluido.
pode ser alterado nome e senha, mas não pode ser excluido.
--------------------------------------------------------
Agora temos que modificar o codigo de sua tela login, pois o sistema verificará
um usuario cadastrado no banco de dados, e não um já definido como vc fez no codigo.
antes vamos acrecentar um componente no seu frmlogin, insira um panel e deixe em branco
a propriedade caption dele, mude o nome para pnlMensagem, em align, deixe AlBottom.
Novo codigo para o frmlogin:
var
FrmLogin: TFrmLogin;
tentativas : integer;
implementation
uses UForm1 , UnitDM;//veja que acrecentei na uses a unit do Datamodule, usei o nome UnitDm, insira a unit correta do seu datamodule.
//uses Unit1, Unit3, Unit5, Unit6, Unit7;// não sei o uso destas units?
use as conforme deve ser o seu projeto junto form1.
{$R *.dfm}
procedure TFrmLogin.BitBtn1Click(Sender: TObject);
var
ValorSenha:TstringField;
begin
if not Dados.QUso.findkey([EdtApelido.text]) then
begin
pnlMensagem.Caption:='Login Recusado, Usuário Desconhecido...';
inc(tentativas);
if tentativas=3 then
Form1.close;
EdtApelido.setfocus;
Exit;
end;
ValorSenha:=Dados.Quso.findfield('Senha') as tStringfield;
if valorsenha.value<>EdtSenha.text then
begin
pnlMensagem.Caption:='Login Recusado, Senha Inválida...';
inc(tentativas);
if tentativas=3 then
From1.close;
EdtSenha.setfocus;
Exit;
end;
Form1.enabled:=true;
frmlogin.release;
end;estude o codigo veja que o usuario e senha é verificado se existe
na tabela usuarios.
Bém como vc pode observar um passo a passo em uma categoria de forum que é
para sanar duvidas, estende muito o topico, exemplos devem ficar em uma area expecifica do forum.
e neste caso lhe peço desculpa, mas não irei alongar este topico mais do
já esta sendo estendido, te passando um passo a passo sobre Back-up e restore.
Pesquise sobre isto no google e vc encontrará exemplo,ok.
ou tente vc mesmo e se tiver duvidads abra outro topico aqui no forum solicitando
ajuda a respeito de back-up e restore, espero que tenha atendido sua expectativas.
Senhores moderadores deste forum, se este exemplo solitatdo pelo o usuario, (passo a passo) esteja violando
alguma regra deste forum, peço por gentileza remover( Excluir) este exemplo, Obrigado.
Paulo
03/10/2012
sem restrições nos modulos que o usuario pode ou não acessar
no sistema,ok.
no seu delphi clique em new form, na propriedade nome, mude para frmUsuarios
no caption = Cadastro de Usuários.
em Heigth digite 160 e em width 526.
position = poScreenCenter.
salve o form como UCadUsuarios.
insira o componente Dbnavigator da aba Dat Controls, na propriedade dele em VisibleButtons
clique no sinal de +, mude as opções NbInsert, nbDelete,nbEdit,nbPost,nbCancel,nbRefresh,
todos para FALSE.
alinhe ele no topo do form.
-------------------------------
insira neste form 6 Button na aba Standard, alinhe eles
Abaixo do Dbnavigator.
Button1 Mude o Caption para Novo, nome = BtnNovo, Button2 = Confirmar,Nome = BtnConfirmar,
button3 = Alterar, Nome = BtnAlterar, Button4 = Cancelar, nome = Btn Cancelar,
Button5 = Excluir,nome = BtnExcluir, Button6 = Sair nome = BtnSair.
insira 2 dbedtis e 1 edit e também 3 label.
alinhe eles abaixo dos botões desta forma:
Label1 label2 label3 Obeserve label em cima e dbedit e edit abaixo.
dbedit1 dbedit2 edit1
edit1 mude o nome para EdConfirmSenha, apague a proriedade text dele.
label1 mude o caption para Nome, label2 = Senha, label3 = confirmar senha.
insira um panel no form, na propriedade dele deixe caption em branco
em nome, mude para pnlmensagem, em align mude para alBottom.
----------------------------------------------------
criando a tebela de usuario no access:
abra a access e clique em arquivos, novo e Banco de dados em branco.
salve com o nome Banco.mdb na pasta do seu aplicativo.
apos salvar clique criar tabela em modo design.
define estes campos:
nome do campo: tipo de dados:
CodUso Numeração Autom
Nome Texto
Senha texto
clique com o mouse usando o lado direito sobre Coduso e selecione ( Chave Primária)
no menu do access clique o icone de disket e salve a tabela com o nome de usuarios.
de dois cliques sobre a tabela usuarios, ela ficará eo estado de edição.
insira o primeiro registro nela, em nome digite, admin, em senha, 0001.
clique em fechar e feche o access.
----------------------------------------------------------------
no seu datamodule insira o componente ADOConnection, mude o nome para Conection.
em LoginPrompt = false, em porvider = Microsoft.Jet.OLEDB.4.0, em mode = cmShareDenyRead
na proriedade ConnectionString dele clique no botão com 3 pontinhos, será aberta uma tela,
nesta tela deixe a opção Use Connection strig selecionada, e na caixa de texto
abaixo insira este codigo:
Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:\PastaApli\DB\Banco.mdb;Mode=Share Deny None;Extended Properties="";Persist Security Info=False;Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False
onde no codigo esta, Source=C:\PastaApli coloque o nome da pasta do seu aplicativo, o resto deixe como esta.
Feito isto, clique em build, será aberta uma tela para vc indicar o caminho de sua de banco de dados.
na caixa de texto 1> selecione ou insira o nome de m banco de dados: clique no botão com tres pontinhos.
localize a sua pasta e o banco de dados dentro dela, ao localizar clique em abrir.
na caixa de texto focará assim: C:\pastaApli\DB\banco.mdb. ( PastaApli Pasta do seu projeto).
o restante deixe como está, se quizer testar a conexão como banco de dados, clique em testar conexão,
se vc tiver feito certo, vc recebra a mensagem: teste de conexão concluido com
exito, de ok, e outro ok , novamente, e na ultima tela ok para finalizar.
ainda no seu datamodule insira os componentes: ADOQuery da aba ADO no Delphi, mude o nome para QUso.
clique no componente Quso, na proriedade dele em connection:
selecione Conection:
na propriedade SQL clieque no botão com 3 pontinhos, será aberta uma janela editor de instrução:
clique dentro do quadro e digite esta instrução:
Select * from usuarios
clique em ok.
agora insira um datasource ao lado do conponente QUso, mude o nome para DsQuso.
na proriedade dataset dele selecione QUso.
No Evento onCreate do datamodule,Insira este Codigo:
Quso.Open;
------------------------------------------------------------------------
no form CadUsuario
dbedit1 em dataField = Nome, DataSource = Dados.DsQuso.
Dbedit2 datafield = senha, Datasource = Dados.DsQuso.
Dbnavigator DataSource = Dados.DsQuso
no evento onclose do form este codigo:
dados.Quso.cancel; Dados.Quso.close;
na uses do form declare esta variavel:
uses UnitDM;// mude para o nome da unit do seu datamodule.
var
flagadmin:integer;// variavel nova.
{$R *.DFM}-------------------------------------------------------
codigo para os botões:
Botão Novo codigo no evento onclick:
pnlMensagem.caption:=' Você está incluindo um novo Usuário ok!'; Dados.QUso.append; btnnovo.enabled:=false; btnconfirmar.enabled:=true; btnalterar.enabled:=false; btncancelar.enabled:=true; btnexcluir.enabled:=false; btnSair.enabled:=false; Edit1.visible:=true; Edit1.clear; Label3.visible:=true; dbedit1.setfocus;
---------------------------
Botão Confirmar:
if flagadmin=1 then
if dbedit1.text<>'admin' then
begin
MessageDlg('O Usuário Admin não pode ser alterado, somente a senha', mtWarning,[mbok], 0);
flagAdmin:=0;
Dados.Quso.Cancel;
pnlMensagem.Caption:=' Escolha uma das opções...';
btnnovo.enabled:=true;
btnconfirmar.enabled:=false;
btnalterar.enabled:=true;
btncancelar.enabled:=false;
btnfechar.enabled:=true;
edit1.visible:=false;
Label3.visible:=false;
exit;---------------------------------------
Botão Alterar:
if dbedit1.text='admin'then begin flagadmin:=1; pnlmensagem.caption:='Você agora está alterando dados do Admin...'; end else pnlMensagem.caption:='Você agora está alterando dados do usuário...'; Dados.Quso.edit; btnnovo.enabled:=false; btnconfirmar.enabled:=true; btnalterar.enabled:=false; btncancelar.enabled:=true; btnexcluir.enabled:=false; btnfechar.enabled:=false; dbedit1.readonly:=false; dbedit2.readonly:=false; dbedit1.setfocus;
-----------------------------------------
Botão Cancelar:
flagadmin:=0;
pnlMensagem.caption:= ' Inclussão de Dados Cancelada...';
Dados.Quso.cancel;
btnnovo.enabled:=true;
btnconfirmar.enabled:=false;
btnalterar.enabled:=true;
btncancelar.enabled:=false;
btnexcluir.enabled:=true;
btnfechar.enabled:=true;
edit1.visible:=false;
Label3.visible:=false;
------------------------------
Botão Excluir:
[code]if dbedit1.text='admin' then
begin
Messagedlg('O Usuário admin não pode ser excluído',mtwarning,[mbok],0);
exit;
end
else
if messagedlg('Você está excluíndo o usuário, tem certeza disto?', mtconfirmation, [mbyes,mbno],0)=mryes then
begin
Dados.Quso.delete;
dbedit1.setfocus;
end;
dbedit1.setfocus;
---------------------------
Botão Sair:
[code]close;observações:
onde esta Dados, mude para o nome correto de seu datamodule.
no codigo observe que defini um usuario Administrador do sistema nome Admin.
que foi o unico registro que inserimos manualmente na tabela,pois não pode um sistema que loga por usuarios, ficar
sem um usuario de administração,sem um usuario não há como entrar no sistema, como logar
se não existe nenhum usuário?.
observe também que no codigo é determinado que o usuario Admin, não pode ser excluido.
pode ser alterado nome e senha, mas não pode ser excluido.
--------------------------------------------------------
Agora temos que modificar o codigo de sua tela login, pois o sistema verificará
um usuario cadastrado no banco de dados, e não um já definido como vc fez no codigo.
antes vamos acrecentar um componente no seu frmlogin, insira um panel e deixe em branco
a propriedade caption dele, mude o nome para pnlMensagem, em align, deixe AlBottom.
Novo codigo para o frmlogin:
var
FrmLogin: TFrmLogin;
tentativas : integer;
implementation
uses UForm1 , UnitDM;//veja que acrecentei na uses a unit do Datamodule, usei o nome UnitDm, insira a unit correta do seu datamodule.
//uses Unit1, Unit3, Unit5, Unit6, Unit7;// não sei o uso destas units?
use as conforme deve ser o seu projeto junto form1.
{$R *.dfm}
procedure TFrmLogin.BitBtn1Click(Sender: TObject);
var
ValorSenha:TstringField;
begin
if not Dados.QUso.findkey([EdtApelido.text]) then
begin
pnlMensagem.Caption:='Login Recusado, Usuário Desconhecido...';
inc(tentativas);
if tentativas=3 then
Form1.close;
EdtApelido.setfocus;
Exit;
end;
ValorSenha:=Dados.Quso.findfield('Senha') as tStringfield;
if valorsenha.value<>EdtSenha.text then
begin
pnlMensagem.Caption:='Login Recusado, Senha Inválida...';
inc(tentativas);
if tentativas=3 then
From1.close;
EdtSenha.setfocus;
Exit;
end;
Form1.enabled:=true;
frmlogin.release;
end;estude o codigo veja que o usuario e senha é verificado se existe
na tabela usuarios.
Bém como vc pode observar um passo a passo em uma categoria de forum que é
para sanar duvidas, estende muito o topico, exemplos devem ficar em uma area expecifica do forum.
e neste caso lhe peço desculpa, mas não irei alongar este topico mais do
já esta sendo estendido, te passando um passo a passo sobre Back-up e restore.
Pesquise sobre isto no google e vc encontrará exemplo,ok.
ou tente vc mesmo e se tiver duvidads abra outro topico aqui no forum solicitando
ajuda a respeito de back-up e restore, espero que tenha atendido sua expectativas.
Senhores moderadores deste forum, se este exemplo solitatdo pelo o usuario, (passo a passo) esteja violando
alguma regra deste forum, peço por gentileza remover( Excluir) este exemplo, Obrigado.
Só está dando erro no findkey do FrmLogin. C pode me ajudar mais nessa?
Gilvanio Gonçalves
03/10/2012
poste o erro que aparece pra vc.
para poder te ajudar, pois não era para dar nenhum erro!.
Paulo
03/10/2012
poste o erro que aparece pra vc.
para poder te ajudar, pois não era para dar nenhum erro!.
O erro está aparecendo é que qdo eu compilo o projeto, a linha onde fica o findkey fica vermelha e o cursor piscando ao lado do findkey. será que eu não esqueci de declarar alguma coisa nas uses do frmLogin(Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, DB;)?
Gilvanio Gonçalves
03/10/2012
poste o erro que aparece pra vc.
para poder te ajudar, pois não era para dar nenhum erro!.
O erro está aparecendo é que qdo eu compilo o projeto, a linha onde fica o findkey fica vermelha e o cursor piscando ao lado do findkey. será que eu não esqueci de declarar alguma coisa nas uses do frmLogin(Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, DB;)?
não foi isso que te pedi, poste a mensagem de erro, quando o erro acontece logo abaixo no seu delphi avre uma caixa em branco, nesta caixa esta escrito o codigo do erro: exemplo de Erros, [Error} unit1.pas(28) mendagem do erro, é isto que te peço para postar, tente rodar (compilar)novamente, F9 e copie o erro e poste.
Paulo
03/10/2012
poste o erro que aparece pra vc.
para poder te ajudar, pois não era para dar nenhum erro!.
O erro está aparecendo é que qdo eu compilo o projeto, a linha onde fica o findkey fica vermelha e o cursor piscando ao lado do findkey. será que eu não esqueci de declarar alguma coisa nas uses do frmLogin(Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, DB;)?
não foi isso que te pedi, poste a mensagem de erro, quando o erro acontece logo abaixo no seu delphi avre uma caixa em branco, nesta caixa esta escrito o codigo do erro: exemplo de Erros, [Error} unit1.pas(28) mendagem do erro, é isto que te peço para postar, tente rodar (compilar)novamente, F9 e copie o erro e poste.
Desculpe!
O erro é esse:
[DCC Error] Unit9.pas(48): E2003 Undeclared identifier: 'Findkey'
[DCC Error] Unit9.pas(48): E2001 Ordinal type required
[DCC Warning] Unit9.pas(58): W1057 Implicit string cast from 'AnsiString' to 'string'
[DCC Error] Unit9.pas(22): E2065 Unsatisfied forward or external declaration: 'TFrmLogin.FormCreate'
[DCC Fatal Error] Project1.dpr(13): F2063 Could not compile used unit 'Unit9.pas'
Gilvanio Gonçalves
03/10/2012
poste o erro que aparece pra vc.
para poder te ajudar, pois não era para dar nenhum erro!.
O erro está aparecendo é que qdo eu compilo o projeto, a linha onde fica o findkey fica vermelha e o cursor piscando ao lado do findkey. será que eu não esqueci de declarar alguma coisa nas uses do frmLogin(Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, DB;)?
não foi isso que te pedi, poste a mensagem de erro, quando o erro acontece logo abaixo no seu delphi avre uma caixa em branco, nesta caixa esta escrito o codigo do erro: exemplo de Erros, [Error} unit1.pas(28) mendagem do erro, é isto que te peço para postar, tente rodar (compilar)novamente, F9 e copie o erro e poste.
Desculpe!
O erro é esse:
[DCC Error] Unit9.pas(48): E2003 Undeclared identifier: 'Findkey'
[DCC Error] Unit9.pas(48): E2001 Ordinal type required
[DCC Warning] Unit9.pas(58): W1057 Implicit string cast from 'AnsiString' to 'string'
[DCC Error] Unit9.pas(22): E2065 Unsatisfied forward or external declaration: 'TFrmLogin.FormCreate'
[DCC Fatal Error] Project1.dpr(13): F2063 Could not compile used unit 'Unit9.pas'
veja bém como havia te dito é complicado um passo a passo em forum, feito de ultima hora como fiz.
no codigo tem declaração de nome do edit errdo ero de digitação minha, esqueci de passar os datafields dos dbedits.
entre outras coisas, esqueci de te dizer que seu bco de dados tem que ficar na pasta DB e a pasta DB dentro do seu aplicativo, e vai por ai.
e vi nos eros tem erros que vc cometeu no evento oncreta do frmlogin, eu teria que ver como ficou o codigo do frmlogin
devido ao erro de findkey, não é preciso declarar um comando,esta havendo um de strig. vamos fazer o seguinte
para vc não ter que postar o codigo aqui de novo, as declrações das variaveis, e se vc inseriu as units corretamente.
se vc não se importa em exibir seu e-mail aqui no forum, poste seu e-mail que lhe envarei este exemplo, porém feito aqui por mim, dai vc verifica o codigo de tudo e corrigi no seu aplicativo assim, vc não terá erros.
vou usar os codigos que postei assim ficara mais facil para vc, é copiar do alicativo que te enviarei para o seu aplicativo ok?.
se não quizer expor seu e-mail aqui, então poste o codigo do frmlogin, neste forum não vi onde enviar mensagem particular de usuario para outro usuario.
se não vc enviaria o seu email particular pra mim, sem outros usuarios o verem,ok.
Paulo
03/10/2012
poste o erro que aparece pra vc.
para poder te ajudar, pois não era para dar nenhum erro!.
O erro está aparecendo é que qdo eu compilo o projeto, a linha onde fica o findkey fica vermelha e o cursor piscando ao lado do findkey. será que eu não esqueci de declarar alguma coisa nas uses do frmLogin(Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, DB;)?
não foi isso que te pedi, poste a mensagem de erro, quando o erro acontece logo abaixo no seu delphi avre uma caixa em branco, nesta caixa esta escrito o codigo do erro: exemplo de Erros, [Error} unit1.pas(28) mendagem do erro, é isto que te peço para postar, tente rodar (compilar)novamente, F9 e copie o erro e poste.
sim, claro!
p.s.goncalves@hotmail.com
Desculpe!
O erro é esse:
[DCC Error] Unit9.pas(48): E2003 Undeclared identifier: 'Findkey'
[DCC Error] Unit9.pas(48): E2001 Ordinal type required
[DCC Warning] Unit9.pas(58): W1057 Implicit string cast from 'AnsiString' to 'string'
[DCC Error] Unit9.pas(22): E2065 Unsatisfied forward or external declaration: 'TFrmLogin.FormCreate'
[DCC Fatal Error] Project1.dpr(13): F2063 Could not compile used unit 'Unit9.pas'
veja bém como havia te dito é complicado um passo a passo em forum, feito de ultima hora como fiz.
no codigo tem declaração de nome do edit errdo ero de digitação minha, esqueci de passar os datafields dos dbedits.
entre outras coisas, esqueci de te dizer que seu bco de dados tem que ficar na pasta DB e a pasta DB dentro do seu aplicativo, e vai por ai.
e vi nos eros tem erros que vc cometeu no evento oncreta do frmlogin, eu teria que ver como ficou o codigo do frmlogin
devido ao erro de findkey, não é preciso declarar um comando,esta havendo um de strig. vamos fazer o seguinte
para vc não ter que postar o codigo aqui de novo, as declrações das variaveis, e se vc inseriu as units corretamente.
se vc não se importa em exibir seu e-mail aqui no forum, poste seu e-mail que lhe envarei este exemplo, porém feito aqui por mim, dai vc verifica o codigo de tudo e corrigi no seu aplicativo assim, vc não terá erros.
vou usar os codigos que postei assim ficara mais facil para vc, é copiar do alicativo que te enviarei para o seu aplicativo ok?.
se não quizer expor seu e-mail aqui, então poste o codigo do frmlogin, neste forum não vi onde enviar mensagem particular de usuario para outro usuario.
se não vc enviaria o seu email particular pra mim, sem outros usuarios o verem,ok.
Gilvanio Gonçalves
03/10/2012
-------------------------------------------------
aos usuarios deste forum vou exclarecer os erros que ocorreu conforme listado abaixao:
pois se alguem se deparar com este erros saberá o motivo.
[DCC Error] Unit9.pas(48): E2003 Undeclared identifier: 'Findkey'
[DCC Error] Unit9.pas(48): E2001 Ordinal type required
[DCC Warning] Unit9.pas(58): W1057 Implicit string cast from 'AnsiString' to 'string'
na questão do FindKey, é que alguns bco de dados não aceitam mais o uso
deste comando, sendo assim, terá que ser substituido por locate, e claro
mudando a instrução do codigo ao uso do locate, ficando como o exemplo abaixo.
if not dados.QUso.Locate('nome',EdtApelido.Text,[]) then
observe o codigo que foi postado como exemplo aqui no forum, com este acima.
na questão Ordinal Type Required, é que não foi indicado no codigo
o campo nome da tabela para ser comparado ao ediApelido.
quando ao ansstring to string se refere a variavel criada no codigo como TStringField
erro porque não foi declarado na uses no form frmlogin a unit DB.
fica ai então uma explicação que acredito que possa ajudar a muitos.
Ate+
Paulo
03/10/2012
-------------------------------------------------
aos usuarios deste forum vou exclarecer os erros que ocorreu conforme listado abaixao:
pois se alguem se deparar com este erros saberá o motivo.
[DCC Error] Unit9.pas(48): E2003 Undeclared identifier: 'Findkey'
[DCC Error] Unit9.pas(48): E2001 Ordinal type required
[DCC Warning] Unit9.pas(58): W1057 Implicit string cast from 'AnsiString' to 'string'
na questão do FindKey, é que alguns bco de dados não aceitam mais o uso
deste comando, sendo assim, terá que ser substituido por locate, e claro
mudando a instrução do codigo ao uso do locate, ficando como o exemplo abaixo.
if not dados.QUso.Locate('nome',EdtApelido.Text,[]) then
observe o codigo que foi postado como exemplo aqui no forum, com este acima.
na questão Ordinal Type Required, é que não foi indicado no codigo
o campo nome da tabela para ser comparado ao ediApelido.
quando ao ansstring to string se refere a variavel criada no codigo como TStringField
erro porque não foi declarado na uses no form frmlogin a unit DB.
fica ai então uma explicação que acredito que possa ajudar a muitos.
Ate+
Obrigado pela atenção!
Sobre o Backup e Restore, não tem como vc passar pelo meu email: p.s.goncalves@hotmail.com
pois os backups e Restores que eu consegui nos foruns da internet, foi só para os bancos Firebird/Interbase/Paradox....
para o bd access não encontrei nenhum.
Caso não tenha como! mesmo assim eu te agradeço de coração pois vc me ajudou muito...
Paulo
03/10/2012
-------------------------------------------------
aos usuarios deste forum vou exclarecer os erros que ocorreu conforme listado abaixao:
pois se alguem se deparar com este erros saberá o motivo.
[DCC Error] Unit9.pas(48): E2003 Undeclared identifier: 'Findkey'
[DCC Error] Unit9.pas(48): E2001 Ordinal type required
[DCC Warning] Unit9.pas(58): W1057 Implicit string cast from 'AnsiString' to 'string'
na questão do FindKey, é que alguns bco de dados não aceitam mais o uso
deste comando, sendo assim, terá que ser substituido por locate, e claro
mudando a instrução do codigo ao uso do locate, ficando como o exemplo abaixo.
if not dados.QUso.Locate('nome',EdtApelido.Text,[]) then
observe o codigo que foi postado como exemplo aqui no forum, com este acima.
na questão Ordinal Type Required, é que não foi indicado no codigo
o campo nome da tabela para ser comparado ao ediApelido.
quando ao ansstring to string se refere a variavel criada no codigo como TStringField
erro porque não foi declarado na uses no form frmlogin a unit DB.
fica ai então uma explicação que acredito que possa ajudar a muitos.
Ate+
Obrigado pela atenção!
Sobre o Backup e Restore, não tem como vc passar pelo meu email: p.s.goncalves@hotmail.com
pois os backups e Restores que eu consegui nos foruns da internet, foi só para os bancos Firebird/Interbase/Paradox....
para o bd access não encontrei nenhum.
Caso não tenha como! mesmo assim eu te agradeço de coração pois vc me ajudou muito...
Infelizmente não chegou! se puder mande neste: paulommog@gmail.com
Alisson Santos
03/10/2012
Paulo
03/10/2012
Com o backup e o restore, ainda não.
Alisson Santos
03/10/2012
https://www.devmedia.com.br/7-criando-e-gerenciando-banco-de-dados-ib-fb/4829
Acho que vale a pena conferir e verificar qual o processo a ser feito.
Se quiser informar como quer que funcione certinho me falar que eu posso ver aqui pois tenho um exemplo que eu mesmo desenvolvi.