Clipper On Line • Ver Tópico - Evento FORM ON KEY ESCAPE ACTION

Evento FORM ON KEY ESCAPE ACTION

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

Evento FORM ON KEY ESCAPE ACTION

Mensagempor NiltonGM » 11 Set 2016 18:55

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.
Nilton Medeiros
nilton@sistrom.com.br
Avatar de usuário

NiltonGM
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 393
Data de registro: 05 Jun 2014 23:47
Cidade/Estado: Caieiras/SP
Curtiu: 249 vezes
Mens.Curtidas: 24 vezes

Evento FORM ON KEY ESCAPE ACTION

Mensagempor Toledo » 11 Set 2016 21:36

Amigo, coloque o comando no PRG:

#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,
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
Avatar de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3038
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 263 vezes
Mens.Curtidas: 258 vezes

Evento FORM ON KEY ESCAPE ACTION

Mensagempor NiltonGM » 12 Set 2016 07:55

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:
ON CHECKBOXCLICKED OF GRID_x ACTION main_OnCheckBoxClicked()

???
Agradeço sua ajuda Toledo.
Nilton Medeiros
nilton@sistrom.com.br
Avatar de usuário

NiltonGM
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 393
Data de registro: 05 Jun 2014 23:47
Cidade/Estado: Caieiras/SP
Curtiu: 249 vezes
Mens.Curtidas: 24 vezes

Evento FORM ON KEY ESCAPE ACTION

Mensagempor Toledo » 12 Set 2016 09:13

Nilton, não testei, mas acho que vai funcionar:

#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,
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
Avatar de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3038
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 263 vezes
Mens.Curtidas: 258 vezes

Evento FORM ON KEY ESCAPE ACTION

Mensagempor NiltonGM » 12 Set 2016 11:50

Oi Toledo,

Deu erro, o comando ficou assim:
         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
               //   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
Avatar de usuário

NiltonGM
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 393
Data de registro: 05 Jun 2014 23:47
Cidade/Estado: Caieiras/SP
Curtiu: 249 vezes
Mens.Curtidas: 24 vezes

Evento FORM ON KEY ESCAPE ACTION

Mensagempor Toledo » 12 Set 2016 12:44

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,
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
Avatar de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3038
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 263 vezes
Mens.Curtidas: 258 vezes

Evento FORM ON KEY ESCAPE ACTION

Mensagempor Claudio Soto » 12 Set 2016 13:30

Poner así:
 k:= GetControlIndex ("GridName", "FormName")
_HMG_SYSDATA [ 40 ] [ k ] [ 46 ] := {|| OnCheckBoxClicked_proc() }
Saludos.
Dr. Claudio Soto
(Uruguay)
http://srvet.blogspot.com
Avatar de usuário

Claudio Soto
Colaborador

Colaborador
 
Mensagens: 555
Data de registro: 27 Ago 2012 12:31
Cidade/Estado: Uruguay
Curtiu: 35 vezes
Mens.Curtidas: 166 vezes

Evento FORM ON KEY ESCAPE ACTION

Mensagempor NiltonGM » 12 Set 2016 14:04

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!
Nilton Medeiros
nilton@sistrom.com.br
Avatar de usuário

NiltonGM
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 393
Data de registro: 05 Jun 2014 23:47
Cidade/Estado: Caieiras/SP
Curtiu: 249 vezes
Mens.Curtidas: 24 vezes

Evento FORM ON KEY ESCAPE ACTION

Mensagempor Claudio Soto » 12 Set 2016 14:20

Toledo escreveu:Nilton, não testei, mas acho que vai funcionar:

#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.
Saludos.
Dr. Claudio Soto
(Uruguay)
http://srvet.blogspot.com
Avatar de usuário

Claudio Soto
Colaborador

Colaborador
 
Mensagens: 555
Data de registro: 27 Ago 2012 12:31
Cidade/Estado: Uruguay
Curtiu: 35 vezes
Mens.Curtidas: 166 vezes

Evento FORM ON KEY ESCAPE ACTION

Mensagempor Toledo » 12 Set 2016 14:40

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,
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
Avatar de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3038
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 263 vezes
Mens.Curtidas: 258 vezes

Evento FORM ON KEY ESCAPE ACTION

Mensagempor JAIR RANGEL » 24 Abr 2019 11:35

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:
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:
 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
MINIGUI + HARBOUR + BRMAKE + CDX
CLIPPER 5.2E + VISUALLIB 2 + BLINKER
Avatar de usuário

JAIR RANGEL
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 177
Data de registro: 19 Jul 2005 16:01
Cidade/Estado: RIO DE JANEIRO
Curtiu: 1 vez
Mens.Curtidas: 2 vezes

Evento FORM ON KEY ESCAPE ACTION

Mensagempor asimoes » 25 Abr 2019 09:35

JAIR RANGEL escreveu:ON CHECKBOXCLICKED OF GRID_1 ACTION TOTAL_TITULOS_PAGAR_102()


Tenta: 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)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Evento FORM ON KEY ESCAPE ACTION

Mensagempor asimoes » 25 Abr 2019 09:39

O exemplo está na pasta \MiniGUI\SAMPLES\BASIC\CheckBox_Grid
 @ 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
â–º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)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Evento FORM ON KEY ESCAPE ACTION

Mensagempor JAIR RANGEL » 25 Abr 2019 10:36

Bom dia, Asimoes!

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
Avatar de usuário

JAIR RANGEL
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 177
Data de registro: 19 Jul 2005 16:01
Cidade/Estado: RIO DE JANEIRO
Curtiu: 1 vez
Mens.Curtidas: 2 vezes

Evento FORM ON KEY ESCAPE ACTION

Mensagempor JAIR RANGEL » 25 Abr 2019 11:24

Tentei todas as alternativas abaixo e nada funciona:
//   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!
MINIGUI + HARBOUR + BRMAKE + CDX
CLIPPER 5.2E + VISUALLIB 2 + BLINKER
Avatar de usuário

JAIR RANGEL
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 177
Data de registro: 19 Jul 2005 16:01
Cidade/Estado: RIO DE JANEIRO
Curtiu: 1 vez
Mens.Curtidas: 2 vezes

Próximo



Retornar para MiniGui

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 7 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro