Fórum Form sem receber focus #367713
15/01/2009
0
Está tudo perfeito....mas tem uma coisa q eu quero fazer e não consigo...
Qdo eu clico no botão da minha aplicação para enviar um caracter, o meu form ganha focus e qdo ele envia o caracter a outra aplicação tbm ganha focus...e então fica essa troca d focus....o meu form está como fsStayOnTop....eu vi algumas aplicações q não tem esse problema...
Essas aplicações ficam sempre a frente das outras aplicações, mas qdo vc clica nelas, as mesma nunca ganham focus...
alguém sabe como eu posso fazer isso???
Estou usando o Delphi7
Mt obrigado a todos
Wdrocha
Curtir tópico
+ 0Posts
15/01/2009
Micheus
[b:236bd8c2f1]WDRocha[/b:236bd8c2f1], não lembro de ter visto algo assim (a aplicação ficar ativa sem ganhar o foco). Agora uma coisa que sei acontece, seria tendo sua aplicação uma tela principal e uma outra tela (esta tipo um teclado virtual - stay on top) se clicar em outra aplicação, a sua janela (stay on top) fica emcoberta, ou seja, ela fica apenas sobre todas as janelas da sua aplicação.
Então, em um caso destes, supondo que esta janela devesse ficar sobre todas as outras aplicações também, este efeito poderia ser obtido definindo como [i:236bd8c2f1]Parent[/i:236bd8c2f1] deste form o [i:236bd8c2f1]DeskTop[/i:236bd8c2f1]. Isto é feito usando a função da API SetParent (unit windows) e passando o handle do desktop que é obtido por outra função da API chamada [i:236bd8c2f1]GetDesktopWindow[/i:236bd8c2f1].
Tenho um exemplo disto neste link: [URL=http://www.4shared.com/file/80795590/72dd4299/Form_no_topo_de_todas_as_aplicacoes.html]Form no topo de todas as aplicacoes.zip[/URL]
Gostei + 0
15/01/2009
Wdrocha
eu consegui fazer....
passei um email para o Nildo e ele me deu uma dica...ele me falow sobre a função CreateParams...
eu procurei um pouco e encontrei....
consegui...
é para ficar como o teclado virtual do Windows...se vc prestar atenção qdo vc clica em algum botão do mesmo...o focus do teclado continua na janela ativa....e o focus nunca vai para o teclado....
mt obrigado cara.....
fico grato pela ajuda....
vlw
Gostei + 0
16/01/2009
Woinch
Achei muito interessante seu tópico.
Abraços.
Gostei + 0
16/01/2009
Wdrocha
Claro q sim....com esta função e com a função KEYBD_EVENT é possível fazer um teclado virtual...
type
TForm1 = class(TForm)
private
{ Private declarations }
protected
procedure CreateParams(var Params: TCreateParams); override;
public
{ Public declarations }
end;
procedure TForm1.CreateParams(var Params: TCreateParams);
const
WS_EX_NOACTIVATE = $8000000;
begin
inherited;
Params.ExStyle := Params.ExStyle + WS_EX_NOACTIVATE;
end;
Espero ter ajudado e ter contribuído para o conhecimento dos colegas..
qualquer coisa...eu dou um exemplo d como fazer isso..
flw..
Gostei + 0
16/01/2009
Woinch
Obrigado pela dica.
Gostei + 0
16/01/2009
Wdrocha
abraços...
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)