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!
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á
Curtidas 0
Respostas
Vinicius2k
25/03/2006
Colega,
Ou alterar a propriedade [b:e00076965f]Style[/b:e00076965f] diretamente no Object Inspector.
SeuForm.Style := fsStayOnTop;
Ou alterar a propriedade [b:e00076965f]Style[/b:e00076965f] diretamente no Object Inspector.
GOSTEI 0
Rudá
25/03/2006
[b:65845a9a58]Undeclared identifier ´Style´[/b:65845a9a58]
Não tem a propriededa Style
Não tem a propriededa Style
GOSTEI 0
Vinicius2k
25/03/2006
Desculpe...
Leia-se [b:63858aa6f1]FormStyle[/b:63858aa6f1].
Leia-se [b:63858aa6f1]FormStyle[/b:63858aa6f1].
GOSTEI 0
Rudá
25/03/2006
Valeu é isso mesmo que eu queria muito obrigado!
GOSTEI 0
Rudá
25/03/2006
Funciona se setar a propriedade para o form principal, mas não funciona para os form filho.
Como resolver isso??
Como resolver isso??
GOSTEI 0
Martins
25/03/2006
[quote:76e6f6954a=´Rudá´]Funciona se setar a propriedade para o form principal, mas não funciona para os form filho.
Como resolver isso??[/quote:76e6f6954a]
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.
Boa sorte!!!
Como resolver isso??[/quote:76e6f6954a]
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!!!
GOSTEI 0
Rudá
25/03/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:
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
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
GOSTEI 0
Vinicius2k
25/03/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´...
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;
GOSTEI 0
Rudá
25/03/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??
GOSTEI 0
Rudá
25/03/2006
Não tem alguma DLL que faça isso??
GOSTEI 0
Kroki
25/03/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.
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.
GOSTEI 0
Rudá
25/03/2006
Com isso não da para mecher no form direito!
GOSTEI 0
Kroki
25/03/2006
Aqui eu trabalho normal,oque vc não conseguiu?
GOSTEI 0
Rudá
25/03/2006
Não consigo clicar no botão fechar do form principal!
GOSTEI 0
Kroki
25/03/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.
GOSTEI 0
Siam
25/03/2006
[quote:5e360773dc=´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??[/quote:5e360773dc]Tente colocar no onShow: SetWindowPos(Handle, HWND_TopMost, 0,0,0,0, SWP_NoMove+SWP_NoSize);
GOSTEI 0
Rudá
25/03/2006
[quote:825031c939=´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??
Tente colocar no onShow: SetWindowPos(Handle, HWND_TopMost, 0,0,0,0, SWP_NoMove+SWP_NoSize);[/quote:825031c939]Não funciona!
GOSTEI 0
Siam
25/03/2006
No Form principal funciona.
GOSTEI 0
Rudá
25/03/2006
O principal problema do tópico é o form filho e não o form principal!
GOSTEI 0
Siam
25/03/2006
Mas foi vc mesmo quem disse para colocar o principal na frente:[quote:cb94bcc24b=´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??[/quote:cb94bcc24b]Acho que para os filhos, só mudando Formstyle := fsnormal;
GOSTEI 0
Rudá
25/03/2006
Não funcionou colocando o código no form principal e no form filho colocando [b:6a10f4838e]FormStyle:= fsStayOnTop[/b:6a10f4838e]
GOSTEI 0
Rudá
25/03/2006
Consegui resolver com isso:
procedure TRudaMSNForm.CreateParams(var Params: TCreateParams); begin inherited CreateParams(Params); with Params do if not (csDesigning in ComponentState) then begin WndParent := GetDesktopWindow; Style := WS_CLIPSIBLINGS or WS_CHILD; ExStyle := WS_EX_TOPMOST or WS_EX_TOOLWINDOW; WindowClass.Style := CS_DBLCLKS or CS_SAVEBITS and not(CS_HREDRAW or CS_VREDRAW); end end;
GOSTEI 0
Rudá
25/03/2006
Quando eu uso Hide no form principal e precisso abrir um form só que eu quero que aparece na barra de tarefas o programa!
Tem como resolver isso??
Tem como resolver isso??
GOSTEI 0