Progress Bar

20/07/2003

0

Alguém pode me ensinar como usar este componente ?? Gostaria de colocá-lo no splash screen do meu programa. Desde já agradeço ...


Glaubergs

Glaubergs

Responder

Post mais votado

21/07/2003

Vale ressaltar que é obrigatorio o uso do Timer para atualizar o progress bar dentro de uma procedure,atravez de verificação de uma variavel.


Não necessáriamente!
Usando a mesma forma que eu disse, colocando no meio do código incrementadores de ´position´ dentro do procedure não será necessário usar nenhum timer


Carlos Filho

Carlos Filho
Responder

Mais Posts

20/07/2003

Obubiba

Você pode utilzar o Componente Timer para trabalhar com a barra de progressão:

Defina o valor da propriedade [i:9d63f39de3]Max[/i:9d63f39de3] para [b:9d63f39de3]10[/b:9d63f39de3] da Progress Bar, e o valor de [i:9d63f39de3]Interval[/i:9d63f39de3] do Timer para [b:9d63f39de3]1000[/b:9d63f39de3], e ponha o código no OnTimer do Timer:

procedure TFormApresentacao.Timer1Timer(Sender: TObject);
begin

if ProgressBar1.Position = 10 then begin
Application.CreateForm(TFormPrincipal, FormPrincipal);
FormApresentacao.Hide;
end
else
ProgressBar1.Position := ProgressBar1.Position +1;

end;


Responder

20/07/2003

Carlos Filho

Alguém pode me ensinar como usar este componente ?? Gostaria de colocá-lo no splash screen do meu programa. Desde já agradeço ...


Antes de sermos programadores nós somos usuários concorda??
Então PELO AMOR DE DEUS não faça o que o [b:61e0944847]obubiba[/b:61e0944847] disse! Quando eu aprendi a usar gauges e progressbars eu percebi q muitos programadores usavam a ´estratégia´ do timer para dar um pequeno delay na abertura do programa a fim de ser possível ver a animação da barra de progresso sendo preenchida. Mas isso não está certo...

Uma barra de progresso tem como objetivo dar um retorno visual de tempo decorrido em uma operação demorada, e vc deveria usa-la dessa maneira...

Se quiser usar a barra de progresso no splash de seu programa, a maneira mais simples de fazê-lo é a seguinte: conte quantos formulários serão criados automaticamente e configure a propriedade MAX da barra de progresso para esse número de formulários.

No DPR do seu programa, imediatamente abaixo de cada formluário que está sendo automaticamente criado, coloque o incrementador de posição:

ProgressBar1.Position := ProgressBar1.Position + 1;


Como você configurou a pripriedade MAX da barra de progresso como o número de formulários que serão criados, quando o ultimo formlario for criado a barra estará cheia como deve ser e no tempo preciso, de acordo com a velocidade do computador onde o programa está rodando.

É claro que provavelmente você verá a animação de barra de progresso muito rápida, mas pelo menos ela será preenchida de forma verdadeira!

Se seu programa tiver poucos formulários ou se os formlarios que ela tiver forem muito simples a animação será rápida mesmo, até que alguem com um PC não muito bom rode sua aplicação....

Insisto em dizer que essa é a forma mais adequada, mas se quiser ´enganar´ os usuários, pode usar os TIMERS...

Lembre-se que você é um usuário também![/b]


Responder

20/07/2003

Kroki

Vale ressaltar que é obrigatorio o uso do Timer para atualizar o progress bar dentro de uma procedure,atravez de verificação de uma variavel.


Responder

20/07/2003

Obubiba

[b:7df915aac3]Ðerek Wildstar[/b:7df915aac3], não sou ingênuo, sei que componentes visuais deve ser utilzados com cautela e de modo a fazer com que o usuário do sistema não pense que a aplicação está travada durante operações demoradas. Portanto, o código que propus visa apenas demonstrar a utilização do componente em questão.


Responder

20/07/2003

Afarias

|Vale ressaltar que é obrigatorio o uso do Timer para atualizar o progress
|bar dentro de uma procedure,atravez de verificação de uma variavel.


Más *não* é mesmo.


Responder

20/07/2003

Kroki

Não entendi oque vc quer dizer,mas se for que não é preciso,então me de uma luz de como posso fazer sem usar o timer,para incrementar o Progress a cada encriptacao de byte;
function EnDecryptString(StrValue : String; Chave: Word) : String;
var
I: Integer;
OutValue : String;
begin
OutValue := ´´;
for I := 1 to Length(StrValue) do
OutValue := OutValue + char(Not(ord(StrValue[I])-Chave));{*aqui}
Result := OutValue;
end;


Responder

20/07/2003

Glaubergs

