Fórum Applicação sempre focada #283891

06/06/2005

0

Bem , ate hj não vi nada parecido...

Colocar o Form sempre a frente , trazer o Form para frente , fazer ele Piscar isto tudo ja foi amplamente debatido por esta comunidade.. Mas gostaria de fazer mais.. Gostaria de alem de trazer este form para frente e que ele recebesse o foco..


Para ser mais preciso , veja um exemplo .. Suponha que o form esteja na frente e que o usuário clica-sse em outro lugar... Mesmo que o form continue na frente , o Foco agora e deslocado..

Gostaria de retornar este foco automaticamente para a aplicação..

:idea: :idea: :idea:
Mesmo que para isto eu use um [b:f1c8db53a0]Timer[/b:f1c8db53a0] que exporadicamente retorna-sse o foco para a aplicação..

Ou

:idea: :idea:
Ou algo que imite Tipo o Click do mouse em cima do Form

Bem , o que acontece e o seguinte, quando a conexão cai , o form é trazido para a frente e o usuário tem que digitar uma senha em um edit.. O problema é que apesar do form esta a frente em muitas dessas situações o foco não esta com o Form..Ai o usuário tem que clicar em cima do form :cry: :cry: :cry: .. gostaria de fazer isto automaticamente , via programação

Fiu claro :?: :?: :?: Alguma duvida


Marco Salles

Marco Salles

Responder

Posts

07/06/2005

Marco Salles

Sobe....


Responder

Gostei + 0

08/06/2005

Marco Salles

Xiiiiiiiiiiiii


Responder

Gostei + 0

09/06/2005

Marco Salles

No aguardo....


Responder

Gostei + 0

09/06/2005

Delphi32

Olha, eu nunca tentei fazer isso não, mas você já tentou:

Form.SetFocus;


Logicamente, esse código teria que ficar em um timer.

Agora, me diga uma coisa. Nesse seu caso, você não poderia chamar o form com ´ShowModal´? Desse forma o usuário seria obrigado a digitar a senha. O foco jamais sairia do form.

Até!


Responder

Gostei + 0

09/06/2005

Marco Salles

Obrigado amigo...

Olha, eu nunca tentei fazer isso não, mas você já tentou: Código: Form.SetFocus; Logicamente, esse código teria que ficar em um timer.


Ja tentei :cry: :cry: :cry:

Agora, me diga uma coisa. Nesse seu caso, você não poderia chamar o form com ´ShowModal´? Desse forma o usuário seria obrigado a digitar a senha. O foco jamais sairia do form.


O Problema é que mesmo que o form apareça , quando a conexão cai, o foco é deslocado por alguma coisa inerente aos meus conhecimentos..Ai o usuário te que clicar no form...

[b:aec0206e61]Eu não sei qual o comando deve dar no evento ontimer para que o controle volte a aplicação ..Alguma coisa que devo dizer ao sistema operacional , que a janela do aplicativo e que deve estar em destaque[/b:aec0206e61]...


Responder

Gostei + 0

10/06/2005

Marco Salles

Sinceramente eu ainda não desisti


Responder

Gostei + 0

13/06/2005

Marco Salles

Mas sera o benedito :cry: :cry: :cry: :cry:


Responder

Gostei + 0

13/06/2005

Kotho

Eu não testei... mas você já tentou usar Application.BringToFront :?: :?:


Responder

Gostei + 0

13/06/2005

Marco Salles

Eu não testei... mas você já tentou usar Application.BringToFront


Ainda não.. Vou testar agora.

Obrigado.


Responder

Gostei + 0

13/06/2005

Marco Salles

Ate agora a aplicação ta um tiro... :P :P :P

Onde voce consegui esta instrução Application.BringToFront e o que praticamente ela faz :?: :?: :?:


Responder

Gostei + 0

13/06/2005

Kotho

Peguei no help do Delphi... parece que ela traz a applicação na frente de todas as outras...


Responder

Gostei + 0

14/06/2005

Paullsoftware

amigo tente isso...
isso faz com que ele fique sempre por cima das aplicações!!!
SetWindowPos(Handle,Hwnd_TopMost,0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOACTIVATE)
....
dica dada por Massuda, um usuário do forum...

