Página 1 de 2

SET TIMER na HwGui 2.19 não funciona

Enviado: 13 Fev 2015 17:42
por sygecom
Itamar,
Estou o dia todo brigando com Harbour(SVN NOITE) + Hwgui SVN e, não estou conseguindo mandar mensagem para o grupo de desenvolvedores.

O SET TIMER na versão atual da Hwgui não está funcionando, da o erro abaixo:

Código: Selecionar todos

SET TIMER não está funcionando na versão da Hwgui atual, em anexo o exemplo e abaixo o erro.

Error HCUSTOMWINDOW/0  Invalid class member
Called from source\winapi\hcwindow.prg->HDIALOG:OTIME_MSG(225)
Called from syg_uteis.prg->(b)MY_MSGINFO(179)
Called from ext_controls\hctrlex.prg->HBUTTONEX:ONCLICK(401)
Called from ext_controls\hctrlex.prg->(b)HBUTTONX_NEW(312)
Called from source\winapi\hdialog.prg->ONDLGCOMMAND(335)
Called from source\winapi\hdialog.prg->(b)(_INITSTATICS00003)(0)
Called from source\winapi\hdialog.prg->HDIALOG:ONEVENT(182)
Called from ->HWG_DLGBOXINDIRECT(0)
Called from source\winapi\hdialog.prg->HDIALOG:ACTIVATE(135)
Called from syg_uteis.prg->MY_MSGINFO(183)
Called from syg_uteis.prg->MAIN(28)
A compilação da Hwgui do SVN com o Harbour mais atual também da erro no Activex, erro abaixo.

Código: Selecionar todos

hbmk2: Harbour: Compilando módulos...
hbmk2: Compilando...
../../../../contrib/activex/c_activex.c: In function 'HB_FUN_HWG_CREATEACTIVEX':

../../../../contrib/activex/c_activex.c:85:40: warning: signed and unsigned type
 in conditional expression [-Wsign-compare]
../../../../contrib/activex/c_activex.c:86:40: warning: signed and unsigned type
 in conditional expression [-Wsign-compare]
In file included from ../../../../contrib/activex/htmlcore.c:40:0:
../../../../contrib/activex/htmlcore.h:17:119: fatal error: mshtmhst.h: No such
file or directory
compilation terminated.
In file included from ../../../../contrib/activex/htmlfunc.c:16:0:
../../../../contrib/activex/htmlcore.h:17:119: fatal error: mshtmhst.h: No such
file or directory
compilation terminated.
hbmk2[hbactivex]: Erro: Executando compilador C/C++. 1
gcc.exe -c -O3 -march=i586 -mtune=pentiumpro -fomit-frame-pointer  -DHWG_USE_POI
NTER_ITEM -W -Wall -pipe -Id:/devel/harbour/include -I../../../../include ../../
../../lib/.hbmk/win/mingw/hhtml.c ../../../../lib/.hbmk/win/mingw/h_activex.c ..
/../../../contrib/activex/c_activex.c ../../../../contrib/activex/htmlcore.c ../
../../../contrib/activex/htmlfunc.c
Sabe como resolver esses erros, ou reportar isso na lista de desenvolvedores da Hwgui ?

Harbour Android + Hwgui

Enviado: 13 Fev 2015 17:58
por Itamar M. Lins Jr.
Ola!
O SET TIMER na versão atual da Hwgui não está funcionando, da o erro abaixo:
cadê a sintaxe de como está usando ?

Aqui compila sem problema nenhum, nem avisos aparecem.

Está usando o hbmk2 ? é MingW ou BCC ?

Saudações,
Itamar M. Lins Jr.

Harbour Android + Hwgui

Enviado: 13 Fev 2015 18:16
por sygecom
Em anexo o exemplo de teste.

Estou sim usando hbmk2, e estou usando Mingw que vem junto com a versão do Harbour SVN(noite)

Harbour Android + Hwgui

Enviado: 13 Fev 2015 18:54
por Itamar M. Lins Jr.
Realmente está com esse problema.
Eu não uso dessa forma.
Vou mandar seu exemplo p/ o Alexander.

Saudações,
Itamar M. Lins Jr.

Harbour Android + Hwgui

Enviado: 13 Fev 2015 19:02
por sygecom
No Harbour tem algo que faça parecido com esse SET TIMER para rodar a cada NNN segundos tal FUNCTION

Harbour Android + Hwgui

Enviado: 13 Fev 2015 19:10
por Itamar M. Lins Jr.
O problema não é no set timer da Hwgui.
O problema é que vc está usando STATIC e depois usa ThisForm:= oDlg, acredito que não está atribuindo corretamente a herança dos objetos.
Eu uso "set timer" da mesma forma que vc usa (sintaxe) só que uso uma variável PRIVATE.

Saudações,
Itamar M. Lins Jr.

Harbour Android + Hwgui

Enviado: 13 Fev 2015 19:21
por sygecom
Entendi,
O problema que não posso usar PRIVATE mesmo por que uso as flag abaixo. Para evitar erros de programação.

#pragma /w2
#pragma /es2

Harbour Android + Hwgui

Enviado: 13 Fev 2015 19:22
por sygecom
Outra coisa, a FUNCTION abaixo não funciona mais na HWGUI do SVN
SetDisableBackColor(.T.) // USA OS CAMPOS DESABILITADOS COM FUNDO BRANCO

Harbour Android + Hwgui

Enviado: 13 Fev 2015 20:22
por Itamar M. Lins Jr.
Ola!
Seu problema é com a herança mesmo.
Assim funciona:

Código: Selecionar todos

oTime_MSG:end()
, e assim não funciona:

Código: Selecionar todos

ThisForm:oTime_MSG:end()
Agora para ativar é preciso colocar no final do Dialog.

Código: Selecionar todos

ACTIVATE DIALOG oDlg On Activate {||fAtivarTimer(oDlg,cTempo)}

Código: Selecionar todos

ACTIVATE DIALOG oDlg On Activate {||fAtivarTimer(oDlg,cTempo)}

Return(.t.)

Function fAtivarTimer(oDlg,cTempo)
LOCAL oTime_MSG
SET TIMER oTime_MSG OF oDlg ID 9007 VALUE 1000 ACTION {|| ATUALIZA_TIMER(oDlg,oTime_MSG,cTempo) }
return .t.

*****************************************************
STATIC FUNCTION ATUALIZA_TIMER(oDlg,oTime_MSG,cTempo)
*****************************************************
nTempo++
IF nTempo=cTempo
   oTime_MSG:end()
   oDlg:Close()
ENDIF
//HWG_DOEVENTS()
oDlg:oButton1:SETTEXT("&OK-"+alltrim(str(cTempo-nTempo)) )
oDlg:oButton1:REFRESH()
RETURN(.T.)
Saudações,
Itamar M. Lins Jr.

Harbour Android + Hwgui

Enviado: 13 Fev 2015 20:49
por sygecom
Entendi, estou tentando migrar para SVN e Harbour, mas acho melhor aguardar as correções para seguir nos testes. Mesmo assim obrigado pelo feedback.

Harbour Android + Hwgui

Enviado: 17 Fev 2015 11:20
por Itamar M. Lins Jr.
Como havia dito!
HwGUI 2.19 doesn't support names for timers as for controls (
oDlg:oSay1 ... ).

In this sample you need to change calls of Thisform:oTime_MSG:

@ 150,40 BUTTONEX oButton1 Caption "&OK" ON CLICK {||(oTime_MSG:end()), ...

SET TIMER oTIME_MSG OF oDlg ID 9007 VALUE 1000 ACTION {||
ATUALIZA_TIMER(cTempo,oTime_MSG) }

...


STATIC FUNCTION ATUALIZA_TIMER(cTempo,oTimer)

nTempo++
IF nTempo=cTempo
oTimer:end()
...


This will work in both 2.17 and 2.19.


Regards, Alexander.
O erro é ai no seu CPU, porque no nosso funciona.
Leonardo Machado writes:
> Hi,
> Error compiling activex with HARBOUR SVN (night version) and HWGUI SVN
> ...
> In file included from ../../../../contrib/activex/htmlcore.c:40:0:
> ../../../../contrib/activex/htmlcore.h:17:119: fatal error: mshtmhst.h:
> No such
> file or directory
> compilation terminated.

It says that the header file mshtmhst.h is absent.
What Mingw version you use ? Check, if this file presents there. If no,
maybe, you can copy it from other Mingw distribution. It is on the palce
in my Mingw 4.8.2

Regards, Alexander.
Saudações,
Itamar M. Lins Jr.

Harbour Android + Hwgui

Enviado: 17 Fev 2015 12:44
por sygecom
Sobre o SET TIMER, antes funcionava, ou seja esse recurso foi tirado da Hwgui, mas tudo bem, vou continuar a usar a versão 2.17 e continuar fazendo minhas melhorias.
Problema que a versão 2.17 não é compatível com o Harbour atual, da uma serie de erros. Então vou seguir com xharbour mesmo nas versão mais atual.

Sobre o erro da Activex, estou usando o MINGW que vem junto com a versão do Harbour(noite), então quem fez o pacote do Harbour fez ele incompleto.

Harbour Android + Hwgui

Enviado: 17 Fev 2015 13:38
por Itamar M. Lins Jr.
...o Harbour fez ele incompleto.
É a versão do Mingw que é velha, o pessoal já está vendo atualizar p/ 4.9.2.
antes funcionava, ou seja esse recurso foi tirado da Hwgui,
Lembre-se que existem outras pessoas usando a Hwgui no Linux via GTK.

Eu penso ser uma escolha equivocada da sua parte, basta apenas fazer pequenas modificações ai no seu código. Está se isolando no seu código.


Saudações,
Itamar M. Lins Jr.

Harbour Android + Hwgui

Enviado: 17 Fev 2015 18:43
por sygecom
E também tenho uma versão GTK, desatualizada, o básico funciona.

Versão 2.17 herdava TIMER, vou aguardar as resoluções desse problema para poder evoluir nos testes, não posso sair mudando tudo que tenho, exigiria varias alterações em vários projetos e sem contar a porrada de testes que teria que fazer.

Nota: TIMER nunca existiu na HWGUI GTK, então certamente não é esse o motivo de desfazer uma funcionalidade da HWGUI,

Harbour Android + Hwgui

Enviado: 17 Fev 2015 20:39
por Itamar M. Lins Jr.
Se vc souber como resolver isso mande um "patch" ou peça acesso de escrita no SVN.
Duvido que ele, negue. Ela já tinha até oferecido p/ nós aqui, só que na época eu não achei necessário até agora.. vez outra mando simples correções e ele faz o commit no SVN.

Saudações,
Itamar M. Lins Jr.