Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
edifrancl Aprendiz


Registrado: Quarta-Feira, 12 de Setembro de 2012 Mensagens: 173
|
Enviada: Ter Nov 12, 2013 7:12 pm Assunto: Como fazer uma Tela de agradecimento |
|
|
Como faco para um texto ficar rolando de baixo para cima, tipo o de Star Wars, so que nao precisa ficar na diagonal, eh claro! kkkk Eu ja fiz isso um tempo atras mas nao me lembro mais! Eu pesquisei na net mas so vejo o efeito marquee, que eh da esquerda para a direita e eu quero de baixo para cima! Grato a todos! _________________ "O coração do homem pode fazer planos, mas a resposta certa dos lábios vem do Senhor!" Pv. 16:1 Deus é fiel! |
|
Voltar ao Topo |
|
 |
fhc_cabral Novato


Registrado: Terça-Feira, 5 de Novembro de 2013 Mensagens: 24
|
Enviada: Qua Nov 13, 2013 1:47 pm Assunto: Re: Como fazer uma Tela de agradecimento |
|
|
edifrancl escreveu: | Como faco para um texto ficar rolando de baixo para cima, tipo o de Star Wars, so que nao precisa ficar na diagonal, eh claro! kkkk Eu ja fiz isso um tempo atras mas nao me lembro mais! Eu pesquisei na net mas so vejo o efeito marquee, que eh da esquerda para a direita e eu quero de baixo para cima! Grato a todos! |
Sem muito estudo, mas acho que você poderia criar uma série de labels dentro de um listbox, e ir percorrendo eles (preenchendo o de baixo e apagando o de cima).
É possível. _________________ Fernando H. Cabral |
|
Voltar ao Topo |
|
 |
claudio.ferreira Profissional


Registrado: Quarta-Feira, 18 de Setembro de 2013 Mensagens: 667
|
Enviada: Qua Nov 13, 2013 2:56 pm Assunto: |
|
|
Solução visivelmente mais atraente seria decrementando o top de um label que começa lá em baixo e dentro de um timer se decrementa o top.
Para cada label associa-se um timer diferente a começar em tempos diferentes para que os labels não se sobreponham. _________________ Sistema SNGPC para farmácias
http://www.cmasistemas.com.br
Rastreabilidade de Medicamentos
https://www.sncm.com.br
Soluções em Delphi
https://delphisolutions.wordpress.com/
.
"E não sabendo que era impossível, foi lá e fez"
Mark Twain |
|
Voltar ao Topo |
|
 |
GustavoToyota Profissional


Registrado: Domingo, 9 de Outubro de 2011 Mensagens: 605 Localização: Sorocaba - SP
|
Enviada: Qua Nov 13, 2013 3:19 pm Assunto: |
|
|
claudio.ferreira escreveu: | Solução visivelmente mais atraente seria decrementando o top de um label que começa lá em baixo e dentro de um timer se decrementa o top.
Para cada label associa-se um timer diferente a começar em tempos diferentes para que os labels não se sobreponham. |
Pode ser necessário colocar os Labels dentro de um TPanel ou usar TStaticLabel's para evitar o famoso "flickering".
Editado pela última vez por GustavoToyota em Qua Nov 13, 2013 3:22 pm, num total de 2 vezes |
|
Voltar ao Topo |
|
 |
claudio.ferreira Profissional


Registrado: Quarta-Feira, 18 de Setembro de 2013 Mensagens: 667
|
|
Voltar ao Topo |
|
 |
informacaoweed Aprendiz


Registrado: Terça-Feira, 1 de Outubro de 2013 Mensagens: 268 Localização: Porto Alegre / RS
|
Enviada: Qua Nov 13, 2013 4:07 pm Assunto: |
|
|
Dando sequência a idéia dos colegas: pode-se criar um TLabel bem grande ou um TMemo com o texto dentro, este texto, de início, teria uma séria de comandos de nova linha (acho que é '#13' - a galera pode confirmar). coloca um timer, dentro do evento OnTimer programa para deletar uma linha. então o texto virá subindo.
Se a mensagem tiver que ficar rodando sem parar, comaçando do início quando terminar, antes de niciar o timer, guarde o texto do Memo em uma variável,
Quando o Memo ficar vazio, insere de novo o texto nele. _________________ Aguarde... nossa Evolução está sendo processada. |
|
Voltar ao Topo |
|
 |