[b:954c3dd6e5] ANTES DE POSTAR SUAS DÚVIDAS, USEM A FERRAMENTA DE BUSCA!!![/b:954c3dd6e5] :wink:


Responder

Gostei + 0

15/06/2005

Marco Salles

amigo tente isso... isso faz com que ele fique sempre por cima das aplicações!!! SetWindowPos(Handle,Hwnd_TopMost,0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOACTIVATE) .... dica dada por Massuda, um usuário do forum... ANTES DE POSTAR SUAS DÚVIDAS, USEM A FERRAMENTA DE BUSCA!!!



Colocar o Form sempre a frente , trazer o Form para frente , fazer ele Piscar isto tudo ja foi amplamente debatido por esta comunidade.. Mas gostaria de fazer mais.. Gostaria de alem de trazer este form para frente e que ele recebesse o foco..

eu ja conhecia esta instrução amigo..Com eu mesmo disse no início.Não so ela mas outras similares


Responder

Gostei + 0

15/06/2005

Paullsoftware

intão Massuda, comigo sempre funcionou assim:::
mudo a propiedade do componente TTimer para 1 e coloco dentro dele o codigo abaixo:

SetWindowPos(Form_TelaDeLogin.Handle,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE);
if ( TelaDeLogin = True ) then //Variavel que recebe a tela de login do micro
if Not ( Application.Active ) then
begin
Application.ProcessMessages;
Application.Restore;
SetWindowPos(Form_TelaDeLogin.handle, HWND_TOPMOST, Form_TelaDeLogin.Left, Form_TelaDeLogin.Top,Form_TelaDeLogin.Width, Form_TelaDeLogin.Height, 0);
SetForegroundWindow(Application.Handle);
Application.BringToFront;
Form_TelaDeLogin.Focused;
end else
if IsIconic(Application.Handle) then
begin
Application.ProcessMessages;
Application.Restore;
SetWindowPos(Form_TelaDeLogin.handle, HWND_TOPMOST, Form_TelaDeLogin.Left, Form_TelaDeLogin.Top,Form_TelaDeLogin.Width, Form_TelaDeLogin.Height, 0);SetForegroundWindow(Application.Handle);
Application.BringToFront;
Form_TelaDeLogin.Focused;
end;
EditID.SetFocus;


usando as funções que vc mesmo já disse que conhece, apenas chamei o foco para o meu componente e digito a senha...


Obs.: [b:b1465a9e81]a tela de login que uso, fica em todo desktop...[/b:b1465a9e81]

se conseguir outra forma mais agradável, me passa... eu sempre uso assim :?


Responder

Gostei + 0

15/06/2005

Marco Salles

intão Massuda, comigo sempre funcionou assim::: mudo a propiedade do componente TTimer para 1 e coloco dentro dele o codigo abaixo: Código: SetWindowPos(Form_TelaDeLogin.Handle,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE); if ( TelaDeLogin = True ) then //Variavel que recebe a tela de login do micro if Not ( Application.Active ) then begin Application.ProcessMessages; Application.Restore; SetWindowPos(Form_TelaDeLogin.handle, HWND_TOPMOST, Form_TelaDeLogin.Left, Form_TelaDeLogin.Top,Form_TelaDeLogin.Width, Form_TelaDeLogin.Height, 0); SetForegroundWindow(Application.Handle); Application.BringToFront; Form_TelaDeLogin.Focused; end else if IsIconic(Application.Handle) then begin Application.ProcessMessages; Application.Restore; SetWindowPos(Form_TelaDeLogin.handle, HWND_TOPMOST, Form_TelaDeLogin.Left, Form_TelaDeLogin.Top,Form_TelaDeLogin.Width, Form_TelaDeLogin.Height, 0);SetForegroundWindow(Application.Handle); Application.BringToFront; Form_TelaDeLogin.Focused; end; EditID.SetFocus; usando as funções que vc mesmo já disse que conhece, apenas chamei o foco para o meu componente e digito a senha... Obs.: a tela de login que uso, fica em todo desktop... se conseguir outra forma mais agradável, me passa... eu sempre uso assim


:?: :?: :?: :?: :?: :?:


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar