RETORNAR FOCO AO TEXTBOX MESMO EM TELA WVG

General Help regarding HMG, Compilation, Linking, Samples

Moderator: Rathinagiri

MICROVOLUTION
Posts: 146
Joined: Sat May 30, 2015 5:15 am

RETORNAR FOCO AO TEXTBOX MESMO EM TELA WVG

Post by MICROVOLUTION »

Boa tarde nobres!

No meu caso, estou usando um misto de WVG + HMG 3.5.

Pra início de conversa, sempre ficam 2 telas (a console do harbour/wvg e a com o formulário main).

Então, quando abro o formulário WINDOW sempre tem a tela preta do harbour/WVG...

Estou implementando testes ainda...

exemplo:
Quando clico numa opção e abro um formulário em modo GUI (100% LABEL e TEXTBOX da HMG 3.5), aí, quando pressiono a tecla de consulta (no meu caso F4), abro um TBROWSE que ainda está no formato WVG usando ou WVGCRT ou WVGDIALOG (não vi diferença alguma entre eles - na prática)...

quando terminar a consulta, quero que o foco volte para o TEXTBOX do FORM que o chamou (um tipo de SETFOCUS).no meu caso, estou usando um misto de WVG + HMG.
Então, quando abro o formulário WINDOW sempre tem a tela preta do harbour/WVG...
Estou implementando testes ainda...
exemplo:
abro um formulário em modo GUI (100% LABEL e TEXTBOX da HMG 3.5), aí, quando pressiono a tecla de consulta (no meu caso F4), abro um TBROWSE no formato WVG usando ou WVGCRT ou WVGDIALOG (não vi diferença alguma entre eles - na prática)...

quando terminar a consulta, quero que o foco volte para o TEXTBOX do FORM que o chamou.

O detalhe, é que esse TBROWSE é genérico e serve pra todos os antigos campos @GET...

Então, alguns dos nobres professores sabem como retornar o foco para o FORM/WINDOW da HMG sem precisar clicar com o mouse ou uso das tecla ALT+TAB?
como disse, o foco tem que retornar para o TEXTBOX correto que chamou a WVGCRT() ou WVGDIALOG() (tanto faz kkk)
O detalhe, é que esse TBROWSE é genérico/padrão e serve pra todos os antigos campos @GET...

Então, alguns dos nobres professores sabem como retornar o foco para o FORM/WINDOW da HMG sem precisar clicar com o mouse ou uso das tecla ALT+TAB?

Como disse, o foco tem que retornar para o TEXTBOX correto que chamou a WVGCRT() ou WVGDIALOG() (tanto faz kkk)

Também, quero que o resultado da pesquisa do TBROWSE retorne o VALOR para o TEXTBOX um tipo assim...

estou tentando algo assim, mas, não deu certo:

Code: Select all

   
       &(FORM).&(PROP).VALUE :=&VARIAVEL // acrescentado em 28/12/20w pra retornar o foco para o form window (HMG).
       &FORM.&PROP.SETFOCUS // acrescentado em 28/12/20w pra retornar o foco para o form window (HMG).
	oCrt:Destroy()
	WvtSetPaint( aPnt )
    // hb_gtSelect( oGt ) // acrescentado 5/3/18w
	hb_gtselect(oHB_GT)  // não funcionou 4/3/18w
A chamada ao TBROWSE é feita assim:

Code: Select all

CRIABROWSE_WVG_DIALOG (VARIAVEL,'VENDA',NOME_ARQUIVO,CABEC_CAMPOS,TAM_MEMO,MASCARAS,"F_VENDA",THIS)
// esses 2 últimos argumentos é que acrescentei pra tentar passar o NOME DO FORM e também o OBJETO/textbox em questão

Já a função recebe os parâmetros assim:

Code: Select all