informacaoweed Aprendiz


Registrado: Terça-Feira, 1 de Outubro de 2013 Mensagens: 268 Localização: Porto Alegre / RS
|
Enviada: Qua Nov 13, 2013 4:12 pm Assunto: |
|
|
Aí gurizada.
Zera o que eu falei.. hehehe
TMemo tem um evento pra isso
Chama ScrollBy();
Dentro dos parênteses, você coloca um um valor integer que é o valor do incremento para rolar horizontal, e outro para ele rolar vertical; defina 0 para a direção que não quizer ter movimento e algum valor positivo para o sentido que quizer movimento.
Coloque este comando dentro do OnTimer;
Código: |
TimerOnTimer(Sender : TObject)
begin
Memo1.ScrollBy(0,1)
end;
|
Defina Interval do Timer para 5 (ou o valor que quizer)
Testei aqui, funcionou[/code] |
|
Voltar ao Topo |
|
 |
informacaoweed Aprendiz


Registrado: Terça-Feira, 1 de Outubro de 2013 Mensagens: 268 Localização: Porto Alegre / RS
|
Enviada: Qua Nov 13, 2013 4:13 pm Assunto: |
|
|
Putz o comando que eu passei roda de cima para baixo :9 |
|
Voltar ao Topo |
|
 |
edifrancl Aprendiz


Registrado: Quarta-Feira, 12 de Setembro de 2012 Mensagens: 173
|
Enviada: Qui Nov 14, 2013 7:39 am Assunto: |
|
|
Valeu galera... Vou testar aqui e posto como fiz! O meu "medo" era o flicker (acho que eh esse o nome) em que o texto fica piscando na tela, o que faz a tela ficar com uma apresentacao feia!  _________________ "O coração do homem pode fazer planos, mas a resposta certa dos lábios vem do Senhor!" Pv. 16:1 Deus é fiel! |
|
Voltar ao Topo |
|
 |
edifrancl Aprendiz


Registrado: Quarta-Feira, 12 de Setembro de 2012 Mensagens: 173
|
Enviada: Qui Nov 14, 2013 10:05 am Assunto: Tai como fiz! |
|
|
Componentes Usados
Timer; // So foi necessario usar um timer
StatiticText;
procedure TForm2.FormShow(Sender: TObject);
begin
P1 := T1.Top; // Pega a Posicao inicial de cada texto
P2 := T2.Top;
P3 := T3.Top;
end;
procedure TForm2.Timer1Timer(Sender: TObject);
begin
Top1 := T1.Top; // Pega a posicao top atual de cada texto
Top2 := T2.Top;
Top3 := T3.Top;
Dec(Top1,1); // Diminui a posicao em 1
Dec(TOP2,1);
Dec(TOP3,1);
T1.Top := Top1; // Lanco os valores para cada linha do texto
T2.Top := Top2;
T3.Top := Top3;
if T3.Top = -5 then // Quando a ultima linha some da tela, comeca-se tudo de novo
Begin
T1.Top := p1;
T2.Top := p2;
T3.Top := p3;
End;
end;
Coloquei um intervalo de 50 ms! Ficou muito bom! Grato a todos pela ajuda! _________________ "O coração do homem pode fazer planos, mas a resposta certa dos lábios vem do Senhor!" Pv. 16:1 Deus é fiel! |
|
Voltar ao Topo |
|
 |
edifrancl Aprendiz


