Progress Bar
20/07/2003
0
Glaubergs
Post mais votado
21/07/2003
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
Mais Posts
20/07/2003
Obubiba
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;
20/07/2003
Carlos Filho
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]
20/07/2003
Kroki
20/07/2003
Obubiba
20/07/2003
Afarias
|bar dentro de uma procedure,atravez de verificação de uma variavel.
Más *não* é mesmo.
20/07/2003
Kroki
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;
20/07/2003
Glaubergs
21/07/2003
Carlos Filho
Entendi...
Por favor me desculpe, não foi minha inteção...
Quem sou eu pra julgar...
Desculpe mesmo...
21/07/2003
Carlos Filho
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
21/07/2003
Carlos Filho
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,,,
21/07/2003
Kroki
Cole e tente executar,na teoria é fácil,mas na pratica...
21/07/2003
Afarias
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+
21/07/2003
Kroki
[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.
21/07/2003
Afarias
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+
21/07/2003
Kroki
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]
Clique aqui para fazer login e interagir na Comunidade :)