function CRIABROWSE_WVG_DIALOG (VARIAVEL,NOME_PROGRAMA,NOME_ARQUIVO,CAB_CAMPOS,TAM_CAMPOS,MASC_CAMPOS,FORM,PROP) // acrescentado FORM,PROP pra receber o textbox e retornar o foco pra ele. 28/12/20w
Enfim, do jeito que está aí, não passa nem na primeira fase - compilação de dentro da IDE/HMG3.5, pois apresenta o erro:
.prg(15132) Error E0030 Syntax error "syntax error at '.'"
.prg(15133) Error E0042 Macro of declared symbol '&FORM.&PROP.SETFOCUS'
Ou seja, observem que tentei compilar de 2 formas (com & fora e dentro do parêntesis) e não passa na compilação e gera os erros:
E0030 e E0042.
Como resolvo?
alguém sabe?
MICROVOLUTION
Posts: 146
Joined: Sat May 30, 2015 5:15 am

Re: RETORNAR FOCO AO TEXTBOX MESMO EM TELA WVG

Post by MICROVOLUTION »

MICROVOLUTION wrote: Mon Dec 28, 2020 6:31 pm Como resolvo?
lembrei-me das funções SETPROPERTY() e GETPROPERTY()... passei por referência e inclusive os dados foram preenchidos.
Mas, o SETFOCUS não voltou para o FORM, ficou a tela MSDOS/HARBOUR/GTWVG aberta em primeiro plano. tive que clicar com o mouse ou usar o ALT+TAB para ir para o form WINDOW.

vejam o código substituído:

Code: Select all

   setproperty(FORM, OBJ, "value", &VARIAVEL)
   setproperty(FORM, OBJ, "SETFOCUS")
   
	oCrt:Destroy()
	WvtSetPaint( aPnt )
    // hb_gtSelect( oGt ) // acrescentado quintas 5/3/18w
	hb_gtselect(oHB_GT)  // não funcionou 4/3/18w
Não voltou o foco para o formulário e nem muito menos o DESTROY funcionou.
OBS.:
1) Se eu colocar o DESTROY() da GTWVG primeiro, o formulário não abre.
2) Se eu colocar o DESTROY() após o SETPROPERTY(), a tela DOS/HARBOUR/WVG não fecha e fica com as Últimas informações nela e não limpa, mas, os dados são enviados para o FORMULÁRIO WINDOW.

O bom mesmo, é se conseguíssemos eliminar de vez a tela preta (dos/harbour) que fica o tempo todo.
Chamá-la só quando fosse executar uma tela DOS/HARBOUR/WVG e quando terminasse ela fosse fechada sem fechar o FORM MAIN.

Alguém tem alguma sugestão?
franco
Posts: 877
Joined: Sat Nov 02, 2013 5:42 am
DBs Used: DBF
Location: Canada

Re: RETORNAR FOCO AO TEXTBOX MESMO EM TELA WVG

Post by franco »

What are you using the tbrowse for Data entry or lookups in tables .
All The Best,
Franco
Canada
MICROVOLUTION
Posts: 146
Joined: Sat May 30, 2015 5:15 am

Re: RETORNAR FOCO AO TEXTBOX MESMO EM TELA WVG

Post by MICROVOLUTION »

franco wrote: Tue Dec 29, 2020 12:36 am What are you using the tbrowse for Data entry or lookups in tables .
sua pergunta foi muito vaga. Meus TBROWSEs uso apenas para consultas...

por favor, seja mais específico.
franco
Posts: 877
Joined: Sat Nov 02, 2013 5:42 am
DBs Used: DBF
Location: Canada

Re: RETORNAR FOCO AO TEXTBOX MESMO EM TELA WVG

Post by franco »

What are consultations, what are you browsing
All The Best,
Franco
Canada
MICROVOLUTION
Posts: 146
Joined: Sat May 30, 2015 5:15 am

Re: RETORNAR FOCO AO TEXTBOX MESMO EM TELA WVG

Post by MICROVOLUTION »