Registrado: Quarta-Feira, 12 de Setembro de 2012 Mensagens: 173
|
Enviada: Qui Nov 14, 2013 10:22 am Assunto: |
|
|
Tentei usar um Memo, mas nao ficou legal! Usei uma maneira de ir deletando as linhas, mas o Cursor do texto quando se encontra com determinada linha, da um bug estranho! Ele paralisa o texto no qual se cruza a linha e fica como se fosse emperrado! Pra vcs verem como fica, eh so tentar fazer! kkkk _________________ "O coração do homem pode fazer planos, mas a resposta certa dos lábios vem do Senhor!" Pv. 16:1 Deus é fiel! |
|
Voltar ao Topo |
|
 |
edifrancl Aprendiz


Registrado: Quarta-Feira, 12 de Setembro de 2012 Mensagens: 173
|
Enviada: Qui Nov 14, 2013 10:23 am Assunto: |
|
|
Quanto a minha solucao acima, se o texto for grande, fica muito trabalhoso! Alguem poderia dar uma outra solucao ou dica? _________________ "O coração do homem pode fazer planos, mas a resposta certa dos lábios vem do Senhor!" Pv. 16:1 Deus é fiel! |
|
Voltar ao Topo |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Sex Nov 15, 2013 3:15 pm Assunto: |
|
|
Eis aí meu amigo, partiu de uma solução de minha aplicação, tive que retirar dela, pois esta que estou enviando é bem básica, boa sorte:
Código: | unit uAbout;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
type
TForm1 = class(TForm)
PaintBox1: TPaintBox;
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure PaintBox1Click(Sender: TObject);
private
{ Private declarations }
FTopPosition: Integer;
FHistorico: TStringList;
//XPos, YPos: Integer;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
DoubleBuffered := True;
// ************* Para Histoorico e Atalhos*********************
FHistorico := TStringList.Create;
FTopPosition := PaintBox1.Height;
try
FHistorico.LoadFromFile(ExtractFilePath(Application.ExeName) + 'History.txt');
except
end;
end;
procedure TForm1.PaintBox1Click(Sender: TObject);
begin
Timer1.Enabled := not Timer1.Enabled;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
Bitmap: TBitmap;
I, X, Y: Integer;
begin
Y := (FHistorico.Count)*-Paintbox1.Canvas.TextHeight('A');
if FTopPosition<Y then
FTopPosition := Paintbox1.Height;
Bitmap := TBitmap.Create;
try
Bitmap.Width := Paintbox1.Width;
Bitmap.Height := Paintbox1.Height;
with Paintbox1, Canvas do
begin
Bitmap.Canvas.Brush.Color := clBlack;
Bitmap.Canvas.Font.Color := clWhite;
Bitmap.Canvas.FillRect(RECT(0,0,Width,Height));
for I := 0 to FHistorico.Count-1 do
begin
X := (Width - TextWidth(FHistorico[I])) div 2;
Y := FTopPosition + I*TextHeight(FHistorico[I]);
Bitmap.Canvas.TextOut(X,Y,FHistorico[I]);
end;
Paintbox1.Canvas.Draw(0,0,Bitmap);
Dec(FTopPosition,1);
end;
if Assigned(Bitmap) then
Bitmap.Free;
except;
end;
end;
end. |
Aproveitem bem a solução.
bye _________________ P.O.W.E.R B.Y D.E.L.P.H.I |
|
Voltar ao Topo |
|
 |
edifrancl Aprendiz


Registrado: Quarta-Feira, 12 de Setembro de 2012 Mensagens: 173
|
Enviada: Dom Nov 17, 2013 12:00 pm Assunto: |
|
|
Valeu Jonhy....  _________________ "O coração do homem pode fazer planos, mas a resposta certa dos lábios vem do Senhor!" Pv. 16:1 Deus é fiel! |
|
Voltar ao Topo |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Dom Nov 17, 2013 2:57 pm Assunto: |
|
|
Disponha amigo.
bye _________________ P.O.W.E.R B.Y D.E.L.P.H.I |
|
Voltar ao Topo |
|
 |
|