Alguem me explica esse codigo...por favor

12/12/2003

1

Me passaram assim....fiz e deu certhu, mas gostaria de enteder...

Olá,

É muito simples!

1) Coloque um componente TTimer no seu formulário, e modifique a propriedade Interval para 100.

2) Em seguida no EVENTO OnTimer do componente TTimer, insira o seguinte código:

Código:
procedure TForm1.Timer1Timer(Sender: TObject);
var tempcap : string;
z : integer;
begin
tempcap := ´´;
if FlagDir = true then x := x+1 else x := x-1;
for z := 1 to x do tempcap := tempcap + ´ ´;
tempcap := tempcap + trim(Form1.caption);
Form1.caption := tempcap;
if x = 10 then FlagDir := false;
if x = 1 then FlagDir := true;
end;


3) No evento FormCreate do formulário, coloque:

Código:
procedure TForm1.FormCreate(Sender: TObject);
begin
FlagDir := true;
x := 1;
end;


4) Não esqueça de declarar as variáveis x (integer) e FlagDir (boolean) na seção var (antes de implementation) do seu form.

Se você quiser que o caption ande mais devagar ou mais rápido, aumente ou diminua o calor da propriedade Interval do componente TTimer. Se você quiser que o espaço de movimentação do caption seja maior (no presente exemplo ele move-se 10 caracteres para cada lado), simplesmente aumente o valor do x na linha:

Código:
if x = 10 then FlagDir := false;


Responder

Posts

12/12/2003

Deus

Esse código é bastante simples. Pelo que eu entendi, o que ele faz é simular que um label fique indo de um lado para o outro não é isso? Bem, supondo que você entende o que é um [i:0aec113093]Timer[/i:0aec113093] e o que ele faz, eu vou explicar apenas o que acontece dentro do timer, a cada décimo de segundo.

procedure TForm1.Timer1Timer(Sender: TObject); 
var
  tempcap : string;
  z : integer; 

begin 
  tempcap := ´´; 
  if FlagDir = true then
    x := x+1
  else
    x := x-1; 

(** O que aconteceu aqui em cima foi o seguinte: Esta variável FlagDir é uma variável que vai controlar se o caption vai estar se movendo para a direita (ela será true) ou para a esquerda (ela será false). E o x será uma variável que vai guardar quantos espaços em branco devem ir antes do caption. Se ela estiver indo para a direita, você deve aumentar os espaços em branco, afastando o caption - já se ela estiver indo para a esquerda, você deve reduzir os espaços em branco, aproximando o caption. **)

  for z := 1 to x do
    tempcap := tempcap + ´ ´; 

(** Nessa parte, ele vai criar uma string temporária apenas com os espaços em branco necessários, para depois fazer uma junção dos espaços em branco com a caption. **)

  tempcap := tempcap + trim(Form1.caption); 
  Form1.caption := tempcap; 
  if x = 10 then
    FlagDir := false; 

  if x = 1 then
    FlagDir := true; 

(** Aqui, finalmente, o form recebe o caption com o espaçamento adequado. Se o caption já foi incrementado com 10 espaços, um de cada vez (x = 10), então é hora de atribuir ao FlagDir o valor False, ou seja, agora o movimento vai ser para a esquerda - e se o caption já foi reduzido em 9 espaços, um de cada vez (x = 1), é hora de deslocá-lo de novo para a direita, ou seja, FlagDir volta a ser True. **)

end; 


Espero que você tenha compreendido o código agora. :) O que acontece no [i:0aec113093]OnCreate[/i:0aec113093] do form é que o [i:0aec113093]x[/i:0aec113093] recebe 1, ou seja, você começa com 1 espaçamento, e o [i:0aec113093]FlagDir[/i:0aec113093] recebe true, ou seja, você estará deslocando o label inicialmente para a direita. Se você trocar onde tiver 10 para um número maior (30, por exemplo), o deslocamento será maior em ambos os sentidos. Da mesma forma, se você diminuir ou aumentar o tempo no TTimer, você verá que o deslocamento será ou mais rápido, ou mais lento. :) Deu pra entender?

Abraços, dEUS


Responder