franco wrote: Tue Dec 29, 2020 1:29 am What are consultations, what are you browsing
Exemplo:
tenho uma venda pra fazer no módulo de vendas.
vem o campo/get do número da venda, pressiono <enter>
o próximo campo/get é o do cliente...
aí que vem o TBROWSE... pressione a tecla F4 (pode ser a que você quiser) em cima do campo/get CÓDIGO DO CLIENTE...
em seguida é aberto a TELA DE CONSULTA que é o TBROWSE com todos os clientes...
posso ordenar por: CÓDIGO, NOME, CPF, etc...
Depois que a CONSULTA estiver satisfeita, pressiona-se ENTER e o código é transferido para o CAMPO/GET que está aberto aguardando a digitação.

É isso. só isso.
franco
Posts: 877
Joined: Sat Nov 02, 2013 5:42 am
DBs Used: DBF
Location: Canada

Re: RETORNAR FOCO AO TEXTBOX MESMO EM TELA WVG

Post by franco »

You can do all of this very simply in hmg it self with out going to dos program.
I have created a browse in my pos that I use for 90 percent of my look ups.
This is called brs10.prg and I send parameters to it depending on what I want to browse. I can send from 1 to 10 fields.
This would be so much easier then using the dos screen. It would all be in one program.
I could explain further how I do this if you need help to keep it all in hmg.
All The Best,
Franco
Canada
MICROVOLUTION
Posts: 146
Joined: Sat May 30, 2015 5:15 am

Re: RETORNAR FOCO AO TEXTBOX MESMO EM TELA WVG

Post by MICROVOLUTION »

franco wrote: Tue Dec 29, 2020 5:51 am I could explain further how I do this if you need help to keep it all in hmg.
Apesar que não é o foco do TÓPICO, mas, achei interessante...
vou lhe mandar uma tela do meu browse... já o código é muito extenso... e não acho por hora, necessário.
TELA ANTES DA CONSULTA (somente WINDOW HMG):
20-1229 - tela HMG GUI BAIXAR 01.png
20-1229 - tela HMG GUI BAIXAR 01.png (15.17 KiB) Viewed 2239 times
TELA TBROWSE ACIONADA PARA CONSULTAR (FEITA EM HARBOUR/WVG):
20-1229 - tela HMG GUI BAIXAR 02.png
20-1229 - tela HMG GUI BAIXAR 02.png (18.35 KiB) Viewed 2239 times
MICROVOLUTION
Posts: 146
Joined: Sat May 30, 2015 5:15 am

Re: RETORNAR FOCO AO TEXTBOX MESMO EM TELA WVG

Post by MICROVOLUTION »

franco wrote: Tue Dec 29, 2020 5:51 amThis is called brs10.prg and I send parameters to it depending on what I want to browse.
Por favor, pode nos enviar e contribuir com todos nós os membros do fórum?
grato!
edk
Posts: 998
Joined: Thu Oct 16, 2014 11:35 am
Location: Poland

Re: RETORNAR FOCO AO TEXTBOX MESMO EM TELA WVG

Post by edk »

I haven't been on the forum for a long time, I hope everyone is fine 😷.
MICROVOLUTION wrote: Mon Dec 28, 2020 6:31 pm Boa tarde nobres!

No meu caso, estou usando um misto de WVG + HMG 3.5.

Pra início de conversa, sempre ficam 2 telas (a console do harbour/wvg e a com o formulário main).

Então, quando abro o formulário WINDOW sempre tem a tela preta do harbour/WVG...

Estou implementando testes ainda...

exemplo:
Quando clico numa opção e abro um formulário em modo GUI (100% LABEL e TEXTBOX da HMG 3.5), aí, quando pressiono a tecla de consulta (no meu caso F4), abro um TBROWSE que ainda está no formato WVG usando ou WVGCRT ou WVGDIALOG (não vi diferença alguma entre eles - na prática)...

quando terminar a consulta, quero que o foco volte para o TEXTBOX do FORM que o chamou (um tipo de SETFOCUS).no meu caso, estou usando um misto de WVG + HMG.
Então, quando abro o formulário WINDOW sempre tem a tela preta do harbour/WVG...
Estou implementando testes ainda...
exemplo:
abro um formulário em modo GUI (100% LABEL e TEXTBOX da HMG 3.5), aí, quando pressiono a tecla de consulta (no meu caso F4), abro um TBROWSE no formato WVG usando ou WVGCRT ou WVGDIALOG (não vi diferença alguma entre eles - na prática)...

quando terminar a consulta, quero que o foco volte para o TEXTBOX do FORM que o chamou.

O detalhe, é que esse TBROWSE é genérico e serve pra todos os antigos campos @GET...

Então, alguns dos nobres professores sabem como retornar o foco para o FORM/WINDOW da HMG sem precisar clicar com o mouse ou uso das tecla ALT+TAB?
como disse, o foco tem que retornar para o TEXTBOX correto que chamou a WVGCRT() ou WVGDIALOG() (tanto faz kkk)
O detalhe, é que esse TBROWSE é genérico/padrão e serve pra todos os antigos campos @GET...

Então, alguns dos nobres professores sabem como retornar o foco para o FORM/WINDOW da HMG sem precisar clicar com o mouse ou uso das tecla ALT+TAB?

Como disse, o foco tem que retornar para o TEXTBOX correto que chamou a WVGCRT() ou WVGDIALOG() (tanto faz kkk)

Também, quero que o resultado da pesquisa do TBROWSE retorne o VALOR para o TEXTBOX um tipo assim...

estou tentando algo assim, mas, não deu certo:

Code: Select all

   
       &(FORM).&(PROP).VALUE :=&VARIAVEL // acrescentado em 28/12/20w pra retornar o foco para o form window (HMG).
       &FORM.&PROP.SETFOCUS // acrescentado em 28/12/20w pra retornar o foco para o form window (HMG).
	oCrt:Destroy()
	WvtSetPaint( aPnt )
    // hb_gtSelect( oGt ) // acrescentado 5/3/18w
	hb_gtselect(oHB_GT)  // não funcionou 4/3/18w
A chamada ao TBROWSE é feita assim:

Code: Select all

CRIABROWSE_WVG_DIALOG (VARIAVEL,'VENDA',NOME_ARQUIVO,CABEC_CAMPOS,TAM_MEMO,MASCARAS,"F_VENDA",THIS)
// esses 2 últimos argumentos é que acrescentei pra tentar passar o NOME DO FORM e também o OBJETO/textbox em questão

Já a função recebe os parâmetros assim:

Code: Select all

function CRIABROWSE_WVG_DIALOG (VARIAVEL,NOME_PROGRAMA,NOME_ARQUIVO,CAB_CAMPOS,TAM_CAMPOS,MASC_CAMPOS,FORM,PROP) // acrescentado FORM,PROP pra receber o textbox e retornar o foco pra ele. 28/12/20w
Enfim, do jeito que está aí, não passa nem na primeira fase - compilação de dentro da IDE/HMG3.5, pois apresenta o erro:
.prg(15132) Error E0030 Syntax error "syntax error at '.'"
.prg(15133) Error E0042 Macro of declared symbol '&FORM.&PROP.SETFOCUS'
Ou seja, observem que tentei compilar de 2 formas (com & fora e dentro do parêntesis) e não passa na compilação e gera os erros:
E0030 e E0042.
Como resolvo?
alguém sabe?
Tradução usando Google ;)

Eu acho que você precisa trazer o formulário de volta para o topo da área de trabalho.

Em vez destes comandos:

Code: Select all

	&(FORM).&(PROP).VALUE :=&VARIAVEL // acrescentado em 28/12/20w pra retornar o foco para o form window (HMG).
	&FORM.&PROP.SETFOCUS // acrescentado em 28/12/20w pra retornar o foco para o form window (HMG).
experimente esta função:

Code: Select all

SetProperty ( FORM, PROP, 'VALUE', VARIAVEL )
DoMethod ( FORM, PROP, 'SetFocus' )
BringWindowBackToTop ( FORM )
Como parâmetro desta função, insira o nome do formulário para o qual deseja retornar.

Code: Select all

Function BringWindowBackToTop ( cFormName )
Local hWnd := GetFormHandle( cFormName )
IF hWnd <> 0
	SetForeGroundWindow( hWnd )
	BringWindowToTop( hWnd )
ENDIF
Return Nil
Post Reply