Problema autualização HMG Extended

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Softwhouse
Usuário Nível 3
Usuário Nível 3
Mensagens: 324
Registrado em: 07 Dez 2011 18:44
Localização: Porto Alegre/RS

Problema autualização HMG Extended

Mensagem por Softwhouse »

Houve alguma mudança nas propriedades da Grid ? Usava uma versão de 2022 da HMG Extended, e ao atualizar para última versão essa rotina de pesquisa letra-a-letra em qualquer coluna não funciona mais.

Código: Selecionar todos


#include "minigui.ch"

Function Main
Local aHeadClick [2]
private aRows [10] [2]

aRows  [1]   := {'Simpson'   , 'Homer'  }
aRows  [2]   := {'Mulder'    , 'Fox'   } 
aRows  [3]   := {'Smart'     , 'Max'   } 
aRows  [4]   := {'Grillo'    , 'Pepe'  } 
aRows  [5]   := {'Kirk'      , 'James' } 
aRows  [6]   := {'Barriga'   , 'Carlos' } 
aRows  [7]   := {'Flanders'  , 'Ned'    } 
aRows  [8]   := {'Smith'     , 'John'   } 
aRows  [9]   := {'Pedemonti' , 'Flavio'  } 
aRows [10]   := {'Gomez'     , 'Juan'   } 
  
AEVAL(aHeadClick, {| x, i | aHeadClick[ i ] := { |n| SortColumn( n ) }})
  
  
  
   DEFINE WINDOW Form_1 ;
       AT     0,0 ;
       WIDTH  568 ;
       HEIGHT 430 ;
       TITLE 'Pesquisa incremental no Grid' ;
       MAIN ;
       FONT 'Arial' ;
       SIZE 9 ;
       ON INIT FillGrid()          
       
       DEFINE LABEL Label_1
              ROW   360
              COL   10
              WIDTH 80
              VALUE 'Pesquisando:'
              VCENTERALIGN .T.
       END LABEL

       DEFINE TEXTBOX Text_1
              ROW   360
              COL   95
              WIDTH 150
              ONCHANGE {||SearchChange()}
       END TEXTBOX

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

Return(Nil)



/*********************************************************/
Procedure SearchChange()
/*********************************************************/
Local  cTxt, nLen, i
cTxt := GetProperty( 'Form_1' , 'Text_1' , 'Value' )
nLen := Len( cTxt )

nCol:= Form_1.Grid_1.Value [2]  

Form_1.Grid_1.DeleteAllItems

//Procura o texto 

For i := 1 To Len( aRows )
    If Upper( cTxt ) = Upper( Left( aRows [ i ] [ nCol ] , nLen ) )
       Form_1.Grid_1.AddItem ( aRows [ i ] )
    Endif
Next
Form_1.Grid_1.Value:={1,nCol}       
     
Return



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


/*********************************************************/
Procedure SortColumn(nColumnNo)
/*********************************************************/
Form_1.Grid_1.Refresh
Asort( aRows, , , { | x, y | x[ nColumnNo ] < y[ nColumnNo ] })
Form_1.Grid_1.DeleteAllItems
Aeval( aRows, { | x | Form_1.Grid_1.AddItem( x ) } )
Form_1.Grid_1.Value:= {1,nColumnNo}
Return (Nil)


E o pior é que não tenho mais a versão anterior de Minigui. Alguém sabe aonde encontrar o download de versões anteriores ?
Fernando
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 »

Quando diz última versão, se refere a de janeiro ou fevereiro ?
Me veio na cabeça sobre SET SCOPE, apesar que seu grid parece ser de array.

Não precisaria de um REFRESH?

Vi no sort um refresh antes e não depois, mas não tem a ver com esse problema.
Alterei meu post anterior.

Se for esse o único problema, melhor tentar resolver com a última versão, assim tem trabalho uma vez só.
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 »

Deu erro aqui.
Corrigi fazendo isto:

Código: Selecionar todos

nCol:= Max( Form_1.Grid_1.Value [2], 1 )
Estava retornando coluna zero, se não movimentasse o browse primeiro.
tela.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 »

