Array
(
)

Form sempre na frente

Rudá
   - 25 mar 2006

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!


Vinicius2k
   - 25 mar 2006

Colega,
#Código

SeuForm.Style := fsStayOnTop;

Ou alterar a propriedade Style diretamente no Object Inspector.


Rudá
   - 25 mar 2006

Undeclared identifier ´Style´

Não tem a propriededa Style


Vinicius2k
   - 25 mar 2006

Desculpe...

Leia-se FormStyle.


Rudá
   - 25 mar 2006

Valeu é isso mesmo que eu queria muito obrigado!


Rudá
   - 25 mar 2006

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

Como resolver isso??


Martins
   - 25 mar 2006


Citação:
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.

#Código


SetForegroundWindow(Formx.Handle);


Boa sorte!!!


Rudá
   - 25 mar 2006

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:
#Código

procedure TForm1.Button1Click(Sender: TObject);
var
Form: TForm;
begin
Form:= TForm.Create(Self);
Form.FormStyle:= fsStayOnTop;
Form.Show;
end;


No Form1 o FormStyle está fsNormal;
E assim não funcionou!
Tentei Colocar no Form1 o FormStyle = fsStayOnTop;
Mas mesmo assim não funciona!

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


Vinicius2k
   - 25 mar 2006

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´...
#Código

uses
UnitDoForm2;

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



Rudá
   - 25 mar 2006

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??


Rudá
   - 25 mar 2006

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


Kroki
   - 26 mar 2006

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.


Rudá
   - 26 mar 2006

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


Kroki
   - 26 mar 2006

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


Rudá
   - 26 mar 2006

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


Kroki
   - 26 mar 2006

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.


Siam
   - 27 mar 2006


Citação:
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??
Tente colocar no onShow: SetWindowPos(Handle, HWND_TopMost, 0,0,0,0, SWP_NoMove+SWP_NoSize);


Rudá
   - 27 mar 2006


Citação:

Citação:
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??
Tente colocar no onShow: SetWindowPos(Handle, HWND_TopMost, 0,0,0,0, SWP_NoMove+SWP_NoSize);


Não funciona!


Siam
   - 27 mar 2006

No Form principal funciona.


Rudá
   - 27 mar 2006

O principal problema do tópico é o form filho e não o form principal!


Siam
   - 28 mar 2006

Mas foi vc mesmo quem disse para colocar o principal na frente:
Citação:
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??
Acho que para os filhos, só mudando Formstyle := fsnormal;