Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Form de LoGon...


Jhonatas araujo

Pergunta

Opa... Firmeza Galera/

alguém sabe ai como Criar um Form de Logon com TTimer, e progressbar

Criar um Normal, Com button de OK e Cancelar e que Precise de Identificação {Senha etc etc} eu sei...

Mais oque eu queria era que Determinasse no TTimer o Tempo que ficara o Form de Logon e o Progressbar Funcionar de Acordo com o Processo.../

Vlw ai Galera... Aguardo Resposta ... vlw.

Link para o comentário
Compartilhar em outros sites

13 respostass a esta questão

Posts Recomendados

  • 0

Acho que sua necessidade é saber como funciona o objeto TTimer. Sabendo operar os objetos, você consegue desenvolver qualquer aplicação.

Detalhe melhor qual sua necessidade nesse projeto pra podermos dar alguns exemplos do TTimer.

Link para o comentário
Compartilhar em outros sites

  • 0

Tipo eu nunca usei muito o TTimer mais sei que é uma Ferramenta indispenssavel...Fundamental...

ai notei que Fazer um Form de logon é muito Simples...

Mais eu gostaria de não ter que Colocar um button ou qualquer outra ferramente, objeto...para Proceguir,

E Sim Declarar quanto tempo ele ficara de logon e depois altomaticamente redimensionar para o Form Seguinte...

E o ProgressBar Funcionar de Acordo com o Processo dado...

Obs: não sei se precisa bem de um TTimer para fazer essa Função... talvez só Declarando com "Sleep ____" Dê...

Mais eu tentei varias vezes com o Sleep e não consegui.../

Quanto ao TTimer pode cre eu vo Procurar Domina-lo depois Como você Disse:

Saberei Operar qualquer Application {Aplicação}...Usando o mesmo!!!

Me ajuda ae Galera...

Vlw...

Editado por Jhonatas araujo
Link para o comentário
Compartilhar em outros sites

  • 0

Bem, um tanto "diferente" essa janela de log que você quer fazer, mas, vamos lá!

Um exemplo simples: em um form qualquer, adicione um objeto Label e um TTimer. Inclua o código:

procedure TForm1.FormCreate(Sender: TObject);
begin
  Tempo := 10;
  Label1.Caption := IntToStr(Tempo);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Tempo := Tempo - 1;
  Label1.Caption := IntToStr(Tempo);
  if Tempo = -1 then begin
    Self.Release;
    Self.Close;
  end
end;

Onde "Tempo" é uma variável Integer, que você deve declarar dentro da Unit.

Esse exemplo mostra o form por 10 segundos, sendo que o tempo aparece sendo decrescido no Label. Ao término dos 10 segundos, o form se fecha. Agora use sua criatividade para incrementar o form.

Editado por Duduh_Capixaba
Link para o comentário
Compartilhar em outros sites

  • 0

Ow olha só um Simples ex:

program Project1;
uses
  Forms, Controls,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas' {Form2};

{$R *.RES}

var
  F: TForm2;

begin
  F := TForm2.Create(Application);
  try
    if F.ShowModal = mrOK then begin
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      Application.Run;
    end;
  finally
    F.Free;
  end;
end.
Não teria como fazer uma Função que daria fazer assim
program Project1;

uses
  Forms, Controls,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas' {Form2};

{$R *.RES}

var
  F: TForm2;

begin
  F := TForm2.Create(Application);
  try
    if F.ShowModal = Sleep (5000)  then begin {5 Segundos}
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      Application.Run;
    end;
  finally
    F.Free;
  end;
end.

Da erro quando faz isso!!!

Não teria como/

Vlw... Abraço.

Editado por Micheus
Adicionado o delimitador de código [code] [/code]. Lembre-se de utilizá-lo para melhor visualização
Link para o comentário
Compartilhar em outros sites

  • 0

Opa .... Consegui Cara eu usei...

unit Unit1;
interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Tempo: Integer;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Tempo := 5;
  Label1.Caption := IntToStr(Tempo);
  Label1.Visible := False;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Tempo := Tempo - 1;
  Label1.Caption := IntToStr(Tempo);
  if Tempo = -1 then begin
    Form1.Release;
    Form1.Free;
  //Self.Release;
    Form2.ShowModal;
    Application.Terminate;
 //Self.Close;
  end
end;

end.

E Deu Certo!!!

Pode cre...

Mais no Exemplo Acima não teria como Fazer?/? só por Duvida mesmo...]

Vlw.....

Editado por Micheus
Adicionado o delimitador de código [code] [/code]. Lembre-se de utilizá-lo para melhor visualização
Link para o comentário
Compartilhar em outros sites

  • 0

Olha, pelo pouco que eu conheço do comando Sleep, acho que não dá não. Acho que esse comando não retorna nada, e pelo que entendi dele, enquanto ele é executado, nada acontece na aplicação, o programa se congela durante o período que você configura o Sleep.

Então, creio eu, que dessa forma não funcionaria. Mas deixo em aberto para outras pessoas responderem essa sua dúvida. Flws!

Link para o comentário
Compartilhar em outros sites

  • 0

jhonatas araujoficou muito estranha toda esta sua lógica com os forms.

Como mencionou o colega Duduh_Capixaba, esta sua tela de login é um tanto "diferente". Eu acredito que você queira é se referir a uma tela de Splash, já que telas logins são utilizadas justamente para fazer uma validação do usuário antes que ele possa acessar o sistema, de modo que não faz sentido que ela feche sozinha e o sistema "entre no ar".

Veja se esta sugestão funciona de acordo com o que você espera.

