Saber qual Browse está em foco
Moderador: Moderadores
Saber qual Browse está em foco
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
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
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Saber qual Browse está em foco
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
Itamar M. Lins Jr.
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()
http://www.kresin.ru/en/hwgdoc_function ... Functions5
Saudações,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).
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
Saber qual Browse está em foco
[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
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
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Saber qual Browse está em foco
Ola!
Vai entender ??
Saudações,
Itamar M. Lins Jr.
Versão: xHarbour 123 HWGui
E pq está perguntando no forum da Hwgui ?Deveria ser algo semelhante à função que vc citou hwg_GetFocus(), mas estou usando XHarbour com Minigui
Vai entender ??
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
Saber qual Browse está em foco
Desculpe-me. Como disse, SOU NOVATO.
Eu informei errado, o correto é HWGUI 2.17, e não Minigui
Obrigado.
Eu informei errado, o correto é HWGUI 2.17, e não Minigui
Obrigado.
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Saber qual Browse está em foco
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 ) }
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
xHarbour.org + Hwgui + PostgreSql
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Saber qual Browse está em foco
Ola!
Coloca a solução para nós, se for possível.
Saudações,
Itamar M. Lins Jr.
Coloca a solução para nós, se for possível.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Saber qual Browse está em foco
Na prática estou pensando em outra coisa:
Como o USUÁRIO sabe em qual browse está em foco?
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/
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/
Saber qual Browse está em foco
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.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Saber qual Browse está em foco
Ola!
Vendo código fica mais fácil de entender.
Economia de 2 linhas WHEN {||_BFocus := 'oBro...'}
Saudações,
Itamar M. Lins Jr.
Código: Selecionar todos
if oBrowseFabr:handle == hwg_GetFocus()
...
elseif oBrowseSecao:handle == hwg_GetFocus()
...
Economia de 2 linhas WHEN {||_BFocus := 'oBro...'}
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Saber qual Browse está em foco
Ola!
Uso para fazer help de get, etc...
Saudações,
Itamar M. Lins Jr
Uso para fazer help de get, etc...
Saudações,
Itamar M. Lins Jr
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
Saber qual Browse está em foco
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.
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.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Saber qual Browse está em foco
Ola!
Essa função deve ser apenas GetFocus() ou SelfFocus() na 2.17 sem o prefixo hwg_
Saudações,
Itamar M. Lins Jr.
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()
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
Saber qual Browse está em foco
Isso mesmo, Itamar. O nome dela é GetFocus()
Já substitui o fonte... ficou bem mais profissional agora rs... valewwwww!
Já substitui o fonte... ficou bem mais profissional agora rs... valewwwww!
