Fórum Form sem receber focus #367713

15/01/2009

0

Bom dia pessoal, eu tenho uma aplicação que envia caracteres para outras aplicações por meio de mensagens.

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

Wdrocha

Responder

Posts

15/01/2009

Micheus

Essas aplicações ficam sempre a frente das outras aplicações, mas qdo vc clica nelas, as mesma nunca ganham focus...

[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]


Responder

Gostei + 0

15/01/2009

Wdrocha

Boa tarde Micheus....

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


Responder

Gostei + 0

16/01/2009

Woinch

Olá WDRocha, poderia postar o código para que os outros usuários possam ver também como funciona?

Achei muito interessante seu tópico.

Abraços.


Responder

Gostei + 0

16/01/2009

Wdrocha

Olá WDRocha, poderia postar o código para que os outros usuários possam ver também como funciona? Achei muito interessante seu tópico. Abraços.


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


Responder

Gostei + 0

16/01/2009

Woinch

Fiz um teste aqui... Muito legal. Isso pode ser muito útil para diversas coisas.

Obrigado pela dica.


Responder

Gostei + 0

16/01/2009

Wdrocha

Blz...qdo vc tiver uma idéia legal...posta aew tbm... :-)

abraços...


Responder

Gostei + 0

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

Aceitar