Relatei o problema e postei seu fonte lá no fórum da minigui.
Como funcionava antes, é de se imaginar que deve ser corrigido.
Tá pra ser liberada uma versão de fevereiro, quem sabe já não faça parte dela.

Enquanto isso, só com quebra-galho, ou como dizem lá fora, com workaround.

Testei com SetProperty() antes de ativar, mas não resolveu.

Não uso pra valer, mas achei interessante testar, porque posso precisar.
Tá aí uma opção pra pensar em adicionar no aplicativo dlgauto, o difícil é imaginar uma configuração automática pra 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/
Softwhouse
Usuário Nível 3
Usuário Nível 3
Mensagens: 324
Registrado em: 07 Dez 2011 18:44
Localização: Porto Alegre/RS

Problema autualização HMG Extended

Mensagem por Softwhouse »

Valeu José, a sua solução evita o programa abortar mas não resolve. Ao teclar uma letra diferente da palavra procurada o Grid tem que ser zerado, teclando backspace tem que carregar novamente até a quantidade de letras digitadas corretamente. O negócio é aguardar mesmo.
Fernando
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 »

Softwhouse escreveu:Valeu José, a sua solução evita o programa abortar mas não resolve. Ao teclar uma letra diferente da palavra procurada o Grid tem que ser zerado, teclando backspace tem que carregar novamente até a quantidade de letras digitadas corretamente. O negócio é aguardar mesmo.
Testando aqui, aquele Max() resolve o erro geral, porque assume 1 quando for zero, mesmo teclando backspace.
Mas o ideal é o próprio browse resolver isso.
Não testei no caso de um número maior, se daria erro.

O principal seria ver se tem mais problemas além desse, senão vai esperar esse e mesmo assim não vai poder atualizar.
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 »

A opção é alterar todos os GRIDs:

Código: Selecionar todos

   _HMG_aControlValue :=  {1,1}
Lembrando:

a sintaxe alternativa é um comando por vez, CADA comando é traduzido, não é o DEFINE GRID inteiro traduzido.
A tradução é só da linha VALUE {1,1}
Mas tem o value do GRID, do TEXTBOX, etc., não pra pra consertar GRID sem estragar o TEXTBOX, por exemplo.

NÃO sei como isso era tratado na versão antiga.

Veja na versão antiga como é que ela trata isso no i_altsyntax.ch, procure por " VALUE ", no #xcommand 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/
Softwhouse
Usuário Nível 3
Usuário Nível 3
Mensagens: 324
Registrado em: 07 Dez 2011 18:44
Localização: Porto Alegre/RS

Problema autualização HMG Extended

Mensagem por Softwhouse »

Seria isso ?

#xcommand VALUE <value> ;
=>;
_HMG_ActiveControlValue := <value>
Fernando
Avatar do usuário
marcosLP
Usuário Nível 1
Usuário Nível 1
Mensagens: 47
Registrado em: 13 Nov 2020 10:24
Localização: guarpauava/pr

Problema autualização HMG Extended

Mensagem por marcosLP »

Realmente, novas versões são apra corrigir bugs ou em muitas poucas alguns novos recursos, samples que se possa mesmo utilizar. Essas versões são mais tambem para cada versão dos Sistemas Operacionais que se propõem a serem usadas.
Eu ainda usa a 17.02 e 17.04 e roda em qq plataforma porque são estáveis.
Eu gostaria mesmo de ver uma versão que tivessem samples de SQL mas que funcionasse de verdade, PDF que pudesse-se cria-los mais facilmente, converter um DOC com conexão de BD para TXT sem perder os dados.
Um visualizador de DBF que se possa editar cada registro sem que se corrompam como o DBFPLUS, o DBF View que vem junto com os exemplos da minigui...
No geral eu agradeço mesmo o Filatov que pegou do Roberto e transformou em Extended e que eu consigo fazer cada coisa que nem te conto.
ps2: antes nas versões vinha o freeCommandLineTools que era simples para instalar corretamente com o que já temos rodando do compilador BCC.

Desculpem o tamnho do texto mas é raro quando se pode se manifestar aos colegas.
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 »

É, mas esse value usa em outros lugares, pensei em alterar mas dá problema até no TEXTBOX.

use o que coloquei no post anterior _HMG_aControlValue := { 1, 1 }

IMPORTANTE:
Tem que escrever certinho, maiúsculas e minúsculas.
Isso está em #define
Se errar uma letra, ou mudar o maiúscula/minúscula, vai dar erro em run-time.
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 »

marcosLP escreveu:Realmente, novas versões são apra corrigir bugs ou em muitas poucas alguns novos recursos, samples que se possa mesmo utilizar. Essas versões são mais tambem para cada versão dos Sistemas Operacionais que se propõem a serem usadas.
Eu ainda usa a 17.02 e 17.04 e roda em qq plataforma porque são estáveis.
Eu gostaria mesmo de ver uma versão que tivessem samples de SQL mas que funcionasse de verdade, PDF que pudesse-se cria-los mais facilmente, converter um DOC com conexão de BD para TXT sem perder os dados.
Um visualizador de DBF que se possa editar cada registro sem que se corrompam como o DBFPLUS, o DBF View que vem junto com os exemplos da minigui...
No geral eu agradeço mesmo o Filatov que pegou do Roberto e transformou em Extended e que eu consigo fazer cada coisa que nem te conto.
ps2: antes nas versões vinha o freeCommandLineTools que era simples para instalar corretamente com o que já temos rodando do compilador BCC.

Desculpem o tamnho do texto mas é raro quando se pode se manifestar aos colegas.
Se isso for texto grande, eu tô frito kkkk

Não entendi o 17.02 e 17.04 roda em qualquer plataforma

Sobre SQL, depende do que está dizendo. O problema de SQL, PRA EXEMPLOS, é que depende de servidor SQL. Fica difícil criar um genérico, e depende do que vai usar com SQL.

Sobre PDF.... depende também... acho difícil generalizar. Na OOHG pode fazer o mesmo fonte pra gerar print, pdf ou excel. A complexidade é relacionada com o conteúdo também. E tem minha classe também.

Sobre DBF: Aí complicou geral, porque existem muitos formatos de DBF, vai ser difícil tratar todos os formatos ao mesmo tempo.
O que uso nesse caso é o meu fonte pra DBF imitando dBASE, eu deixo embutido no aplicativo, assim ele trabalha exatamente igual ao aplicativo, no mesmo formato. Daria pra fazer algo em harbour, usando o hb_compiler() com tratamento e recursos muito mais avançados, mas isso é pra usar eventualmente, se está usando muito.... tem coisa errada aí, não é de um programa pra isso que está precisando.
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 »

marcosLP escreveu:Um visualizador de DBF que se possa editar cada registro sem que se corrompam
Vai parecer piada mas... tirando a parte de criar alguns DBFs.... o DLGAUTO acabou virando isso !!!!!

Pense bem... ele pega qualquer DBF e cria tela de cadastro para o DBF.
Inclui, altera, exclui, browse, etc.

Mas.... depende do formato do DBF, no momento tem lá REQUEST DBFCDX

É só pensar em adicionar pesquisas e/ou filtros.

Mas de novo: o normal é NÃO precisar disso.
Se precisa muito, então algo está errado.
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 Softwhouse » 21 Fev 2024 10:04
Houve alguma mudança nas propriedades da Grid ? Usava uma versão de 2022 da HMG Extended, e ao atualizar para última versão essa rotina de pesquisa letra-a-letra em qualquer coluna não funciona mais.
Tenha em mente que a propriedade VALUE do GRID pode devolver dois tipos de informação; se MULTSELECT=TRUE, então value sera um array, caso contrário será numérico.
O array não tem nada a ver com linha e coluna, não faz sentido definir value como {1,1} pois você esta definindo o mesmo valor 2 vezes;
Exemplo:
...
MUTSELECT TRUE
VALUE {1,3,5,7}
...
O grid será iniciado com as 4 linhas selecionadas;

De uma olhada no manua (minigui.chm)l para enriquecer seu conhecimento, talvez o que esteja procurando seja:
· Item ( nItemIndex ) Set / Get item text in a Grid control.
· Cell( nRow , nCol ) Set / Get cell value in Grid control.
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 »

Não Ivanil, já postei lá no fórum.

Vamos dividir em 3 questões:

1) Na versão anterior funcionava e agora não

