Jump to content
Fórum Script Brasil
  • 0
Sign in to follow this  
valSistemasDelphi

(Resolvido) Time + ProgressBar

Question

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! 

 

 

Share this post


Link to post
Share on other sites

9 answers to this question

Recommended Posts

  • 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

Share this post


Link to post
Share on other 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 ?

 

 

 

Edited by valSistemasDelphi

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

 

Share this post


Link to post
Share on other 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!

Edited by valSistemasDelphi

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  



  • Forum Statistics

    • Total Topics
      148385
    • Total Posts
      643771
×
×
  • Create New...