VALID não funciona

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

VALID não funciona

Mensagem por JoséQuintas »

Problema:
Se chamar a rotina a partir do menu ok, a window funciona normalmente.
Se chamar a rotina a partir de um valid... a window tem o getbox e o valid dele não funciona.

Como debugar isso?
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

VALID não funciona

Mensagem por JoséQuintas »

Usando GETBOX com VALID não vai de jeito nenhum.
Usando GETBOX com ON LOSTFOCUS deu certo, ainda não percebi se vai ter efeitos colaterais.

Na HMG3 isso funciona normalmente nos dois casos !!!!
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/
ivanil
Usuário Nível 3
Usuário Nível 3
Mensagens: 166
Registrado em: 11 Set 2004 15:13
Localização: Florianópolis/SC

VALID não funciona

Mensagem por ivanil »

Ola;

O Valid do getbox necessariamente é obrigatório o uso de bloco; como você não postou o código, acredito que seja isso;

eu até levantei essa questão com o Grigory, pois a documentação diz valer as duas condições {função,Bloco}; mas a realidade é que só aceita bloco;

tem uns exemplos muito interessante no samples\basic\getbox;

At;

Ivanil
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

VALID não funciona

Mensagem por JoséQuintas »

Código: Selecionar todos

#include "hmg.ch"
#include "i_altsyntax.ch"
#include "i_winuser.ch"

PROCEDURE Main

   LOCAL Dlg1, Text1, Text2, Label1, Label2

   SET WINDOW MAIN OFF
   SET NAVIGATION EXTENDED

   test2()
   gui_DialogCreate( @Dlg1, 0, 0, 1024, 768, "test" )
   gui_LabelCreate( Dlg1, @Label1, 20, 5, 100, 20, "field 1" )
   gui_TextCreate( Dlg1, @Text1, 20, 200, 200, 20, "entervalue", { || test2(), .T. } )
   gui_labelCreate( Dlg1, @Label2, 50, 5, 100, 20, "field 2" )
   gui_TextCreate( Dlg1, @Text2, 50, 200, 20, 20, "anothervalue" )
   ACTIVATE WINDOW (Dlg1)

   RETURN

FUNCTION Test2()

   LOCAL Dlg2, Text3, Text4, Label3, Label4

   gui_DialogCreate( @Dlg2, 0, 0, 1024, 768, "test" )
   gui_LabelCreate( Dlg2, @Label3, 20, 5, 100, 20, "field 1" )
   gui_TextCreate( Dlg2, @Text3, 20, 200, 200, 20, "entervalue", { || MsgBox( "test" ), .T. } )
   gui_labelCreate( Dlg2, @Label4, 50, 5, 100, 20, "field 2" )
   gui_TextCreate( Dlg2, @Text4, 50, 200, 20, 20, "anothervalue" )
   ACTIVATE WINDOW (Dlg2)

   RETURN Nil

FUNCTION gui_DialogCreate( xDlg, nRow, nCol, nWidth, nHeight, cTitle )

   STATIC n := 0

   n += 1
   xDlg := "DLG" + StrZero( n, 3 )
   DEFINE WINDOW ( xDlg ) ;
      AT nCol, nRow ;
      WIDTH nWidth ;
      HEIGHT nHeight ;
      TITLE cTitle ;
      MODAL
   END WINDOW

   RETURN Nil

FUNCTION gui_LabelCreate( xDlg, xControl, nRow, nCol, nWidth, nHeight, xValue )

   STATIC n := 0

   n += 1
   xControl := "lbl" + StrZero( n, 3 )
   DEFINE LABEL ( xControl )
      PARENT ( xDlg )
      COL nCol
      ROW nRow
      WIDTH nWidth
      HEIGHT nHeight
      VALUE xValue
   END LABEL

   RETURN Nil

FUNCTION gui_textCreate( xDlg, xControl, nRow, nCol, nWidth, nHeight, xValue, bValid )

   STATIC n := 0

      n += 1
      xControl := "text" + StrZero( n, 3 )
      DEFINE GETBOX ( xControl )
      PARENT ( xDlg )
      ROW nRow
      COL nCol
      HEIGHT nHeight
      WIDTH nWidth
      VALUE xValue
      IF ! Empty( bValid )
         //ON LOSTFOCUS Eval( bValid )
         VALID bValid // testing about bug?
      ENDIF
   END GETBOX

RETURN Nil
Só testar.
Chama test2, ok, valid funciona.
Chama test1 valid funciona e abre test2, mas aí o valid do test2 não funciona.
Trocando pro lostfocus tudo funciona.

O problema do valid é quando chamado de dentro de outro valid.

Pra testar com lostfocus, só descomentar lostfocus e comentar o valid, tá quase no final.
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

VALID não funciona

Mensagem por JoséQuintas »

Aproveitando....

Nessas horas é só por intuição.
Procurar bug não resolve.
Mas veio na cabeça a idéia de testar com lostfocus, e aí funcionou.

E também ajudou estar rodando o mesmo fonte com libs diferentes.
Isso ajuda a eliminar possibilidades de partes dos fontes.

Seguindo o mesmo raciocínio......
em HMG3 dá erro de run-time nisso se usar compilada pra UNICODE.
Talvez o VALID mexa com codepage.
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

VALID não funciona

Mensagem por JoséQuintas »

Acrescentei uma informação extra lá na minigui:

Na HMG3, quando comecei com níveis de dialog, e chamar do VALID, recebei erros de run-time, vindos da rotina de unicode.
O erro era referente EVAL não ser método, e isso só existe na rotina de unicode, xxx:Eval()
Mudei HMG3 pra ANSI, e tudo passou a funcionar.

Isso dá a impressão de que há alguma troca de codepage no getbox, que acaba afetando o que roda dentro do valid/tget usado pelo getbox.
De repente minigui utf-8 e tget do getbox ansi do harbour, sei lá o que acontece nas profundezas de baixo nível.

Na HMG 3 tem o ch pra alterar de ANSI pra unicode e vice-versa, mas na HMG Extended e na OOHG não existe isso. apesar que GETBOX é exclusivo HMG Extended. É uma possibilidade, principalmente se essa situação gerar conversão dupla de unicode ou algo assim.
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/
Responder