Evento FORM ON KEY ESCAPE ACTION
Moderador: Moderadores
Evento FORM ON KEY ESCAPE ACTION
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.
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.
Nilton Medeiros
nilton@sistrom.com.br
nilton@sistrom.com.br
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Evento FORM ON KEY ESCAPE ACTION
Amigo, coloque o comando no PRG:
Abraços,
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
ReturnToledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Evento FORM ON KEY ESCAPE ACTION
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:

Agradeço sua ajuda 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.
Nilton Medeiros
nilton@sistrom.com.br
nilton@sistrom.com.br
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Evento FORM ON KEY ESCAPE ACTION
Nilton, não testei, mas acho que vai funcionar:
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,
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 NilObs2.: este função _SetOnCheckBoxClicked() só vai funcionar (se funcionar, não testei) somente com HMG. Minigui Extended não.
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Evento FORM ON KEY ESCAPE ACTION
Oi Toledo,
Deu erro, o comando ficou assim:
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
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
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
Nilton Medeiros
nilton@sistrom.com.br
nilton@sistrom.com.br
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Evento FORM ON KEY ESCAPE ACTION
Amigo, você incluiu a função _SetOnCheckBoxClicked() (linhas 16 a 20 do meu código na mensagem anterior) no seu programa?NiltonGM escreveu:Deu erro, o comando ficou assim:
_SetOnCheckBoxClicked("Grid_Notas", "Main", {main_OnCheckBoxClicked()})
Outra, "Grid_Notas" está mesmo no formulário "Main"?
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
-
Claudio Soto
- Colaborador

- Mensagens: 566
- Registrado em: 27 Ago 2012 12:31
- Localização: Uruguay
- Contato:
Evento FORM ON KEY ESCAPE ACTION
Poner así:
Código: Selecionar todos
k:= GetControlIndex ("GridName", "FormName")
_HMG_SYSDATA [ 40 ] [ k ] [ 46 ] := {|| OnCheckBoxClicked_proc() }
Evento FORM ON KEY ESCAPE ACTION
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!
Obrigado ao dois feras!
Nilton Medeiros
nilton@sistrom.com.br
nilton@sistrom.com.br
-
Claudio Soto
- Colaborador

- Mensagens: 566
- Registrado em: 27 Ago 2012 12:31
- Localização: Uruguay
- Contato:
Evento FORM ON KEY ESCAPE ACTION
Perdón Toledo, no me di cuenta y postee una solución idéntica a la tuya.Toledo escreveu:Nilton, não testei, mas acho que vai funcionar:
Obs1.: o terceiro parâmetro desta função _SetOnCheckBoxClicked() tem que estar entre { } (linha 9 do código acima)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
Obs2.: este função _SetOnCheckBoxClicked() só vai funcionar (se funcionar, não testei) somente com HMG. Minigui Extended não.
Abraços,
Y falha nosa, deveria ter lido todas as mensagem.
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Evento FORM ON KEY ESCAPE ACTION
Dr. Claudio, não precisa pedir perdão, é um grande prazer para mim saber que minha solução e a sua foram idênticas.Claudio Soto escreveu:Perdón Toledo, ...
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
- JAIR RANGEL
- Usuário Nível 3

- Mensagens: 178
- Registrado em: 19 Jul 2005 16:01
- Localização: RIO DE JANEIRO
- Contato:
Evento FORM ON KEY ESCAPE ACTION
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:
Mas ao selecionar os CheckBox a função de usuário não é executada!
Já tentei de algumas formas essa configuração:
Acredito ser coisa simples o que está faltando, mas.....
Eu uso HMG3.4.3 32bits - IDE ANSI
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
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()")
Eu uso HMG3.4.3 32bits - IDE ANSI
MINIGUI + HARBOUR + BRMAKE + CDX
CLIPPER 5.2E + VISUALLIB 2 + BLINKER
CLIPPER 5.2E + VISUALLIB 2 + BLINKER
Evento FORM ON KEY ESCAPE ACTION
Tenta: ON CHECKBOXCLICKED OF GRID_1 ACTION {|| TOTAL_TITULOS_PAGAR_102() }JAIR RANGEL escreveu:ON CHECKBOXCLICKED OF GRID_1 ACTION TOTAL_TITULOS_PAGAR_102()
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Evento FORM ON KEY ESCAPE ACTION
O exemplo está na pasta \MiniGUI\SAMPLES\BASIC\CheckBox_Grid
Ops na documentação não tem o ACTION
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) }
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
- JAIR RANGEL
- Usuário Nível 3

- Mensagens: 178
- Registrado em: 19 Jul 2005 16:01
- Localização: RIO DE JANEIRO
- Contato:
Evento FORM ON KEY ESCAPE ACTION
Bom dia, Asimoes!
Com essa nova tentativa também não rolou. Nem compilou. Exibiu o seguinte erro:
Syntax error at:
Que osso...
Com essa nova tentativa também não rolou. Nem compilou. Exibiu o seguinte erro:
Syntax error at:
Que osso...
MINIGUI + HARBOUR + BRMAKE + CDX
CLIPPER 5.2E + VISUALLIB 2 + BLINKER
CLIPPER 5.2E + VISUALLIB 2 + BLINKER
- JAIR RANGEL
- Usuário Nível 3

- Mensagens: 178
- Registrado em: 19 Jul 2005 16:01
- Localização: RIO DE JANEIRO
- Contato:
Evento FORM ON KEY ESCAPE ACTION
Tentei todas as alternativas abaixo e nada funciona:
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!
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()")
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!
MINIGUI + HARBOUR + BRMAKE + CDX
CLIPPER 5.2E + VISUALLIB 2 + BLINKER
CLIPPER 5.2E + VISUALLIB 2 + BLINKER