ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Como fazer uma Tela de agradecimento

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
edifrancl
Aprendiz
Aprendiz


Registrado: Quarta-Feira, 12 de Setembro de 2012
Mensagens: 173

MensagemEnviada: Ter Nov 12, 2013 7:12 pm    Assunto: Como fazer uma Tela de agradecimento Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
fhc_cabral
Novato
Novato


Registrado: Terça-Feira, 5 de Novembro de 2013
Mensagens: 24

MensagemEnviada: Qua Nov 13, 2013 1:47 pm    Assunto: Re: Como fazer uma Tela de agradecimento Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
claudio.ferreira
Profissional
Profissional


Registrado: Quarta-Feira, 18 de Setembro de 2013
Mensagens: 667

MensagemEnviada: Qua Nov 13, 2013 2:56 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
GustavoToyota
Profissional
Profissional


Registrado: Domingo, 9 de Outubro de 2011
Mensagens: 605
Localização: Sorocaba - SP

MensagemEnviada: Qua Nov 13, 2013 3:19 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
claudio.ferreira
Profissional
Profissional


Registrado: Quarta-Feira, 18 de Setembro de 2013
Mensagens: 667

MensagemEnviada: Qua Nov 13, 2013 3:21 pm    Assunto: Responder com Citação

Verdade gustavo
_________________
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
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
informacaoweed
Aprendiz
Aprendiz


Registrado: Terça-Feira, 1 de Outubro de 2013
Mensagens: 268
Localização: Porto Alegre / RS

MensagemEnviada: Qua Nov 13, 2013 4:07 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
informacaoweed
Aprendiz
Aprendiz


Registrado: Terça-Feira, 1 de Outubro de 2013
Mensagens: 268
Localização: Porto Alegre / RS

MensagemEnviada: Qua Nov 13, 2013 4:12 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
informacaoweed
Aprendiz
Aprendiz


Registrado: Terça-Feira, 1 de Outubro de 2013
Mensagens: 268
Localização: Porto Alegre / RS

MensagemEnviada: Qua Nov 13, 2013 4:13 pm    Assunto: Responder com Citação

Putz o comando que eu passei roda de cima para baixo :9
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
edifrancl
Aprendiz
Aprendiz


Registrado: Quarta-Feira, 12 de Setembro de 2012
Mensagens: 173

MensagemEnviada: Qui Nov 14, 2013 7:39 am    Assunto: Responder com Citação

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! Sad
_________________
"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
Ver o perfil de Usuários Enviar Mensagem Particular
edifrancl
Aprendiz
Aprendiz


Registrado: Quarta-Feira, 12 de Setembro de 2012
Mensagens: 173

MensagemEnviada: Qui Nov 14, 2013 10:05 am    Assunto: Tai como fiz! Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
edifrancl
Aprendiz
Aprendiz


Registrado: Quarta-Feira, 12 de Setembro de 2012
Mensagens: 173

MensagemEnviada: Qui Nov 14, 2013 10:22 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
edifrancl
Aprendiz
Aprendiz


Registrado: Quarta-Feira, 12 de Setembro de 2012
Mensagens: 173

MensagemEnviada: Qui Nov 14, 2013 10:23 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Sex Nov 15, 2013 3:15 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
edifrancl
Aprendiz
Aprendiz


Registrado: Quarta-Feira, 12 de Setembro de 2012
Mensagens: 173

MensagemEnviada: Dom Nov 17, 2013 12:00 pm    Assunto: Responder com Citação

Valeu Jonhy.... Very Happy
_________________
"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
Ver o perfil de Usuários Enviar Mensagem Particular
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Dom Nov 17, 2013 2:57 pm    Assunto: Responder com Citação

Disponha amigo.


bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB