Surgir e desaparecer Form

Delphi

25/03/2006

Como faço para surgir o formulário de baixo para cima(subir) e desaparecer de cima para baixo(descendo) como no msn??


Rudá

Rudá

Curtidas 0

Respostas

Rudá

Rudá

25/03/2006

Alguem pode me ajudar??


GOSTEI 0
Paullsoftware

Paullsoftware

25/03/2006

Op´s...
tente assim...

crie uma nova aplicação, adicione um novo form e no form principal coloque um botton e teste o código abaixo:
Form2.BringToFront;
AnimateWindow(form2.Handle,3000,AW_VER_NEGATIVE);
Form2.Show;

[color=blue:144378403f][size=18:144378403f]onde [/size:144378403f][/color:144378403f]:!: :!: :!:
no lugar de [i:144378403f]AW_VER_NEGATIVE[/i:144378403f] pode ser:
[b:144378403f][list:144378403f]AW_HOR_POSITIVE
AW_HOR_NEGATIVE
AW_VER_POSITIVE
AW_VER_NEGATIVE
AW_CENTER
AW_HIDE
AW_ACTIVATE
AW_SLIDE
AW_BLEND[/list:u:144378403f][/b:144378403f]

espero ter ajduado! :wink:


GOSTEI 0
Rudá

Rudá

25/03/2006

Essas funções não server já que ele não sobe e sim ele vai mostrando, quero que ele va subindo, surgindo como no popup do msn!!

E tem um problema tb ele para a aplicação toda quando ta executando essa função!


GOSTEI 0
Paullsoftware

Paullsoftware

25/03/2006

tem um artigo no site da ClubDelphi, pode ser isso q vc esta procurando...
vou procurar e posto aqui se achar... :wink:


GOSTEI 0
Rudá

Rudá

25/03/2006

Exemplo: Tenho 5 form para ser aberto e ele abre subindo, só que eu quero que eles sejam abertos todos de vezes, e não um esperando o outro abrir totalmente para o outro começar!

Não tem como abrir todos de vez??


GOSTEI 0
Tiks

Tiks

25/03/2006

use threads!
type
  minhathread = class(TThread)
  private
  protected
    procedure Execute; override;
end;


procedure minhathread.execute;
begin
{comandos aqui}
freeOnterminate := true;
end;


e chame ela assim:
minhathread.Create(false);


GOSTEI 0
Rudá

Rudá

25/03/2006

O problema tb é que quando executo alguma função ele para tb o TTimer,

Eu quero que ele execute a ação só que não trave o form!

Pode me ajudar??


GOSTEI 0
Tiks

Tiks

25/03/2006

quando uma função é muito longa, o aplicativo para e espera o término dela, por isso ele freeza, para evitar isso é só chamar a função numa thread separada, como o meu ultimo post, assim seu form não irá travar.

qualquer dúvida só responder
:)


GOSTEI 0
Rudá

Rudá

25/03/2006

Fiz assim:

procedure TForm1.Button1Click(Sender: TObject);
begin
Form:= TForm2.Create(Application);
minhathread.Create(false);
end;

procedure minhathread.execute;
begin
AnimateWindow(Form.Handle,5000,AW_BLEND);
Form.Show;
FreeOnterminate:= True;
end;


Ai quando clico fica tudo blz, mas se eu clicar em seguida antes de ele completar o AnimateWindow ele funciona blz, ai eu fecho o segundo form que abrir e ele fecha agora o primeiro ele não fecha clico no x e nada, o que pode ser??


GOSTEI 0
Rudá

Rudá

25/03/2006

Pode me ajudar??


GOSTEI 0
Tiks

Tiks

25/03/2006

Desculpe a demora para responder,
deixo ver se eu entendi, ele da esse problema quando você clica novamente antes de terminar?

Se for, você pode por para ele só executar a thread novamente se a primeira já tiver sido terminada, tipo assim:


procedure TForm1.Button1Click(Sender: TObject);
begin
Form:= TForm2.Create(Application);
minhathread.Create(false);
end;

procedure minhathread.execute;
begin
if pronto = true then begin
pronto := false;
AnimateWindow(Form.Handle,5000,AW_BLEND);
Form.Show;
pronto := true;
FreeOnterminate:= True;
end;
end;


Eu estou fora de casa então não pude testar para ver se deu certo, se não funcionar a idéia é esta: Checar se a thread está em execução, se estiver não executar.

Espero que funcine
Tiks~


GOSTEI 0
Rudá

Rudá

25/03/2006

Value cara mas consegui, usei [b:f2fde14c0c]Synchronize[/b:f2fde14c0c]


GOSTEI 0
Rudá

Rudá

25/03/2006

Estou com um problema de Form em DLL,

Não estou conseguindo fazer com que ela feche direito, sempre da erros doidos, um cada vez mais diferente do outro, que maneira certa deve ser liberado da memória um form de uma DLL??


GOSTEI 0
Rudá

Rudá

25/03/2006

Achei o problema!

Tenho uma TImage no FormDLL e no Form do Aplicativo tenho outra TImage, a dll cria o FormDLL e me manda qual é o form para o Form do Aplicativo ai eu envio o bitmap da TImage do Aplicativo para a TImage do FormDLL, até ai tudo funciona, mas quando fecho o FormDLL, e no OnClose eu dou um Free; ai ele da erro mas se eu tirar a passagem do Bitmap ele não da mais erro, e se eu colocar uma Bitmap no TImage já definido no FormDLL e gerar a dll não da erro.

Pelo que eu percebi é na hora de passar o Bitmap.

Alguem pode me esclarecer pq??


GOSTEI 0
POSTAR