25/03/2006

Form sempre na frente

Alguem pode me ajudar to precissando de algum código para fazer meu form sempre ficar na frente, não precissa ter foco mas sempre ficar na frente como no Gerenciador de Tarefas, ele perde o foco mas fica na frente.

Tó fazendo um MSN Popup com muito mais funções e to precissando disso.

Irei disponibilizar aqui para o pessoal, quando tiver pronta!

Obrigado!


Rudá

Respostas

25/03/2006

Vinicius2k

Colega,
SeuForm.Style := fsStayOnTop;

Ou alterar a propriedade [b:e00076965f]Style[/b:e00076965f] diretamente no Object Inspector.


Responder Citar

25/03/2006

Rudá

[b:65845a9a58]Undeclared identifier ´Style´[/b:65845a9a58]

Não tem a propriededa Style


Responder Citar

25/03/2006

Vinicius2k

Desculpe...

Leia-se [b:63858aa6f1]FormStyle[/b:63858aa6f1].


Responder Citar

25/03/2006

Rudá

Valeu é isso mesmo que eu queria muito obrigado!


Responder Citar

25/03/2006

Rudá

Funciona se setar a propriedade para o form principal, mas não funciona para os form filho.

Como resolver isso??


Responder Citar

25/03/2006

Martins

Funciona se setar a propriedade para o form principal, mas não funciona para os form filho. Como resolver isso??


O Código q o Vinicius passou deveria funcionar, vc testou mudando as propriedade nos forms filho? Sua aplicação é SDI ou MDI.

Em último caso tente.

    SetForegroundWindow(Formx.Handle);


Boa sorte!!!


Responder Citar

25/03/2006

Rudá

Como faço para identificar se é SDI ou MDI??

Estou fazendo assim:

Estou usando Delphi 7;
Vou em File - New - Application;
Coloco um Button no Form1;
E Coloquei esse Código:
procedure TForm1.Button1Click(Sender: TObject);
var
Form: TForm;
begin
Form:= TForm.Create(Self);
Form.FormStyle:= fsStayOnTop;
Form.Show;
end;


No Form1 o [b:4454b48427]FormStyle[/b:4454b48427] está [b:4454b48427]fsNormal[/b:4454b48427];
E assim não funcionou!
Tentei Colocar no Form1 o [b:4454b48427]FormStyle[/b:4454b48427] = [b:4454b48427]fsStayOnTop[/b:4454b48427];
Mas mesmo assim não funciona!

Podem dar uma olhada no que eu fiz: http://www.hiperleao.com.br/frente.zip


Responder Citar

25/03/2006

Vinicius2k

Até onde eu sei, isto só é possível com um Form -- o principal. Se sua aplicação tem mais de um form, não conheço solução para a situação, pois o segundo form é mantido sobre o form principal, porém não sobre as demais janelas do Windows.

Em tempo, seu código de criação do segundo form está, digamos, um tanto ´estranho´...
uses
  UnitDoForm2;

procedure TForm1.Button1Click(Sender: TObject);
begin
  SeuForm2 := TSeuForm2.Create(Application);
  SeuForm2.Show;
end;



Responder Citar

25/03/2006

Rudá

Poderia ser feito assim então, colocar o form principal na frente de tudo e os filhos na frente do principal e com isso na frente de tudo tem como fazer isso??


Responder Citar

25/03/2006

Rudá

Não tem alguma DLL que faça isso??


Responder Citar

26/03/2006

Kroki

Não sei se é isso que vc quer,modifique com sua nescessidade;
No evento OnShow do Form que vc quer;
...
try
Form1.FormStyle:= fsStayOnTop;
SetForegroundWindow(Form1.Handle);
Form1.Activate;
except end;
...
OBS:Na hora da compilação ele gera uma execessão.
Seu form sempre estará na frente dos outros.


Responder Citar

26/03/2006

Rudá

Com isso não da para mecher no form direito!


Responder Citar

26/03/2006

Kroki

Aqui eu trabalho normal,oque vc não conseguiu?


Responder Citar

26/03/2006

Rudá

Não consigo clicar no botão fechar do form principal!


Responder Citar

26/03/2006

Kroki

Vc pode tentar adaptar algo porque não sei como vc ta usando,aqui eu consigo fechar e abrir normal,mas se eu chamar um outro for tem que ser Modal.


Responder Citar