Muda o foco entre janelas XH+GTWVW ??

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Cezar
Usuário Nível 3
Usuário Nível 3
Mensagens: 189
Registrado em: 27 Mai 2006 14:03

Muda o foco entre janelas XH+GTWVW ??

Mensagem por Cezar »

Bom dia,

Tenho a seguinte dúvida:

1. Janela principal com os menus. Seleciona menu cadastro de usuários.

2. Abre uma janela com browse dos usuarios ja cadastrado e 2 botoes para Incluir / Excluir.

3. selecionada uma das opçoes abre-se uma terceira janela para Inlcuir ou alterar os dados.

Se clico na area visivel da segunda o foco fica na segunda, se clico na area da primeira o foco fica na primeira, etc..

O foco que agora esta na primeira eu só consigo voltar para terceira com o Mouse !!

Como mudar o foco sem usar o mouse ( usando talvez uma combinação de tecla Sifth+Tab por ex. ), ou impedir a perda do foco da terceira que estou editando??

Compliquei??

Grato pela orientação.
cez_a@ubi.com.br
Luiz
Usuário Nível 2
Usuário Nível 2
Mensagens: 61
Registrado em: 05 Set 2006 07:30
Localização: Vila Velha - ES

Mensagem por Luiz »

Se eu entendi você quer que o foco se mantenha na terceira janela (a mais recente), e caso o usuário clique numa janela atraz, o foco volte automaticamente para a janela atual?

Veja esse exemplo:

Código: Selecionar todos

procedure main
private nWin1,nWin2
  nWin1:=wvw_nOpenWindow('janela1',05,05,10,30)
    nWin2:=wvw_nOpenWindow('janela2',10,10,15,35)  
       wvw_settimer(nWin2,100)      
       inkey(0)
    wvw_lCloseWindow()
    wvw_settimer(nWin1,100)
    inkey(0)
  wvw_lCloseWindow()
  inkey(0)
return

function wvw_timer()
local nWnd:=wvw_GetWindowHandle(WVW_nSetCurWindow())
  Win_SetFocus(nWnd)
  @ 0,0 say 'Janela Atual - '+Time()
return nil
Nesse exemplo utilizei o timer da janela para manter o foco, ao fechar a janela, é ligado o timer da janela anterior.
"Ninguém se engane a si mesmo; se alguém dentre vós se tem por sábio neste mundo, faça-se louco para se tornar sábio." (I Coríntios 3:18)
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
xHarbour | Gtwvw | HwGui | DBF+CDX | mySQL | Genesis IDE
Cezar
Usuário Nível 3
Usuário Nível 3
Mensagens: 189
Registrado em: 27 Mai 2006 14:03

Mensagem por Cezar »

Bom dia, Luiz!

Sua sugestão funcionou??


Grato.
Luiz
Usuário Nível 2
Usuário Nível 2
Mensagens: 61
Registrado em: 05 Set 2006 07:30
Localização: Vila Velha - ES

Mensagem por Luiz »

O exemplo funciona beleza, porem encontrei uma forma melhor e que usa o recurso de foco da própria gtwvw.

Basta adicionar essa função no programa:

Código: Selecionar todos

FUNCTION WVW_SetFocus( hWnd, nWinNum )
local nHnd:=wvw_getwindowhandle(wvw_nsetcurwindow())
   if nWinNum==0
      return NIL
   endif
   win_setfocus(nHnd)
RETURN nil
A função wvw_setfocus é chamada automaticamente pelo gtwvw quando o foco de uma janela muda.
"Ninguém se engane a si mesmo; se alguém dentre vós se tem por sábio neste mundo, faça-se louco para se tornar sábio." (I Coríntios 3:18)
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
xHarbour | Gtwvw | HwGui | DBF+CDX | mySQL | Genesis IDE
Cezar
Usuário Nível 3
Usuário Nível 3
Mensagens: 189
Registrado em: 27 Mai 2006 14:03

Mensagem por Cezar »

Bom dia Luiz,

Muito inteligente essa sua nova solução!

Me ocorreu agora; que, talvez, sua solução também poderia ser usada para interceptar o fechamento da janela prinicipal "X" ??
Pelas coordenadas do mouse ??

Muito grato, tem nos ajudado muito.

cez_a@ubbi.com.br
Cezar
Usuário Nível 3
Usuário Nível 3
Mensagens: 189
Registrado em: 27 Mai 2006 14:03

Mensagem por Cezar »

Boa tarde,


Testei a sua ideia do wvw_setfocus( ), e o resultado é que fica em loop!

cez_a@ubbi.com.br
Luiz
Usuário Nível 2
Usuário Nível 2
Mensagens: 61
Registrado em: 05 Set 2006 07:30
Localização: Vila Velha - ES

Mensagem por Luiz »

Os 2 exemplos são distintos, sendo que o segundo (wvw_setfocus) é nativo do próprio gtwvw, aqui funcionou blz evitando que a janela perca o foco.
"Ninguém se engane a si mesmo; se alguém dentre vós se tem por sábio neste mundo, faça-se louco para se tornar sábio." (I Coríntios 3:18)
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
xHarbour | Gtwvw | HwGui | DBF+CDX | mySQL | Genesis IDE
Responder