Página 1 de 2

Evento FORM ON KEY ESCAPE ACTION

Enviado: 11 Set 2016 18:55
por NiltonGM
Amigos,

Porque este evento 'ON KEY ESCAPE ACITION' de um Form não aparece na IDE MiniGUI HMG 3.4.3? Se colocarmos manualmente esse evento no Form (editar o arquivo Form_x.Fmg) o ESC funciona para fechar a janela, porem ao voltar à IDE e mudar algum componente e salvar o Form esse evento se perde porque não consta na lista do Gerenciador de Objetos. Isso é um bug ou esqueceram desse evento? Como faço, pois só consigo criar formulário pela IDE, não consigo visualizar mentalmente o Form só pelo código prg, tenho a necessidade de ver os componentes na tela.
Obrigado.

Evento FORM ON KEY ESCAPE ACTION

Enviado: 11 Set 2016 21:36
por Toledo
Amigo, coloque o comando no PRG:

Código: Selecionar todos

#include <hmg.ch>

Function Main

	SET TOOLTIPSTYLE BALLOON

	Load Window Main
        ON KEY ESCAPE OF Main ACTION Main.Release
	Center Window Main
	Activate Window Main

Return
Abraços,

Evento FORM ON KEY ESCAPE ACTION

Enviado: 12 Set 2016 07:55
por NiltonGM
Maravilha Toledo!

Ontem mesmo me deparei com o mesmo problema só que no controle GRID, no caso do evento ONCHECKBOXCLICKED que também não aparece no Gerenciador de Objetos, nesse caso a GRID é carregada pelo Form, como posso em tempo de execução ao atribuir valores a grid habilitar esse evento "ONCHECKBOXCLICKED main_OnCheckBoxClicked()", onde posso colocar:

Código: Selecionar todos

ON CHECKBOXCLICKED OF GRID_x ACTION main_OnCheckBoxClicked()
???
Agradeço sua ajuda Toledo.

Evento FORM ON KEY ESCAPE ACTION

Enviado: 12 Set 2016 09:13
por Toledo
Nilton, não testei, mas acho que vai funcionar:

Código: Selecionar todos

#include <hmg.ch>

Function Main

   SET TOOLTIPSTYLE BALLOON

   Load Window Main
   ON KEY ESCAPE OF Main ACTION Main.Release
   _SetOnCheckBoxClicked("Grid_1", "Main", {main_OnCheckBoxClicked()})
   Center Window Main
   Activate Window Main

Return


Function _SetOnCheckBoxClicked(cControlName, cParentForm, bActionCheckBox)
Local i
i := GetControlIndex  ( cControlName, cParentForm )
_HMG_SYSDATA [ 40 ] [ i ] [ 46 ] := bActionCheckBox
Return Nil
Obs1.: o terceiro parâmetro desta função _SetOnCheckBoxClicked() tem que estar entre { } (linha 9 do código acima)
Obs2.: este função _SetOnCheckBoxClicked() só vai funcionar (se funcionar, não testei) somente com HMG. Minigui Extended não.

Abraços,

Evento FORM ON KEY ESCAPE ACTION

Enviado: 12 Set 2016 11:50
por NiltonGM
Oi Toledo,

Deu erro, o comando ficou assim:

Código: Selecionar todos

         LOAD WINDOW Main
                  _SetOnCheckBoxClicked("Grid_Notas", "Main", {main_OnCheckBoxClicked()})

         if GetDesktopWidth() <= 1366    // Esse numero baseado em monitor de 15" resolução 1366 x 768
            MAXIMIZE WINDOW Main
            main_form_onsize()
         else
            Main.Center
         end

          Main.Activate
Está retornado o erro: " undefined reference to '_SETONCHECKBOXCLICKED "

Eu uso a HMG 3.4.3 Stable (32bits) "HMG-IDE UNICODE ver 1.1"