No projeto:

program Project1;
uses
  Forms, Controls,
  Unit1 in 'Unit1.pas' {Form1},  // tela de login
  Unit2 in 'Unit2.pas' {Form2};  // tela principal

{$R *.RES}

begin
  Form1 := TForm1.Create(nil);
  try
    Form1.ShowModal;
  finally
    Form1.Release;
  end;

  Application.Initialize;
  Application.CreateForm(TForm2, Form2);
  Application.Run;
end.
no seu Form1 (tela de "login"):
uses Unit1;
...
{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Tempo := 5;
  Label1.Caption := IntToStr(Tempo);
 // deixar o label invisível não faz muinto sentido
 // já que você atualiza o valor dele, melhor mostrá-lo
 // Label1.Visible := False; 
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Tempo := Tempo - 1;
  Label1.Caption := IntToStr(Tempo);
  if Tempo = -1 then
    ModalResult := mrOK; // mrOk na unit Controls
end;
end.

Esta atribuição à ModalResult fará com que a tela aberta em modo modal, seja fechada.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Pode Cre "Micheus" Eu vo ver agora!!!

Tipow pra vocês Intender melhor oque eu queria Dizer é por Exemplo...

O NOD32 Anti Virus... etc etc {È só um Exemplo}

Ai Tipow quando o mesmo Inicia, Ele AParece uma Tela {Carregando} Depois Inicia com o Aplicativo...

Até mesmo o Delphi... Aparece uma Tela {Delphi ________ Bla Bla Bla} Carregando Depois Inicia...

Indendeu?//? eu não Queria Realmente Fazer uma Form de Logon que precise de Senha ,etc... para entrar

Isso eu Sei...

O que eu Queria é o mais Simples e éra oque eu não Sabia... ushauhsas ...

Mais com o Ex: do Duduh_Capixaba eu Consegui desenvolver... Mais eu só queria Saber se Daria também daquela Forma que mencionei Acima...

Mais Ta beleza... Dessa Forma que Consegui Deu Certo...

Vlw...

Editado por Jhonatas araujo
Link para o comentário
Compartilhar em outros sites

  • 0
O NOD32 Anti Virus... etc etc {È só um Exemplo}

Ai Tipow quando o mesmo Inicia, Ele AParece uma Tela {Carregando} Depois Inicia com o Aplicativo...

Até mesmo o Delphi... Aparece uma Tela {Delphi ________ Bla Bla Bla} Carregando Depois Inicia...

Indendeu?//? eu não Queria Realmente Fazer uma Form de Logon que precise de Senha ,etc... para entrar

Isso eu Sei...

então, isto é conhecido por tela de Splash.

Mais com o Ex: do Duduh_Capixaba eu Consegui desenvolver... Mais eu só queria Saber se Daria também daquela Forma que mencionei Acima...

Mais Ta beleza... Dessa Forma que Consegui Deu Certo...

deu certo, mas não saberia dizer até quando...

O código está sim, muito estranho - e ao meu ver meio fora da lógica:

-criar splash

-mostra splash

-passado o tempo splash fecha

-cria forma principal

-mostra form principal.

seu form de splash está (tentando) fazer coisas depois de ter chamado um método Release e Free... :blink:

O resutado dos dois é o mesmo: destruir seu form, o que já implica em fechá-lo e sumir com ele do mapa. Logo parece estar funcionando, mas em uma condição instável.

Outra coisa, use apenas um dos dois métodos, e preferencialmente o Release.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Hummmmm...agora estou entendendo o que você quer, Jhonatas! Uma tela Splash. Nossa, se tivesse explicado desde o início, não precisaria de tantas voltas.

Tenho um projeto aqui onde eu uso uma. O código é o seguinte:

program Sistema;

uses
  Forms,
  SysUtils,
  UMenuPrin in 'UMenuPrin.pas' {frmMenuPrin},
  USplash in 'USplash.pas' {frmSplash},
  UDM in 'UDM.pas' {DM: TDataModule},
  ULogin in 'ULogin.pas' {frmLogin},
  UCadPadrao in 'UCadPadrao.pas' {frmCadPadrao},
  UCadCliente in 'UCadCliente.pas' {frmCadCliente},
  UCadForn in 'UCadForn.pas' {frmCadFornecedor},
  UCadFunc in 'UCadFunc.pas' {frmCadFuncionario},
  UCadCateg in 'UCadCateg.pas' {frmCadCategoria},
  UCadProd in 'UCadProd.pas' {frmCadProd};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TfrmLogin, frmLogin);
  Application.CreateForm(TfrmMenuPrin, frmMenuPrin);
  Application.CreateForm(TDM, DM);
  
  Application.CreateForm(TFrmSplash, FrmSplash);
    FrmSplash.Show; //exibe a tela FrmSplash
    FrmSplash.Refresh; // dá um refresh na tela
    Sleep(2000); // (aguarda 02 segundos) - inclua a unit "SysUtils" na cláusula Uses.
    FrmSplash.Release; // Elimina a tela da memória.
    FrmSplash := nil; // anula a referência ao ponteiro do objeto.
  
  Application.CreateForm(TfrmCadPadrao, frmCadPadrao);
  Application.CreateForm(TfrmCadProd, frmCadProd);
  Application.Run;
end.

A parte que te interessa são as 5 linhas abaixo do "Application.CreateForm(TFrmSplash, FrmSplash)", onde FrmSplash é o nome do frame que você quer mostrar na inicialização do projeto. Veja se te resolve assim.

Editado por Duduh_Capixaba
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...