2) Pra que serve o VALUE na versão atual, NA DECLARAÇÃO DA SINTAXE ALTERNATIVA, deixou de ser pra definir VALUE

3) Pra que serve o VALUE da propriedade, continua funcionando pra row,col

Não sei o que mudou, a não ser que trocou sintaxe normal por alternativa.

Com certeza isso que está mostrando está errado.
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 »

Ivanil, NÃO HÁ O QUE DISCUTIR.

Código: Selecionar todos

#include "minigui.ch"

Function Main
Local aHeadClick [2]
private aRows [10] [2]

aRows  [1]   := {'Simpson'   , 'Homer'  }
aRows  [2]   := {'Mulder'    , 'Fox'   }
aRows  [3]   := {'Smart'     , 'Max'   }
aRows  [4]   := {'Grillo'    , 'Pepe'  }
aRows  [5]   := {'Kirk'      , 'James' }
aRows  [6]   := {'Barriga'   , 'Carlos' }
aRows  [7]   := {'Flanders'  , 'Ned'    }
aRows  [8]   := {'Smith'     , 'John'   }
aRows  [9]   := {'Pedemonti' , 'Flavio'  }
aRows [10]   := {'Gomez'     , 'Juan'   }

AEVAL(aHeadClick, {| x, i | aHeadClick[ i ] := { |n| SortColumn( n ) }})



   DEFINE WINDOW Form_1 ;
       AT     0,0 ;
       WIDTH  568 ;
       HEIGHT 430 ;
       TITLE 'Pesquisa incremental no Grid' ;
       MAIN ;
       FONT 'Arial' ;
       SIZE 9 ;
       ON INIT FillGrid()

       DEFINE LABEL Label_1
              ROW   360
              COL   10
              WIDTH 80
              VALUE 'Pesquisando:'
              VCENTERALIGN .T.
       END LABEL

       DEFINE TEXTBOX Text_1
              ROW   360
              COL   95
              WIDTH 150
              ONCHANGE {||SearchChange()}
       END TEXTBOX

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


END WINDOW

CENTER WINDOW Form_1
ACTIVATE WINDOW Form_1

Return(Nil)

/*********************************************************/
Procedure SearchChange()
/*********************************************************/
Local  cTxt, nLen, i, xValue
cTxt := GetProperty( 'Form_1' , 'Text_1' , 'Value' )
nLen := Len( cTxt )

xValue := Form_1.Grid_1.Value
Msgbox( Str( xValue[1] ) + " "  + Str( xValue[2] ) )

nCol:= Max( Form_1.Grid_1.Value [2], 1 )

Form_1.Grid_1.DeleteAllItems

//Procura o texto

For i := 1 To Len( aRows )
    If Upper( cTxt ) = Upper( Left( aRows [ i ] [ nCol ] , nLen ) )
       Form_1.Grid_1.AddItem ( aRows [ i ] )
    Endif
Next
Form_1.Grid_1.Value:={1,nCol}

Return

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

/*********************************************************/
Procedure SortColumn(nColumnNo)
/*********************************************************/
Form_1.Grid_1.Refresh
Asort( aRows, , , { | x, y | x[ nColumnNo ] < y[ nColumnNo ] })
Form_1.Grid_1.DeleteAllItems
Aeval( aRows, { | x | Form_1.Grid_1.AddItem( x ) } )
Form_1.Grid_1.Value:= {1,nColumnNo}
Return (Nil)
Pegue esse fonte e compile com HMG Extended atual
test.png
É só compilar e vai confirmar que é ROW e COL.
Não adianta nada o manual dizer que é outra coisa, só leva a entender que o manual está errado.

Destaque pra esta parte:

Código: Selecionar todos

xValue := Form_1.Grid_1.Value
Msgbox( Str( xValue[1] ) + " "  + Str( xValue[2] ) )
nCol:= Max( Form_1.Grid_1.Value [2], 1 )
Isso está pegando o valor e tratando como array de 2 elementos, row e col.
O manual diz que é número.... cadê o número ?

Fiz teste trocando form_1.grid_1.value por GetProperty( "form_1", "grid_1", "value" ), pra tirar dúvida, mesmo resultado.
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