Olhe o meu caso Derek: tenho um form apenas que abre automaticamente, sendo que ele eh um form que requisita uma senha para acessar o programa. Depois disso abre-se o splash screen e depois o programa ... como usar o ProgressBar da forma que vc disse no meu caso ?


Responder

21/07/2003

Carlos Filho

[b:d084577955]Ðerek Wildstar[/b:d084577955], não sou ingênuo, sei que componentes visuais deve ser utilzados com cautela e de modo a fazer com que o usuário do sistema não pense que a aplicação está travada durante operações demoradas. Portanto, o código que propus visa apenas demonstrar a utilização do componente em questão.


Entendi...
Por favor me desculpe, não foi minha inteção...
Quem sou eu pra julgar...

Desculpe mesmo...


Responder

21/07/2003

Carlos Filho

Não entendi oque vc quer dizer,mas se for que não é preciso,então me de uma luz de como posso fazer sem usar o timer,para incrementar o Progress a cada encriptacao de byte; function EnDecryptString(StrValue : String; Chave: Word) : String; var I: Integer; OutValue : String; begin OutValue := ´´; for I := 1 to Length(StrValue) do OutValue := OutValue + char(Not(ord(StrValue[I])-Chave));{*aqui} Result := OutValue; end;


Po cara, acredito que tenha sido desatenção sua!! é muito faácil! Substitua seu código por este:

function EnDecryptString(StrValue : String; Chave: Word) : String;
var
    I: Integer;
    OutValue: String;
begin
    OutValue := ´´;
    ProgressBar1.Max := Length(StrValue);
    for I := 1 to Length(StrValue) do
    begin
        OutValue := OutValue + char(Not(ord(StrValue[I])-Chave));
        Progressbar1.Position := Progressbar1.Position + 1;
    end;
    Result := OutValue;
end;


Quando o processo de encriptação acabar sua barra de progresso estará completamente cheia...

:D


Responder

21/07/2003

Carlos Filho

Olhe o meu caso Derek: tenho um form apenas que abre automaticamente, sendo que ele eh um form que requisita uma senha para acessar o programa. Depois disso abre-se o splash screen e depois o programa ... como usar o ProgressBar da forma que vc disse no meu caso ?


Hummm nesse caso é dificil dizer pois tenho de saber exatamente o codigo q tem em seu DPR, pois existem varias maneiras de fazer isso...
se puder me mandar,..

mas já vou dizendo que quanto menos formularios sua aplucação tiver, mais rápida será a progressbar e vc quase não a verá enchendo,,,


Responder

21/07/2003

Kroki

Derek,vc tem certeza que testou o código????????????
Cole e tente executar,na teoria é fácil,mas na pratica...


Responder

21/07/2003

Afarias

function EnDecryptString(StrValue : String; Chave: Word): String;
var
I: Integer;
OutValue: String;
begin
OutValue := ´´;
for I := 1 to Length(StrValue) do
begin // <-- adicione
OutValue := OutValue + char(Not(ord(StrValue[I])-Chave));{*aqui}
ProgressBar1.Position := ProgressBar1.Position + 1; // <-- adicione
Application.ProcessMessages; // <-- adicione (*)
end; // <-- adicione
Result := OutValue;
end;


O Ðerek Wildstar está certo, só esqueceu da linha (*)

Vc tem q usar o Application.ProcessMessages para dar chance ao Windows ´redesenhar´ a tela e vc poderá VER o barra andar.


T+


Responder

21/07/2003

Kroki

Ainda acho que vcs não testam oque postam,veja;
[img:2b92b9ae66]http://www.projetoarcade.kit.net/images/err.jpg[/img:2b92b9ae66]
Uso o Delphi 7 e mesmo colocando a variavel ´Progressbar1:TProgessbar´não adianta,não funciona.


Responder

21/07/2003

Afarias

Cara... essa foi demais! Tudo bem, vc tá tirando onda com nossa cara né?? Fala a verdade?? É zona sua com a gente nÉ? :lol:


Em todo caso, se não for...


Meu, o ProgressBar1 é o nome do componente que sei lá q danado vc usa!!! Nem sei se vc usa um TProgressBar!! é só um exemplo!! Mude o nome e o componente para aquele q vc usa!!!


T+


Responder

21/07/2003

Kroki

To usando o Progressbar,TProgressbar.
Ja falei que o erro não é o componente!Mesmo que o componente esteja correto o Progressbar não funciona.
Faz o seguinte ja que vc ta falando que tou te tirando,posta aqui um link com o Exe e a fonte de um Button e um progress bar (desse código )funcionando pra gente ver.
Alguem aqui,poste que esse esse código adaptado funciona que eu vou ver quem ta errado. :)
Se ninguem postar... :?
Aqui esta a sua idéia;
[url]http://www.projetoarcade.kit.net/dwon/teste.zip[/url]


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar