Página 3 de 3

Problema autualização HMG Extended

Enviado: 22 Fev 2024 09:32
por Softwhouse
José e Ivanil,
Agradeço a atenção e dedicação ao problema.
As alternativas não resolveram. Durante a digitação o Grid vai sendo carregado, ao digitar um caractér não encontrado o Grid zera, isso está correto, ao teclar backspace é perdido o foco da coluna e acontece o erro.
Consegui uma verão da Minigui do final de 2022, instalada em outro HD. Compilando com ela funciona perfeitamente.
Vou aguardar a correção.
Obrigado.

Problema autualização HMG Extended

Enviado: 22 Fev 2024 10:07
por JoséQuintas
ivanil escreveu:Na verdade, embora o Grigory tenha confirmado o Bug, não acho que seja um bug;
Aqui também, depende do posto de vista.
Considero mais como problema de compatibilidade, mas.....

Os controles em geral não existem enquanto não for ativada a dialog.
Deve ser acionado um create() ou algo assim quando ativa a dialog.
Antes disso, não precisa pressa pra preencher todos os valores.

Tem uma exceção:
Caso os cálculos estejam errados, se forem durante a definição ainda temos a chance de contornar o bug, como chegou a ser feito neste post.

Código: Selecionar todos

_HMG_aControlValue := { 1,1 }
Provavelmente a diferença entre a versão anterior e atual esteja por aí.
Na definição criou default errado porque se baseou no array vazio, que pode sofrer alterações
Na "criação" trabalha com tudo pronto, valores definitivos, é um melhor lugar pra tratar certas coisas.
Pode ser diferente conforme o controle/necessidade do controle.

Tem aquilo de centralizar tudo antes de ativar, etc.
Os parâmetros que mexem com isso, não podem ser deixados pra depois.
Já o valor do browse, só vai ser usado ao desenhar o conteúdo, não é urgente que seja atribuído default antes de ativar dialog/ativar controle.

Para o programador, quanto mais deixar flexível melhor.
Uma coisa é: Tem que fazer assim, porque a LIB obriga assim
Outra coisa é: Faço assim porque acho melhor, pra LIB tanto faz
Uma LIB pode ser considerada muito melhor, só por causa desse detalhe, de onde colocou pra fazer os cálculos e/ou atribuir default, só por mover o bloco de fonte de um lugar para o outro.

Problema autualização HMG Extended

Enviado: 22 Fev 2024 10:13
por JoséQuintas
Softwhouse escreveu:José e Ivanil,
Agradeço a atenção e dedicação ao problema.
As alternativas não resolveram. Durante a digitação o Grid vai sendo carregado, ao digitar um caractér não encontrado o Grid zera, isso está correto, ao teclar backspace é perdido o foco da coluna e acontece o erro.
Consegui uma verão da Minigui do final de 2022, instalada em outro HD. Compilando com ela funciona perfeitamente.
Vou aguardar a correção.
Obrigado.
Aquele Max() que indiquei no início, contornava a criação e o backspace.
Uma coisa é a criação inicial, e outra coisa é durante o uso.
Vamos ver se a correção oficial vai prever as duas situações.
Ou... já passamos a informação pra ele confirmar.

Por coincidência, é até um pouco relacionado com o que coloquei no post anterior: depende de onde for colocado o bloco de "auto-correção".
Precisa durante toda atualização do browse, não apenas no browse inicial.

Problema autualização HMG Extended

Enviado: 23 Fev 2024 11:18
por JoséQuintas
Más notícias:

Essa última não vai ser alterada, porque é compatiblidade com HMG normal.

Fonte alternativo que o Grigory postou

Código: Selecionar todos

#include "minigui.ch"

Function Main
Local aHeadClick [2]
private aRows [10] [2], nColumn := 1

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
              ITEMS aRows
              HEADERS { 'Sobrenome' , 'Nome' }
              WIDTHS  { 80, 180 }
              CELLNAVIGATION .T.
              ONHEADCLICK aHEADCLICK
              ON CHANGE iif( GetProperty( "Form_1", "Grid_1", "ItemCount" ) > 0, nColumn := Form_1.Grid_1.Value [2], )
              // 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, row, xValue
cTxt := GetProperty( 'Form_1' , 'Text_1' , 'Value' )
nLen := Len( cTxt )

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

Form_1.Grid_1.DeleteAllItems

//Procura o texto

For Each row In aRows
    If Upper( cTxt ) = Upper( Left( row [ nColumn ] , nLen ) )
       Form_1.Grid_1.AddItem ( row )
    Endif
Next
Form_1.Grid_1.Value:={1,nColumn}

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)

Problema autualização HMG Extended

Enviado: 29 Fev 2024 15:53
por Softwhouse
Obrigado José, vou testar. Desculpe a demora em responder, tirei alguns dias de folga.