Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Aprendizporumavida

Movimentar label como uma legenda.

Recommended Posts

Boa tarde pessoal.

 

Seguinte, tenho uma aplicação que esta lendo alguns rss's

programei para a cada 60 segundos trocar o rss e pegar uma outra notícia.

 

Ficou interessante, mas eu gostaria mesmo é de poder fazer as informações ficarem circulando no rodapé de meu formulário

tipo sai um rss e entra outro..e assim sucessivamente.

 

Se alguem tiver uma idéia de como posso fazer isto, ficarei grato.

 

 

Obrigado + uma vez pessoal.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

ó! eu fiz um exemplo dentro de um timer, com interval = 200. Coloquei um label dentro de um panel ...

 

if (Label1.Top <= 0) then
  begin
	Label1.Top:= Panel1.Height;
  end
  else
  begin
	Label1.Top:= Label1.Top - 1;
  end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

jóia..

é isto que estava precisando, só fiz uma pequena adaptação no código.. para ele deslizar para a esquerda.

 

if (Label1.left <= -50) then

begin

Label1.left:= 384;

end

else

begin

Label1.left:= Label1.left - 1;

end;

 

meu problema agora seria, após o label adentrar totalmente a esquerda, ou seja, desaparecer deslisando para dentro(esquerda) do formulário, colocá-lo novamente no inicio, lado direito do formulário, para começar a deslizar novamente.

 

Colocá-lo do lado direito é fácil, e se ele tivesse um tamanho fixo seria fácil também fazer deslizar até sumir..como no exemplo acima, seria somente colocar um valor negativo no left.

mas o tamanho dele varia de acordo com o rss, se alguem tiver uma idéia de como posso fazer....

 

Obrigado pessoal.

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Perfeito, ótimo, obrigado mesmo.

 

Fiz apenas algumas otimizações e o código ficou assim agora.

 

unit Unit1;

 

interface

 

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls, StdCtrls;

 

type

TForm1 = class(TForm)

Timer1: TTimer;

procedure Timer1Timer(Sender: TObject);

procedure FormShow(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

Form1: TForm1;

vLabel: TLabel;

 

implementation

 

{$R *.dfm}

 

procedure TForm1.Timer1Timer(Sender: TObject);

begin

if (vLabel.left <= (vLabel.width * -1)) then

begin

vLabel.left := form1.width;

if vLabel.Name = 'Label1' then

vLabel.Name := 'Label2'

else if vLabel.Name = 'Label2' then

vLabel.Name := 'Label3'

else if vLabel.Name = 'Label3' then

vLabel.Name := 'Label1';

end

else

begin

vLabel.left:= vLabel.left - 1;

end;

end;

 

 

procedure TForm1.FormShow(Sender: TObject);

begin

vLabel := TLabel.Create(form1);

Self.InsertControl(vLabel);

vLabel.Name := 'Label1';

end;

 

end.

 

 

 

só que neste eu crio os label's e no caso trabalho com 3, mas o que eu precisava agora para finalizar isto, é que, quando eu os crio desta forma no formulário, eles são posicionados na parte superior do formulário, eu apenas precisava que eles ficassem circulando na parte inferior.

 

Se alguem puder me dar um help.

 

obrigado pessoal

Compartilhar este post


Link para o post
Compartilhar em outros sites

DoubleBuffered := true;
  label1.top := form1.ClientHeight - label1.height;
  if (Label1.left <= (label1.width * -1)) then
	begin
	  Label1.left:= form1.width;
	end
  else
	begin
	  Label1.left:= Label1.left - 1;
	end;

O código ficou assim agora, inclusive, sem flick, observe o doublebuffered, essa propriedade está disponível a partir do delphi 7 e no Lazarus

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.