Problema autualização HMG Extended

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

Problema autualização HMG Extended

Mensagem por JoséQuintas »

Peguei nos exemplos:

Tem MULTISELECT = TRUE
Tem MULTISELECT .T.

No segundo deixou selecionar e retorna selecionados, caso contrário, é array row,col
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

Problema autualização HMG Extended

Mensagem por ivanil »

Ola;
Mensagem por JoséQuintas » 21 Fev 2024 19:15
Ivanil, NÃO HÁ O QUE DISCUTIR.
Sem problemas Sr. Quintas;


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

Problema autualização HMG Extended

Mensagem por JoséQuintas »

Atualizei o post anterior, porque nem todo exemplo é igual.

Mas continua valendo: apenas compile o teste e comprove. compilei com HMG 24.01
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

Problema autualização HMG Extended

Mensagem por JoséQuintas »

Se você preferir......

Você está certo do seu ponto de vista, mas está errado do ponto de vista da HMG.

O comando VALUE aponta pra isso

Código: Selecionar todos

#xcommand VALUE <value> ;
   =>;
   _HMG_ActiveControlValue := <value>
Cadê isso nos fontes?
grid1.png
Mas não tem isso no grid?
grid2.png
E agora complicou. Como é que seleciona vários registros com aquilo, se aquilo nem é usado ?
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

Problema autualização HMG Extended

Mensagem por JoséQuintas »

grid3.png
Pois é... VALUE não serve pra nada NA DECLARAÇÃO do grid, NA SINTAXE ALTERNATIVA.

VALUE da declaração NÃO É o value da PROPRIEDADE.

Se for multiselect, a propriedade VALUE retorna selecionados
Se for normal, a propriedade VALUE retorna linha/coluna
NÃO TESTEI se com uma coluna, igual listbox, faria diferença.

Lembrando também:

GRID nem sempre é GRID.
Se olhar i_hmgcompat.ch, grid chama browse.

Código: Selecionar todos

#xcommand @ <row>, <col> GRID <name> ;
...
   => ;
      _HMG_BrowseSyncStatus := .T. ;;
      @ <row>, <col> BROWSE <name> ;
...
Não sei se tem outras situações onde o GRID não é GRID.

Mas, deixando todas as explicações de lado, é compilar o teste e ver o que acontece.
só tem isto:

Código: Selecionar todos

#include "minigui.ch"
A dúvida é:
Como a DEFINIÇÃO funcionava na versão anterior?
O que será que tinha de diferente?
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

Problema autualização HMG Extended

Mensagem por JoséQuintas »

BINGO !!!!!

Ivanil, ajudou a talvez resolver a questão.
Basta alterar

Código: Selecionar todos

#xcommand END GRID ;
E modificar somente o GRID pra pegar aquele outro VALUE.
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

Problema autualização HMG Extended

Mensagem por JoséQuintas »

Pior que não....

Código: Selecionar todos

#xcommand END GRID ;
   =>;
_HMG_ActiveControlDef   := .F.      ;;
_DefineGrid ( _HMG_ActiveControlName ,    ;
      _HMG_ActiveControlOf ,    ;
      _HMG_ActiveControlCol ,      ;
      _HMG_ActiveControlRow ,      ;
      _HMG_ActiveControlWidth ,       ;
      _HMG_ActiveControlHeight ,       ;
      _HMG_ActiveControlHeaders ,    ;
      _HMG_ActiveControlWidths ,    ;
      _HMG_ActiveControlItems ,    ;
      _HMG_ActiveControlValue ,   ;
Pelo que está aí, aquele valor deveria entrar.
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

Problema autualização HMG Extended

Mensagem por ivanil »

Ola Quintas;

Este exemplo deve sanar qualquer dúvida;

tome um cuidado especial ao mexer com as constantes, tudo funciona muito bem da forma como está, se tirar algo do lugar obterá erros inexplicáveis;

Código: Selecionar todos

#include <hmg.ch>
Function Main(  )
    DEFINE WINDOW MAIN AT 265, 980 WIDTH 373 HEIGHT 286  TITLE "" MAIN ON INIT (Main_Oninit())

        DEFINE GRID oGrid1
            HEADERS { "test1" }
            ITEMS { { "01" } , { "02" } , { "03" } }
            WIDTHS { 150 }
            ONCHANGE (Main_oGrid1_Onchange())
            MULTISELECT .T.
            COL 26
            HEIGHT 150
            ROW 14
            VALUE { 1 , 3 }
            WIDTH 150
        END GRID

        DEFINE GRID oGrid2
            HEADERS { "test2" }
            ITEMS { { "01" } , { "02" } , { "03" } }
            WIDTHS { 150 }
            ONCHANGE (Main_oGrid2_Onchange())
            COL 185
            HEIGHT 150
            ROW 14
            VALUE 2.00
            WIDTH 150
        END GRID

        DEFINE LABEL oLabel1
            AUTOSIZE .T.
            CLIENTEDGE .T.
            VCENTERALIGN .T.
            COL 26
            HEIGHT 21
            ROW 173
            WIDTH 41
        END LABEL

        DEFINE LABEL oLabel2
            AUTOSIZE .T.
            CLIENTEDGE .T.
            VCENTERALIGN .T.
            COL 185
            HEIGHT 21
            ROW 173
            WIDTH 41
        END LABEL

        DEFINE LABEL oLabel3
            AUTOSIZE .T.
            CLIENTEDGE .T.
            VCENTERALIGN .T.
            COL 26
            HEIGHT 21
            ROW 201
            WIDTH 41
        END LABEL

        DEFINE LABEL oLabel4
            AUTOSIZE .T.
            CLIENTEDGE .T.
            VCENTERALIGN .T.
            COL 185
            HEIGHT 21
            ROW 201
            WIDTH 41
        END LABEL

    END WINDOW

    Main.Center
    Main.activate()

    REturn .T.

    ***********************************************
    ///////////////////////////////////////////////
    ***********************************************
Static Function Main_oGrid1_Onchange( )
    Local cText:="",i
    Main.oLabel1.value := alltrim(cStr(Main.oGrid1.value))+space(5)
    for each i in Main.oGrid1.value
        cText += str(i,1)+":"+ Main.oGrid1.item(i)[1]+"-"
    next
    Main.oLabel3.value:=cText
    Return .T.

    ***********************************************
    ///////////////////////////////////////////////
    ***********************************************
Static Function Main_oGrid2_Onchange( )
    Main.oLabel2.value := alltrim(cStr(Main.oGrid2.value))+space(5)
    Main.oLabel4.value := Main.oGrid2.item(Main.oGrid2.value)[1]+space(5)
    
    Return .T.


    ***********************************************
    ///////////////////////////////////////////////
    ***********************************************
Static Function Main_Oninit( )
    Main_oGrid1_Onchange( )
    Main_oGrid2_Onchange( )
    Return .T.

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

Problema autualização HMG Extended

Mensagem por JoséQuintas »

troquei hmg.ch por minigui.ch pra ver se fazia diferença.

Agora temos 2 fontes, cada um com um resultado diferente.
Imagino que seja por ter uma única coluna.
fazer teste aqui alterando 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/
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

Problema autualização HMG Extended

Mensagem por ivanil »

O Hmg.ch é mais completo, contempla todos os includes necessários;
Pode por quantas colunas quiser o resultado é o mesmo;
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Problema autualização HMG Extended

Mensagem por JoséQuintas »

alterei esta parte, pra ter 2 colunas:

Código: Selecionar todos

        DEFINE GRID oGrid2
            HEADERS { "col1", "col2" }
            ITEMS { { "01", "01" } , { "02", "02" } , { "03", "03" } }
            WIDTHS { 50, 50 }
            ONCHANGE (Main_oGrid2_Onchange())
            COL 185
            HEIGHT 150
            ROW 14
            VALUE {1,1}
            WIDTH 150
        END GRID
fonte completo alterado

Código: Selecionar todos

#include "minigui.ch"
Function Main(  )
    DEFINE WINDOW MAIN AT 265, 980 WIDTH 373 HEIGHT 286  TITLE "" MAIN ON INIT (Main_Oninit())

        DEFINE GRID oGrid1
            HEADERS { "test1" }
            ITEMS { { "01" } , { "02" } , { "03" } }
            WIDTHS { 150 }
            ONCHANGE (Main_oGrid1_Onchange())
            MULTISELECT .T.
            COL 26
            HEIGHT 150
            ROW 14
            VALUE { 1 , 3 }
            WIDTH 150
        END GRID

        DEFINE GRID oGrid2
            HEADERS { "col1", "col2" }
            ITEMS { { "01", "01" } , { "02", "02" } , { "03", "03" } }
            WIDTHS { 50, 50 }
            ONCHANGE (Main_oGrid2_Onchange())
            COL 185
            HEIGHT 150
            ROW 14
            VALUE {1,1}
            WIDTH 150
        END GRID

        DEFINE LABEL oLabel1
            AUTOSIZE .T.
            CLIENTEDGE .T.
            VCENTERALIGN .T.
            COL 26
            HEIGHT 21
            ROW 173
            WIDTH 41
        END LABEL

        DEFINE LABEL oLabel2
            AUTOSIZE .T.
            CLIENTEDGE .T.
            VCENTERALIGN .T.
            COL 185
            HEIGHT 21
            ROW 173
            WIDTH 41
        END LABEL

        DEFINE LABEL oLabel3
            AUTOSIZE .T.
            CLIENTEDGE .T.
            VCENTERALIGN .T.
            COL 26
            HEIGHT 21
            ROW 201
            WIDTH 41
        END LABEL

        DEFINE LABEL oLabel4
            AUTOSIZE .T.
            CLIENTEDGE .T.
            VCENTERALIGN .T.
            COL 185
            HEIGHT 21
            ROW 201
            WIDTH 41
        END LABEL

    END WINDOW

    Main.Center
    Main.activate()

    REturn .T.

    ***********************************************
    ///////////////////////////////////////////////
    ***********************************************
Static Function Main_oGrid1_Onchange( )
    Local cText:="",i
    Main.oLabel1.value := alltrim(cStr(Main.oGrid1.value))+space(5)
    for each i in Main.oGrid1.value
        cText += str(i,1)+":"+ Main.oGrid1.item(i)[1]+"-"
    next
    Main.oLabel3.value:=cText
    Return .T.

    ***********************************************
    ///////////////////////////////////////////////
    ***********************************************
Static Function Main_oGrid2_Onchange( )
    Main.oLabel2.value := alltrim(cStr(Main.oGrid2.value))+space(5)
    Main.oLabel4.value := Main.oGrid2.item(Main.oGrid2.value)[1]+space(5)

    Return .T.


    ***********************************************
    ///////////////////////////////////////////////
    ***********************************************
Static Function Main_Oninit( )
    Main_oGrid1_Onchange( )
    Main_oGrid2_Onchange( )
    Return .T.
grid1.png
O resultado está como você disse..... mas não muito...

Há um detalhe muito importante, ESTÁ TRATANDO AS DUAS COLUNAS COMO SENDO UMA SÓ



No outro teste, dá pra ver que cada coluna é isolada

provavelmente isto:

Código: Selecionar todos

              CELLNAVIGATION .T.
e acrescentando isso...
ivanil.png
agora seu exemplo ficou doidão.

É como eu disse antes:
Cada um está certo, de seu ponto de vista.
Tudo muda com esse CELLNAVIGATION

Até o "ficou doidão" depende do ponto de vista, deve estar mostrando o conteúdo como array e por isso caracteres especiais.
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

Problema autualização HMG Extended

Mensagem por ivanil »

Ola Quintas;

CELLNAVIGATION muda os resultados e a forma de tratar os valores, já que a navegação é por célula;


O programa do amigo que iniciou este tópico está com problema de lógica;

O grid esta sendo iniciado vazio então não adianta definir valor na criação;

Para resolver, há 2 soluções;

01) Passar a matriz na criação do controle e retirar de ONINIT

Código: Selecionar todos

       DEFINE GRID Grid_1 
              ROW     10             
              COL     10
              WIDTH   420
              HEIGHT  330
              items aRows
              HEADERS { 'Sobrenome' , 'Nome' } 
              WIDTHS  { 80, 180 }
              CELLNAVIGATION .T.
              ONHEADCLICK aHEADCLICK
              ONDBLCLICK id('Form_1','Grid_1',1)
              Value {1,1}
       END GRID   


02) Acrescentar a atribuição de VALUE na função chamada por ONINIT;

Código: Selecionar todos

Procedure FillGrid()
/*********************************************************/
Local i 
For i := 1 To Len( aRows )
    Form_1.Grid_1.AddItem ( aRows [ i ] )
Next
Form_1.Grid_1.value := {1,1}
Return

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

Problema autualização HMG Extended

Mensagem por JoséQuintas »

Fiz pra curiosidade, usando hb_ValToExp(), o último é esquisito

Código: Selecionar todos

    Main.oLabel2.value := hb_ValToExp(Main.oGrid2.value)+space(5)
    Main.oLabel4.value := hb_ValToExp( Main.oGrid2.item(Main.oGrid2.value)[1])+space(5)
grid.png
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

Problema autualização HMG Extended

Mensagem por JoséQuintas »

Confirmado.
Primeira solução mais prática.

Código: Selecionar todos

              ITEMS aRows
Com isso tudo funciona normalmente.

Fernando
O Grigory disse que vai incluir a mudança pra compatibilidade nesta próxima versão, que está quase saindo.
Fica a seu critério se vai esperar a versão, ou se já vai colocar o ITEMS nos browses pra já tocar tudo em frente sem precisar aguardar.

Pois é... trabalhando juntos chegamos a algum lugar, e todos ganharam com isso.
Comentei lá pro Grigory adicionar o detalhe do CELLNAVIGATION na documentação do grid, evita voltar nisso no futuro.
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

Problema autualização HMG Extended

Mensagem por ivanil »

Bom dia,

Na verdade, embora o Grigory tenha confirmado o Bug, não acho que seja um bug;
Na primeira vista me passou despercebido, acredito que isso também tenha acontecido com ele;


Se você inicia um grid sem conteudo, então não faz sentido determinar em que ponto estará parado; quando foi passado a matriz para a criação do combo, aí sim faz sentido e tudo funciona;
alimentar o grid futuramente é o mesmo, zerou o grid , value deve ser zero, ao retroalimentá-lo você deve determinar uma nova posição; Qualquer coisa diferente seria ilógico;

Grande abraço.

Ivanil
Responder