Recent

Author Topic: Criar um Sleep sem travar o programa?  (Read 5047 times)

ismaeldm

  • Newbie
  • Posts: 3
Criar um Sleep sem travar o programa?
« on: October 08, 2012, 10:47:53 pm »
Bem, quando eu ainda estava estudando o Pascal, usando o Free Pascal, eu gostava de brincar com os códigos e criei varios "joguinhos" pela própria tela do DOS, utilizando bastante o procedimento delay.
Hoje, ja programando atravez do lazarus, fui tentar criar alguns efeitos para movimento de imagem, fazer tipo um slide... Entretanto não funcionou, pois tanto o sleep como o delay (creio que na verdade sejam a mesma coisa com nome diferente) travaram o programa e só voltaram ao normal depois de ja ter movimentado a imagem, tipo assim, em vez de ela fazer assim:

> (pequena pausa) > (pequena pausa) > (pequena pausa) >

Aconteceu assim:

>                                  (grande pausa)                                  >

Alguém sabe como resolver este problema?
Abaixo irei passar o código para facilitar o entendimento

Code: [Select]
procedure TFormulario.MoveDown(Movimento: integer);
var
  PosAtual: integer;
begin
  PosAtual := self.Imagem.Top;
  while PosAtual < Movimento do
  begin
    sleep (10);
    PosAtual := PosAtual + 1;
    self.Imagem.Top := PosAtual;
  end;
end;
« Last Edit: October 08, 2012, 10:50:08 pm by ismaeldm »

typo

  • Hero Member
  • *****
  • Posts: 3051
Re: Criar um Sleep sem travar o programa?
« Reply #1 on: October 09, 2012, 01:26:41 am »
Se você simplesmente tirar esse Sleep daí, vai acontecer oque você quer.

Mais: se você puser um Application.ProcessMessages no final, a imagem vai deslizar suavemente:

Code: [Select]
procedure TFormulario.MoveDown(Movimento: integer);
var
  PosAtual: integer;
  movimento :integer;
begin
  movimento := 100;
  PosAtual := self.Imagem.Top;
  while PosAtual < Movimento do
  begin
    PosAtual := PosAtual + 1;
    self.Imagem.Top := PosAtual;
    Application.ProcessMessages;
  end;
end;
« Last Edit: October 09, 2012, 01:32:46 am by typo »

ismaeldm

  • Newbie
  • Posts: 3
Re: Criar um Sleep sem travar o programa?
« Reply #2 on: October 09, 2012, 04:36:35 am »
MUITO OBRIGADO!!
Era exatamente isto que eu queria, consegui criar o movimento deslizando  :D

 

TinyPortal © 2005-2018