Clipper On Line • Ver Tópico - Saber qual Browse está em foco

Saber qual Browse está em foco

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

Saber qual Browse está em foco

Mensagempor Adson » 30 Jun 2020 16:58

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 de usuário

Adson
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 33
Data de registro: 05 Mar 2019 10:36
Cidade/Estado: GOIANIA/GO
Curtiu: 38 vezes
Mens.Curtidas: 4 vezes

Saber qual Browse está em foco

Mensagempor Itamar M. Lins Jr. » 30 Jun 2020 22:25

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

oBrwMaster:SetFocus()
oBrwSlave:Setfocus()

Geralmente tem um cursor, ou cor diferente.
http://www.kresin.ru/en/hwgdoc_functions.html#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.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Saber qual Browse está em foco

Mensagempor Adson » 01 Jul 2020 08:56

[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 de usuário

Adson
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 33
Data de registro: 05 Mar 2019 10:36
Cidade/Estado: GOIANIA/GO
Curtiu: 38 vezes
Mens.Curtidas: 4 vezes

Saber qual Browse está em foco

Mensagempor Itamar M. Lins Jr. » 01 Jul 2020 09:41

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.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Saber qual Browse está em foco

Mensagempor Adson » 01 Jul 2020 10:28

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

Obrigado.
Avatar de usuário

Adson
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 33
Data de registro: 05 Mar 2019 10:36
Cidade/Estado: GOIANIA/GO
Curtiu: 38 vezes
Mens.Curtidas: 4 vezes

Saber qual Browse está em foco

Mensagempor sygecom » 01 Jul 2020 10:41

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
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7006
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 130 vezes

Saber qual Browse está em foco

Mensagempor Adson » 01 Jul 2020 13:02

Obrigado a todos pelas respostas.
Problema resolvido !!!
Avatar de usuário

Adson
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 33
Data de registro: 05 Mar 2019 10:36
Cidade/Estado: GOIANIA/GO
Curtiu: 38 vezes
Mens.Curtidas: 4 vezes

Saber qual Browse está em foco

Mensagempor Itamar M. Lins Jr. » 01 Jul 2020 13:10

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

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Saber qual Browse está em foco

Mensagempor JoséQuintas » 01 Jul 2020 16:14

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18009
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Saber qual Browse está em foco

Mensagempor Adson » 02 Jul 2020 13:31

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

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 de usuário

Adson
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 33
Data de registro: 05 Mar 2019 10:36
Cidade/Estado: GOIANIA/GO
Curtiu: 38 vezes
Mens.Curtidas: 4 vezes

Saber qual Browse está em foco

Mensagempor Itamar M. Lins Jr. » 02 Jul 2020 16:34

Ola!
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.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Saber qual Browse está em foco

Mensagempor Itamar M. Lins Jr. » 02 Jul 2020 16:57

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

Saudações,
Itamar M. Lins Jr
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Saber qual Browse está em foco

Mensagempor Adson » 02 Jul 2020 18:03

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 de usuário

Adson
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 33
Data de registro: 05 Mar 2019 10:36
Cidade/Estado: GOIANIA/GO
Curtiu: 38 vezes
Mens.Curtidas: 4 vezes

Saber qual Browse está em foco

Mensagempor Itamar M. Lins Jr. » 02 Jul 2020 18:23

Ola!
Essa função deve ser apenas GetFocus() ou SelfFocus() na 2.17 sem o prefixo hwg_
  * 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.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Saber qual Browse está em foco

Mensagempor Adson » 03 Jul 2020 15:50

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

Já substitui o fonte... ficou bem mais profissional agora rs... valewwwww!
Avatar de usuário

Adson
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 33
Data de registro: 05 Mar 2019 10:36
Cidade/Estado: GOIANIA/GO
Curtiu: 38 vezes
Mens.Curtidas: 4 vezes




Retornar para HwGui

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 4 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro