Página 1 de 1
Saber qual Browse está em foco
Enviado: 30 Jun 2020 16:58
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
Saber qual Browse está em foco
Enviado: 30 Jun 2020 22:25
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á.
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.
Saber qual Browse está em foco
Enviado: 01 Jul 2020 08:56
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
Saber qual Browse está em foco
Enviado: 01 Jul 2020 09:41
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.
Saber qual Browse está em foco
Enviado: 01 Jul 2020 10:28
por Adson
Desculpe-me. Como disse, SOU NOVATO.
Eu informei errado, o correto é HWGUI 2.17, e não Minigui
Obrigado.
Saber qual Browse está em foco
Enviado: 01 Jul 2020 10:41
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 ) }
Saber qual Browse está em foco
Enviado: 01 Jul 2020 13:02
por Adson
Obrigado a todos pelas respostas.
Problema resolvido !!!
Saber qual Browse está em foco
Enviado: 01 Jul 2020 13:10
por Itamar M. Lins Jr.
Ola!
Coloca a solução para nós, se for possível.
Saudações,
Itamar M. Lins Jr.
Saber qual Browse está em foco
Enviado: 01 Jul 2020 16:14
por JoséQuintas
Na prática estou pensando em outra coisa:
Como o USUÁRIO sabe em qual browse está em foco?
Saber qual Browse está em foco
Enviado: 02 Jul 2020 13:31
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.
Saber qual Browse está em foco
Enviado: 02 Jul 2020 16:34
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.
Saber qual Browse está em foco
Enviado: 02 Jul 2020 16:57
por Itamar M. Lins Jr.
Ola!
Uso para fazer help de get, etc...
Saudações,
Itamar M. Lins Jr
Saber qual Browse está em foco
Enviado: 02 Jul 2020 18:03
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.
Saber qual Browse está em foco
Enviado: 02 Jul 2020 18:23
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.
Saber qual Browse está em foco
Enviado: 03 Jul 2020 15:50
por Adson
Isso mesmo, Itamar. O nome dela é GetFocus()
Já substitui o fonte... ficou bem mais profissional agora rs... valewwwww!