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!