Problemas com FOR, Alguém pode ajudar-me??

15/12/2003

1

Eh o seguinte, eu tenho um [b:28b7414802]For[/b:28b7414802] com uma rotina bem demorada e um ProcessMessages, tá tudo rodando direitinho, a aplication responde tudo ok, só q eu tenho uma scrollbox q quando clico pra rolá-la, enquando eu tiver precionando o mouse(MouseDown) o processo fica parado esperando eu soltá-lo(MouseUP)!

Alguém sabe como eu posso resolver isso??

Já tentei capturar as mensagens do windows e nada...
Com as msgs eu só consegui desabilitar a barra de rolagem, mas naum era isso q eu queria, seria bom se ele fizesse um sincronismo!

Qualquer ajuda será bem vinda!!


Grato,
Caninha51


Responder

Posts

15/12/2003

Marconi

Voce tem código nos eventos MouseDown ou MouseUp da Scroolbox ?

Se tiver, coloque uma variavel boolean pública para evitar que estes códigos sejam processados nestas ocasiões.

Exemplo

.......
Public
rolando:boolean;
....
...
...
no FormCreate coloque
rolando:=false;
....
Antes de começar o loop do FOR coloque
rolando := true;

...
na primeira linha dos códigos down ou up do Mouse coloque
if rolando then exit;

após o loop retorne o valor de rolando
rolando:=false;

Espero ter ajudado

Marconi


Responder

15/12/2003

Caninha51

Fala Marconi!

Rapaz, pior q naum tem código nenhum.

Mas de qualquer maneira ele ´executa alguma rotina´ ao rolar a barra, néh?

Então, como posso fazer um sincronismo, como com threads??


De qualquer maneira valew pela ajuda!!

Caninha51


Responder

15/12/2003

Beppe

Para fazer o que quer, precisa reestruturar seu código. O que acontece é quando o usuário clica no barra(que é um controle filho e é embutido no controle, e tem seu próprio handle, então eventos de mouse não são gerados) do scrollbox(e qualquer descendente de TScrollingWinControl) e é movimentada, um loop com chamadas a Sleep entra em ação.

Então você troca o scrollbox por duas scrollbars separadas e cria alógica para rolar os controles ou coloca o seu código num thread(eu faria assim).


Responder

15/12/2003

Caninha51

O programa faz o seguinte, vc informa a ele uma url e ele baixa todas as imagens de um site...

Ele faz 4 downloads por vez, q são 4 threads q fica baixando e mostrando o progresso do download...
Então o programa espera 1 dos 4 terminar e cria outro, e assim por diante.
Só q o código q cria os threads naum está dentro de outro thread... Eu até tentei criar um thread ´pai´ para criar os outros threads q iriam baixar as imagens, só q eu tive um problema. Ele funcionou perfeitamente só q quando acabaram as imagens a serem baixadas e o thread terminou, todos os componentes dinâmicos q eu criei(é q eu baixo as imagem e as exibo na hora) durante este processo simplesmente sumiram.


Vou analisar o lance das ScrollBars, mas aguardo mais sugestões!

Valeu Ataliba!

Caninha51


Responder

15/12/2003

Caninha51

Eu tava dando uma olhadinha e vi q com a ScrollBar ocorre o mesmo problema, o processo para!


Responder

16/12/2003

Beppe

Você está chamando free nos componentes quando a thread acaba?


Responder

16/12/2003

Caninha51

Não, para criar-los eu crio dentro do thread, mas pra destruí-los não é (seria, já q naum deu certo.) no thread naum.

Valew,

Caninha51


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira