Saber qual Browse está em foco

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
Adson
Usuário Nível 1
Usuário Nível 1
Mensagens: 33
Registrado em: 05 Mar 2019 10:36
Localização: GOIANIA/GO

Saber qual Browse está em foco

Mensagem por Adson »

Olá, galera!
Sou novato no xHarbour e tenho uma dúvida: Tenho 2 browse's na tela e em determinado momento, preciso saber qual deles está em foco. Como identificar isso?

Versão: xHarbour 123 HWGui
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Saber qual Browse está em foco

Mensagem por Itamar M. Lins Jr. »

Ola!
Depende, pra quê saber o foco entre um objeto e outro no windows ?
Melhor pegar ou aplicar o foco do que perguntar onde está.

Código: Selecionar todos

oBrwMaster:SetFocus()
oBrwSlave:Setfocus()
Geralmente tem um cursor, ou cor diferente.
http://www.kresin.ru/en/hwgdoc_function ... Functions5
hwg_SetFocus( handle )
Sets the keyboard focus to the specified GUI element (window or control).
handle - handle of a GUI element;
Return value - handle to the GUI element that previously had the keyboard focus.

hwg_GetFocus()
Retrieves the handle to the GUI element (window or control) that has the keyboard focus.
Return value - handle to the GUI element that has the keyboard focus.

hwg_GetSkip( oParent, hCtrl, nSkip )
Sets the input focus to other GET item.
oParent - an object of a parent window;
hCtrl - a handle of a control;
nSkip - a number of GET items to skip (positive or negative).
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Adson
Usuário Nível 1
Usuário Nível 1
Mensagens: 33
Registrado em: 05 Mar 2019 10:36
Localização: GOIANIA/GO

Saber qual Browse está em foco

Mensagem por Adson »

[img]c:\temp\2browses.JPG[/img]
Em ambos os browses o usuário pode teclar F2 para marcar/desmarcar todos os registros. Por isso, na rotina que faz o tratamento eu preciso saber qual é o browse em que o usuário está com o foco.
Deveria ser algo semelhante à função que vc citou hwg_GetFocus(), mas estou usando XHarbour com Minigui
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Saber qual Browse está em foco

Mensagem por Itamar M. Lins Jr. »

Ola!
Versão: xHarbour 123 HWGui
Deveria ser algo semelhante à função que vc citou hwg_GetFocus(), mas estou usando XHarbour com Minigui
E pq está perguntando no forum da Hwgui ?
Vai entender ??

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Adson
Usuário Nível 1
Usuário Nível 1
Mensagens: 33
Registrado em: 05 Mar 2019 10:36
Localização: GOIANIA/GO

Saber qual Browse está em foco

Mensagem por Adson »

Desculpe-me. Como disse, SOU NOVATO.
Eu informei errado, o correto é HWGUI 2.17, e não Minigui

Obrigado.
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Saber qual Browse está em foco

Mensagem por sygecom »

Adson,
Se você está usando o F2 na tela com oBr:bKeyDown e, ambas chamam a mesma rotina, você pode enviar por parâmetro o objeto do browse que está chamando, exemplo:

oBr1:bKeyDown := {|o,key| BROWSEKEY_ATIVO(o, key ) }
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Adson
Usuário Nível 1
Usuário Nível 1
Mensagens: 33
Registrado em: 05 Mar 2019 10:36
Localização: GOIANIA/GO

Saber qual Browse está em foco

Mensagem por Adson »

Obrigado a todos pelas respostas.
Problema resolvido !!!
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Saber qual Browse está em foco

Mensagem por Itamar M. Lins Jr. »

Ola!
Coloca a solução para nós, se for possível.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Saber qual Browse está em foco

Mensagem por JoséQuintas »

Na prática estou pensando em outra coisa:

Como o USUÁRIO sabe em qual browse está em foco?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Adson
Usuário Nível 1
Usuário Nível 1
Mensagens: 33
Registrado em: 05 Mar 2019 10:36
Localização: GOIANIA/GO

