GARANTIR DESCONTO

Fórum Fechar Form em tempo de execução! #181961

13/09/2003

0

Saudaçoes pessoal.

Tenho um form de login onde no acesso quero habilitar botoes do form principal e fechar o form de login tentei com FRMLOGIN.CLOSE so q deu erro to citando os comandos abaixo e ressalto q coloquei no CANCLOSE := FALSE para o form nao fechar com ALT + F4

procedure TFrmLogin.SpeedButton1click(Send : TObject);

var AUX : integer;
begin
if (EDIT1.TEXT = ´´)OR(Edit2.text =´´) tHEN
Showmessage (.................)
else
begin
with Dm.... do
{ consulta sql }

if DM QUERY. recordCount = 0 Then
begin
{senha incorret}
FRMLOGIN.CLOSE;
-------->> AKI TA O ERRO NAO ENTRA Nao fecha o form COM ESSE COMANDO <<<<-------------
end
else
begin
{INSERE DADOS NO HISTORICO DE ACESSO}
{HABILITA BOTOES}
FRMLOGIN.CLOSE;
---------->>> AKI TA O ERRO NAO ENTRA NAO FECHA O FORM COM ESSE COMANDO <<<------

COMO DEVO PROCEDER..?


Jonasaf

Jonasaf

Responder

Posts

13/09/2003

Koplin

Se voce colocou CANCLOSE:=FALSE explicitamente, não fecha mesmo.
Para fechar voce precisa definir como true;

Então no seu código antes de fechar o form defina CANCLOSE:=true

Não sei se seu código faz isso, mas se não fizer, eu uso o seguinte.
A cada tentativa do usuário em impor uma senha incorreta eu incremento uma variavel. Se ela chegar a tres, o aplicativo fecha ( Application.terminate)

Se a senha estiver ok faria:
Canclose:=true;
close;

Ainda daria a opção do usuário abortar o acesso com ESC:

If key = 27 then Application.terminate;

É só uma sugestão.


Responder

Gostei + 0

14/09/2003

Jonasaf

Se voce colocou CANCLOSE:=FALSE explicitamente, não fecha mesmo. Para fechar voce precisa definir como true; Então no seu código antes de fechar o form defina CANCLOSE:=true Não sei se seu código faz isso, mas se não fizer, eu uso o seguinte. A cada tentativa do usuário em impor uma senha incorreta eu incremento uma variavel. Se ela chegar a tres, o aplicativo fecha ( Application.terminate) Se a senha estiver ok faria: Canclose:=true; close; Ainda daria a opção do usuário abortar o acesso com ESC: If key = 27 then Application.terminate; É só uma sugestão.


Como vc faz pra fazer a rotina de auto incremento..?


Responder

Gostei + 0

14/09/2003

Koplin

Esta é a rotina que eu uso. Adapte a sua maneira.

indice é uma variavel global

//senha e acesso...

procedure TFMain.EditSenhaKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
If key=VK_Escape Then Close;//dm é um datamodule
DM.TSegur.Open;//é onde estão cadastrados os usuários e senhas
If key=VK_Return Then Begin
If(DM.indice<0)or(DM.indice>4)Then DM.indice:=0;
If not DM.TSegur.Locate(´senha´,Editsenha.Text,[])Then Begin
ShowMessage(´Senha inválida´);
inc(DM.indice);
If DM.indice=3 Then Application.Terminate else EditSenha.setfocus;
Exit;
end;

aqui é a codificação se a senha passar


Responder

Gostei + 0

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

Aceitar