 |
ActiveDelphi .: O site do programador Delphi! :.
|
| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
brunokkk88 Novato

Registrado: Quinta-Feira, 30 de Junho de 2011 Mensagens: 58
|
Enviada: Qua Jul 31, 2013 4:59 pm Assunto: limitador de tempo para login com progressbar [[RESOLVIDO]] |
|
|
Boa tarde pessoal, estou querendo colocar um limitador de tempo para login com progressbar no meu sistema, porém não estou conseguindo, tentei fazer usando for só que não deu certo alguém poderia me dar uma ideia de como fazer?
Aeee galera consegui resolver o questionamento acima de uma forma fácil, o que eu fiz foi o seguinte.
Criei uma variavel global "StatusLogin" no evento active do formulário essa variavél recebe o valor 'OFF'.
Statuslogin:='OFF';
depois no componente Timer coloquei a seguinte rotina:
If statuslogin = 'OFF' then
begin
ProgressBar1.Max:=10;
If ProgressBar1.Position < ProgressBar1.Max then
ProgressBar1.Position:=ProgressBar1.Position+1
else
close;
end
else
E no botão validar login, caso dados fornecidos estejam corretos a variavel "StatusLogin" recebe o valor 'ON'
statuslogin:='ON';
No meu caso funcional perfeitamente.
Editado pela última vez por brunokkk88 em Sex Ago 02, 2013 9:25 am, num total de 1 vez |
|
| Voltar ao Topo |
|
 |
CesarRocha Mestre

Registrado: Segunda-Feira, 30 de Mai de 2011 Mensagens: 794 Localização: São Paulo - SP
|
Enviada: Qua Jul 31, 2013 5:13 pm Assunto: |
|
|
For não vai funcionar, pois ira "congelar" a sua aplicação. Você pode achar por ai sugestões recomendando usar Application.ProcessMessage, contudo não recomendo tal abordagem.
Soluções possíveis:
+ Usar um TTimer para controlar o tempo, a cada segundo passado nele você incremente o TProgressBar;
+ Criar uma TThread para manipular a passagem do tempo;
+ Criar um novo componente que contenha tal função internamente.
~bye |
|
| Voltar ao Topo |
|
 |
brunokkk88 Novato

Registrado: Quinta-Feira, 30 de Junho de 2011 Mensagens: 58
|
Enviada: Qua Jul 31, 2013 5:19 pm Assunto: |
|
|
| CesarRocha escreveu: | For não vai funcionar, pois ira "congelar" a sua aplicação. Você pode achar por ai sugestões recomendando usar Application.ProcessMessage, contudo não recomendo tal abordagem.
Soluções possíveis:
+ Usar um TTimer para controlar o tempo, a cada segundo passado nele você incremente o TProgressBar;
+ Criar uma TThread para manipular a passagem do tempo;
+ Criar um novo componente que contenha tal função internamente.
~bye |
Exatamente isso que acontece ele congela, ahh valew pela dica irei tentar fazer desta forma!!!!
vlw obrigado! |
|
| Voltar ao Topo |
|
 |
emanoelts Novato

Registrado: Sexta-Feira, 6 de Novembro de 2009 Mensagens: 82
|
Enviada: Qua Jul 31, 2013 5:33 pm Assunto: |
|
|
Olha fiz um exemplo bem simples de como usar o progressbar com um timer. Embora em meus aplicativos não coloco limite de tempo para login e sim limite de tentativas com login ou senha errados. Se o usuário digitar a senha ou login errados 'n' vezes fecho o aplicativo.
No exemplo você precisa de um Form, com um Timer, um Button e um ProgresBar:
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls, Vcl.ComCtrls;
type
TForm1 = class(TForm)
ProgressBar1: TProgressBar;
Button1: TButton;
Timer1: TTimer;
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
aux: Integer = 0;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
ProgressBar1.Max := 5;
Timer1.Enabled := True;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
ProgressBar1.Position := aux;
if aux > 5 then
begin
ProgressBar1.Position := 0;
aux := 0;
Timer1.Enabled := false;
end
else
Inc(aux);
end;
end |
|
| Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|