Saber qual Browse está em foco

Mensagem por Adson »

Essa foi a solução: Criei uma variável (_BFocus), e alimento-a na cláusula WHEN de cada browse. Dessa forma, na função que trata o F2, eu sei em qual dos 2 browses que o usuário está "mexendo". Não foi a solução mais "linda", mas funciona rs...

Código: Selecionar todos

...

SET KEY 0,VK_F2 TO {|| PontoPed_Seleciona()}

...

Browse 1:
    @ 37,32 BROWSE oBrowseFabr ARRAY SIZE 517,335 ;
         STYLE WS_TABSTOP       ;
         FONT HFont():Add( 'Arial Narrow',0,-13,400,,,);
         WHEN {||_BFocus := 'oBrowseFabr'}
   ...

Browse 2:
    @ 589,32 BROWSE oBrowseSecao ARRAY SIZE 271,335 ;
        STYLE WS_TABSTOP       ;
        FONT HFont():Add( 'Arial Narrow',0,-13,400,,,);
        WHEN {||_BFocus := 'oBrowseSecao'}
   ...

*
* Função que trata o F2
*
FUNCTION PontoPed_Seleciona()
  Local _vPos
  If _BFocus == 'oBrowseFabr'
    _vPos := oBrowseFabr
    For i := 1 To Len(_aFabr)
      _aFabr[i,3] := !_selFabr
    Next
    _selFabr    := !_selFabr
    oBrowseFabr := _vPos
    oBrowseFabr:Refresh()
  Else
    If _BFocus == 'oBrowseSecao'
      _vPos := oBrowseSecao
      For i := 1 To Len(_aSecao)
        _aSecao[i,3] := !_selSecao
      Next
      _selSecao    := !_selSecao
      oBrowseSecao := _vPos
      oBrowseSecao:Refresh()
    EndIf
  EndIf
  Return .T.   
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Saber qual Browse está em foco

Mensagem por Itamar M. Lins Jr. »

Ola!

Código: Selecionar todos

if oBrowseFabr:handle == hwg_GetFocus()
...
elseif oBrowseSecao:handle == hwg_GetFocus()
...
Vendo código fica mais fácil de entender.

Economia de 2 linhas WHEN {||_BFocus := 'oBro...'}

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Saber qual Browse está em foco

Mensagem por Itamar M. Lins Jr. »

Ola!
Uso para fazer help de get, etc...

Saudações,
Itamar M. Lins Jr
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Adson
Usuário Nível 1
Usuário Nível 1
Mensagens: 33
Registrado em: 05 Mar 2019 10:36
Localização: GOIANIA/GO

Saber qual Browse está em foco

Mensagem por Adson »

Então, Itamar. Quando vc sugeriu na sua primeira resposta ao tópico, sobre o uso da função hwg_GetFocus(), eu tentei;
mas deu erro quando fui compilar (Unresolved external _HB_FUN_HWG_GETFOCUS referenced from OBJ\...).
Acho que a versão do HWGui que estou usando (2.17), não tem essa implementação.

Pode ter certeza que quando eu atualizar aqui a versão do HWGui, eu vou colocar conforme a sua sugestão.

Obrigado.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Saber qual Browse está em foco

Mensagem por Itamar M. Lins Jr. »

Ola!
Essa função deve ser apenas GetFocus() ou SelfFocus() na 2.17 sem o prefixo hwg_

Código: Selecionar todos

  * source/window.c
    + HB_FUNC( SELFFOCUS )
     compares two handlers returning logical values. When only one parameter is passed, the comparison is made as GetFocus()
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Adson
Usuário Nível 1
Usuário Nível 1
Mensagens: 33
Registrado em: 05 Mar 2019 10:36
Localização: GOIANIA/GO

Saber qual Browse está em foco

Mensagem por Adson »

Isso mesmo, Itamar. O nome dela é GetFocus()

Já substitui o fonte... ficou bem mais profissional agora rs... valewwwww!
Responder