Página 1 de 3
Problema autualização HMG Extended
Enviado: 21 Fev 2024 10:04
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 ?
Problema autualização HMG Extended
Enviado: 21 Fev 2024 11:39
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ó.
Problema autualização HMG Extended
Enviado: 21 Fev 2024 12:33
por JoséQuintas
Deu erro aqui.
Corrigi fazendo isto:
Estava retornando coluna zero, se não movimentasse o browse primeiro.
Problema autualização HMG Extended
Enviado: 21 Fev 2024 12:57
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.
Problema autualização HMG Extended
Enviado: 21 Fev 2024 13:41
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.
Problema autualização HMG Extended
Enviado: 21 Fev 2024 14:17
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.
Problema autualização HMG Extended
Enviado: 21 Fev 2024 16:48
por JoséQuintas
A opção é alterar todos os GRIDs:
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
Problema autualização HMG Extended
Enviado: 21 Fev 2024 17:40
por Softwhouse
Seria isso ?
#xcommand VALUE <value> ;
=>;
_HMG_ActiveControlValue := <value>
Problema autualização HMG Extended
Enviado: 21 Fev 2024 18:13
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.
Problema autualização HMG Extended
Enviado: 21 Fev 2024 18:20
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.
Problema autualização HMG Extended
Enviado: 21 Fev 2024 18:32
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.
Problema autualização HMG Extended
Enviado: 21 Fev 2024 18:39
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.
Problema autualização HMG Extended
Enviado: 21 Fev 2024 18:53
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.
Problema autualização HMG Extended
Enviado: 21 Fev 2024 18:59
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.
Problema autualização HMG Extended
Enviado: 21 Fev 2024 19:15
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
É 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.