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

(Resolvido) Time + ProgressBar


valSistemasDelphi

Pergunta

Veio aqui pedir a ajuda de vocês.. Estou fazendo um projeto que funciona assim:

5.. Shapes... 

5... Timers

1.. SpeedButton

 

Resolução:

Código dentro do Speedbutton!!

timer1.Enabled:=true;
Shape1.Brush.Color:=clgreen;

 

Código dentro do Timer

Shape1.Brush.Color:=clred;

Funciona tipo semáforo! Progresso ligado = Verde e Depois Desligado = Vermelho... Isso tudo no tempo que eu determinar no Timer.

 

A minha dificuldade e porque Coloquei um progressBar e quero que apareça no componente. de 1 a 100%.. Conforme eu determinar no timer.

Espero ter sido claro! 

 

 

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

O que voce quer é um temporizador ..  certo ?

veja esse exemplo, e faça as modificações para o seu uso:

Obs: No botão voce vai ligar e desligar o timer  ( deixe o timer em Enabled = false )

No trackbar, voce controla o tempo que voce quer que ele funcione

O label serve para mostar o tempo que voce escolher

Proriedade Max = 1000 ( trackBar )

0 - 1000  =  vai de zero a um segundo  ( voce pode alterar esse tempo )

Ao clicar no botão o shape fica verde e ao final do tempo ele fica vermelho

o edit vai mostrar o numero da posição do ponteiro no ProgressBar que vai até 100

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    Button1: TButton;
    Edit1: TEdit;
    Shape1: TShape;
    ProgressBar1: TProgressBar;
    TrackBar1: TTrackBar;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure TrackBar1Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  on_off : integer = 0;
  cont : integer =0;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
   // ligar e desligar o timer
   inc(on_off);
   if on_off = 1 then
      begin
         Timer1.Enabled := true;
         Shape1.Brush.Color:=clgreen;
         Timer1.Interval := TrackBar1.Position;
      end
   else
      begin
         on_off := 0;
         Timer1.Enabled := false;
         Shape1.Brush.Color:=clred;
      end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
   inc(cont);
   edit1.Text := inttostr(cont);
   ProgressBar1.Position := cont;
   if cont > 99 then
      begin
         cont := 0;
         Shape1.Brush.Color:=clred;
         Timer1.Enabled := false;
      end;
end;

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
   Label1.Caption := Inttostr(TrackBar1.Position);
end;

end.

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Jonas, Muito Obrigado! Legal pra caramba.... Como eu altero esse tempo, porque clica em iniciar ele percorre 100 bem rapido..

 

Desliguei o enabled do Timer, agora ao clicar não faz mais nada, só muda a cor do shape.

 

Não compreendi muito bem a lógica do codigo, como que eu sei que vai estar Desligado ou ligado.. Pela variável... On_off ?

 

 

 

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

  • 0

Como eu altero esse tempo ?

Basta voce modificar a prorpiedade Max do TrackBar para 2000, 3000, 4000...etc

voce tem que mover o trackbar de posição para que ele tenha outros valores

Desliguei o enabled do Timer, agora ao clicar não faz mais nada, só muda a cor do shape

Voce tem que deixar a propriedade Enabled do Timer = False, antes de executar o programa

O código como está funciona perfeitamente.

 

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Não compreendi muito bem a lógica do codigo, como que eu sei que vai estar Desligado ou ligado.. Pela variável... On_off ?

sim ... se voce notar tem um contador

   // ligar e desligar o timer
   inc(on_off);

cada vez que voce clica no botão, o contador ( on_off  -- variavel inteira )  é somado de 1 ... dependendo do valor, é uma coisa ou outra ( ligado ou deslgado )

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
   // ligar e desligar o timer
   inc(on_off);
   if on_off = 1 then
      begin
         /// LIGADO 
         Timer1.Enabled := true;
         Shape1.Brush.Color:=clgreen;
         Timer1.Interval := TrackBar1.Position;
      end
   else
      begin
         // DESLIGADO
         on_off := 0;
         Timer1.Enabled := false;
         Shape1.Brush.Color:=clred;
      end;

quando voce clica uma vez, o contador soma de 1, então a variavel on-off fica com o valor de 1 e executa o codigo relacionado , ou seja ligado.

quando voce clica novamente, o contador soma + 1 novamente  e passa a valer 2

Se on-off não é 1 ( um ) e sim 2 ( dois ) então ele executa o else, e passa a valer 0 ( zero ) novamente e executa desligado

e assim o ciclo se repete a cada vez que voce clicar no botão .

abraço

 

Link para o comentário
Compartilhar em outros sites

  • 0

Entendi agora, Show de Bola... Valeu jonas.. 

Estou em alguns grupos aqui de Delphi no Whatsapp, mais tem muita gente com nariz empinado ninguém quer ajudar  ninguém!

Lembrei que sempre que postava dúvidas no fórum eu era atendido... Muito Obrigado, Esse Fórum e SHOW!

Aproveitando Conhece o Componente Tinject para Delphi?

Com ele se acessa o Whatsapp, com Delphi!

Se quiser saber algo a respeito me chama no Whatsapp, (66)98414-6846.. Conta comercial

Valeu ai!

Editado por valSistemasDelphi
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
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...