Encontrei algo parecido em C:\HMG.3.4.3\SOURCE\h_windows.prg

Código: Selecionar todos

               //   OnCheckBoxClicked   (by Dr. Claudio Soto, December 2014)
               #define LVIS_UNCHECKED 0x1000
               #define LVIS_CHECKED   0x2000
               IF GetGridNewState(lParam) == LVIS_UNCHECKED .OR. GetGridNewState(lParam) == LVIS_CHECKED
                  xTemp := { NIL, NIL }
                  xTemp[1] := _HMG_SYSDATA [ 40 ] [ i ] [ 37 ] [ 1 ]   // This.CellRowClicked
                  IF ( xTemp[1] > 0 .AND. xTemp[1] <=  ListView_GetItemCount (_HMG_SYSDATA [ 3 ] [ i ]) ) .OR. ; 
                     ( HMG_GetLastVirtualKeyDown( @xTemp[2] ) == VK_SPACE .AND. xTemp[2] == _HMG_SYSDATA [ 3 ] [ i ] ) .OR. ;
                     ( HMG_GetLastMouseMessage( @xTemp[2] ) == WM_LBUTTONDOWN .AND. xTemp[2] == _HMG_SYSDATA [ 3 ] [ i ] )   // ADD, March 2016
                     IF HMG_GetLastVirtualKeyDown() == VK_SPACE .OR. HMG_GetLastMouseMessage() == WM_LBUTTONDOWN
                        _HMG_SYSDATA [ 40 ] [ i ] [ 37 ] [ 1 ] := GETGRIDROW ( lParam ) + 1  // CellRowClicked
                        _HMG_SYSDATA [ 40 ] [ i ] [ 37 ] [ 2 ] := 0                          // CellColClicked
                     ENDIF
                     _DoControlEventProcedure ( _HMG_SYSDATA [ 40 ] [ i ] [ 46 ] , i )   // OnCheckBoxClicked
                     Return 0
                  ENDIF

Evento FORM ON KEY ESCAPE ACTION

Enviado: 12 Set 2016 12:44
por Toledo
NiltonGM escreveu:Deu erro, o comando ficou assim:
_SetOnCheckBoxClicked("Grid_Notas", "Main", {main_OnCheckBoxClicked()})
Amigo, você incluiu a função _SetOnCheckBoxClicked() (linhas 16 a 20 do meu código na mensagem anterior) no seu programa?

Outra, "Grid_Notas" está mesmo no formulário "Main"?

Abraços,

Evento FORM ON KEY ESCAPE ACTION

Enviado: 12 Set 2016 13:30
por Claudio Soto
Poner así:

Código: Selecionar todos

 k:= GetControlIndex ("GridName", "FormName")
 _HMG_SYSDATA [ 40 ] [ k ] [ 46 ] := {|| OnCheckBoxClicked_proc() }

Evento FORM ON KEY ESCAPE ACTION

Enviado: 12 Set 2016 14:04
por NiltonGM
Foi isso aí Toledo, não copiei o código todo, agora funcionou dos dois jeitos, do seu e do Claudio Soto.
Obrigado ao dois feras!

Evento FORM ON KEY ESCAPE ACTION

Enviado: 12 Set 2016 14:20
por Claudio Soto
Toledo escreveu:Nilton, não testei, mas acho que vai funcionar:

Código: Selecionar todos

#include <hmg.ch>

Function Main

   SET TOOLTIPSTYLE BALLOON

   Load Window Main
   ON KEY ESCAPE OF Main ACTION Main.Release
   _SetOnCheckBoxClicked("Grid_1", "Main", {main_OnCheckBoxClicked()})
   Center Window Main
   Activate Window Main

Return


Function _SetOnCheckBoxClicked(cControlName, cParentForm, bActionCheckBox)
Local i
i := GetControlIndex  ( cControlName, cParentForm )
_HMG_SYSDATA [ 40 ] [ i ] [ 46 ] := bActionCheckBox
Return Nil
Obs1.: o terceiro parâmetro desta função _SetOnCheckBoxClicked() tem que estar entre { } (linha 9 do código acima)
Obs2.: este função _SetOnCheckBoxClicked() só vai funcionar (se funcionar, não testei) somente com HMG. Minigui Extended não.

Abraços,
Perdón Toledo, no me di cuenta y postee una solución idéntica a la tuya.
Y falha nosa, deveria ter lido todas as mensagem.

Evento FORM ON KEY ESCAPE ACTION

Enviado: 12 Set 2016 14:40
por Toledo
Claudio Soto escreveu:Perdón Toledo, ...
Dr. Claudio, não precisa pedir perdão, é um grande prazer para mim saber que minha solução e a sua foram idênticas.

Abraços,

Evento FORM ON KEY ESCAPE ACTION

Enviado: 24 Abr 2019 11:35
por JAIR RANGEL
Bom dia!

Achei melhor não abrir outro post, pois a minha dúvida tem tudo a ver com o post corrente. Segue a mesma linha de ação...

Testei o código acima e realmente a solução do Toledo e do Dr Cláuido funcionam a contento.

No entanto, eu não estou conseguindo configurar o evento ON CHECKBOXCLICKED - Eu utilizo a IDE para montar os forms e os controles.

O que faço é exibir no Grid_1 os "Titulos Abertos" para serem "baixados" e possibilitar que o Operador marque os títulos selecionados para a devida baixa.

O incremento do CheckBox no Grid_1 funciona na boa:

Código: Selecionar todos

FormBaixarTitulo.Grid_1.CheckBoxEnabled:=.T.                             // Incrementa CheckBox no Grid_1
Mas ao selecionar os CheckBox a função de usuário não é executada!

Já tentei de algumas formas essa configuração:

Código: Selecionar todos

 ON CHECKBOXCLICKED OF GRID_1 ACTION TOTAL_TITULOS_PAGAR_102()
 ONCHECKBOXCLICKED MSGINFO("CHEGUEI AQUI NO TOTAL_TITULOS_PAGAR_102()")
 ON CHECKBOXCLICKED CONTROL Grid_1 OF FormBaixarTitulo ACTION MSGINFO("CHEGUEI AQUI NO TOTAL_TITULOS_PAGAR_102()")
 ON CHECKBOXCLICKED MSGINFO("CHEGUEI AQUI NO TOTAL_TITULOS_PAGAR_102()")
Acredito ser coisa simples o que está faltando, mas.....

Eu uso HMG3.4.3 32bits - IDE ANSI

Evento FORM ON KEY ESCAPE ACTION

Enviado: 25 Abr 2019 09:35
por asimoes
JAIR RANGEL escreveu:ON CHECKBOXCLICKED OF GRID_1 ACTION TOTAL_TITULOS_PAGAR_102()
Tenta: ON CHECKBOXCLICKED OF GRID_1 ACTION {|| TOTAL_TITULOS_PAGAR_102() }

Evento FORM ON KEY ESCAPE ACTION

Enviado: 25 Abr 2019 09:39
por asimoes
O exemplo está na pasta \MiniGUI\SAMPLES\BASIC\CheckBox_Grid

Código: Selecionar todos

 @ 50,50 GRID Grid_1 ;
     WIDTH  504 ;
     HEIGHT 328 ;
     HEADERS a_head ;
     WIDTHS a_width ;
     ITEMS a_Items ;
     VALUE {1,4,6} ;
     TOOLTIP "Grid with Checkboxes" ;
     DYNAMICBACKCOLOR { bColor, bColor } ;
     MULTISELECT ;
     CHECKBOXES ;
     ON CHECKBOXCLICKED { |nSpace| checkboxesRefresh(nSpace) }
Ops na documentação não tem o ACTION

Evento FORM ON KEY ESCAPE ACTION

Enviado: 25 Abr 2019 10:36
por JAIR RANGEL
Bom dia, Asimoes!

Com essa nova tentativa também não rolou. Nem compilou. Exibiu o seguinte erro:

Syntax error at:

Que osso...

Evento FORM ON KEY ESCAPE ACTION

Enviado: 25 Abr 2019 11:24
por JAIR RANGEL
Tentei todas as alternativas abaixo e nada funciona:

Código: Selecionar todos

//   ON CHECKBOXCLICKED OF GRID_1 ACTION TOTAL_TITULOS_PAGAR_102()
//   ONCHECKBOXCLICKED MSGINFO("CHEGUEI AQUI NO TOTAL_TITULOS_PAGAR_102()")
//   ON CHECKBOXCLICKED CONTROL Grid_1 OF FormBaixarTitulo ACTION MSGINFO("CHEGUEI AQUI NO TOTAL_TITULOS_PAGAR_102()")
//   ON CHECKBOXCLICKED("CHEGUEI AQUI NO TOTAL_TITULOS_PAGAR_102()")
//   ON CHECKBOXCLICKED MSGINFO("CHEGUEI AQUI NO TOTAL_TITULOS_PAGAR_102()")
//   ON CHECKBOXCLICKED OF GRID_1 ACTION {|| TOTAL_TITULOS_PAGAR_102() }
//   ON CHECKBOXCLICKED OF GRID_1 {|| TOTAL_TITULOS_PAGAR_102() }
//   ONCHECKBOXCLICKED GRID_1 OFF FormBaixarTitulo ACTION TOTAL_TITULOS_PAGAR_102()
//   FormBaixarTitulo.Grid_1.ONCHECKBOXCLICKED:= {|| TOTAL_TITULOS_PAGAR_102()}
//   ON CHECKBOXCLICKED( {|| TOTAL_TITULOS_PAGAR_102()} )
//   ON CHECKBOXCLICKED( {TOTAL_TITULOS_PAGAR_102()} )
//   FormBaixarTitulo.Grid_1.ONCHECKBOXCLICKED( {|| TOTAL_TITULOS_PAGAR_102()} )
//   ON CHECKBOXCLICKED(TOTAL_TITULOS_PAGAR_102())
//   FormBaixarTitulo.Grid_1.ONCHECKBOXCLICKED(TOTAL_TITULOS_PAGAR_102())
//   ON CHECKBOXCLICKED OF GRID_1 ACTION TOTAL_TITULOS_PAGAR_102()
//   ON CHECKBOXCLICKED { |nSpace| TOTAL_TITULOS_PAGAR_102(nSpace) }
//   ON CHECKBOXCLICKED { || TOTAL_TITULOS_PAGAR_102() }
//   ON CHECKBOXCLICKED { MSGINFO("CHEGUEI AQUI NO TOTAL_TITULOS_PAGAR_102()") }
//   SET ONCHECKBOXCLICKED { MSGINFO("CHEGUEI AQUI NO TOTAL_TITULOS_PAGAR_102()") }
//   SET CHECKBOXCLICKED ON { MSGINFO("CHEGUEI AQUI NO TOTAL_TITULOS_PAGAR_102()") }
//   SET ON CHECKBOXCLICKED { MSGINFO("CHEGUEI AQUI NO TOTAL_TITULOS_PAGAR_102()") }
//    ON CHECKBOXCLICKED MSGINFO("CHEGUEI AQUI NO TOTAL_TITULOS_PAGAR_102()")
Eu trabalho com a IDE, por tanto, crio o Grid_1 dentro do Form. Não escrevo na unha. Não tem como...
E acho que é ai o problema.
No exemplo da pasta \Samples funciona na boa, mas o Grid é criado na unha.
Esse controle não ficou bem resolvido dentro da IDE.
É a conclusão que cheguei...

Abraço a todos do Grupo!