MiniGui x Botão "X"

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Hasse
Usuário Nível 4
Usuário Nível 4
Mensagens: 820
Registrado em: 19 Out 2004 10:30
Localização: Jaraguá do Sul - SC

MiniGui x Botão "X"

Mensagem por Hasse »

Boa tarde colegas.

No Aplicativo em MiniGui 3.3.0, tenho:

Código: Selecionar todos

DEFINE WINDOW TEMPLATE ;
   AT n_X1, n_Y1 ;
   WIDTH n_Lrg HEIGHT n_Alt;
   TITLE PROG_TIT ;
   CHILD ;
   ON INTERACTIVECLOSE Sai_Sim_Nao()

   @ 12,15 LABEL label_1 WIDTH n_Lrg-20 HEIGHT 20 ;
      VALUE 'ConexÆo INATIVA' ;
      FONT 'Times New Roman' SIZE 14 ;
      FONTCOLOR BLUE

   @ 40,15 LABEL label_2 WIDTH n_Lrg-20 HEIGHT 20 ;
      VALUE '===============' ;
      FONT 'Times New Roman' SIZE 14 ;
      FONTCOLOR BLUE

   ON KEY ALT+F4  ACTION { || Sai_Sim_Nao( ), Fecha_Connect() }
   ON KEY ALT+F12 ACTION { || Sai_Sim_Nao( ), Fecha_Connect() }
   ON KEY F5      ACTION { || Baixa_Prescr() }
Segundo eu entendi as teclas ALT+F4 e ALT+F12 quando pressionadas desviam o processamento para a Função Sai_Sim_Nao()
O mesmo deveria acontecer ao clicar no Botão "X", pois o ON INTERACTIVECLOSE Sai_Sim_Nao() também deveria desviar o processamento para a Função Sai_Sim_Nao().
Entretanto, o Botão "X" aborta o aplicativo.

Onde está o erro ?
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

MiniGui x Botão "X"

Mensagem por Toledo »

Amigo, qual é o código da função Sai_Sim_Nao( )?

O código que você passou acima é de um arquivo FMG? E o tipo da janela é CHILD mesmo, então não é janela principal (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
Hasse
Usuário Nível 4
Usuário Nível 4
Mensagens: 820
Registrado em: 19 Out 2004 10:30
Localização: Jaraguá do Sul - SC

MiniGui x Botão "X"

Mensagem por Hasse »

Boa noite Toledo.

Postando os códigos na sequência natural. Primeiro parte do MAIN(), nas linhas que enviam para os Form's:

Código: Selecionar todos

   *
   LOAD WINDOW Form_0
   *
   LOAD WINDOW Form_1
   *
   ACTIVATE WINDOW Form_1, Form_0
   *
Segue a Fom_0.fmg:

Código: Selecionar todos

DEFINE WINDOW TEMPLATE ;
   AT 0,0 ;
   WIDTH 0 HEIGHT 0 ;
   TITLE PROG_TIT ;
   MAIN NOSHOW ;
   NOTIFYICON "FILESYS2.ico" ;
   NOTIFYTOOLTIP PROG_TIT ;
   ON NOTIFYCLICK IF( IsWindowVisible( hWnd ), Form_1.Hide, Form_1.Show ) ;

   DEFINE NOTIFY MENU OF Form_0
     BuildMenu()
   END MENU
   
END WINDOW

//// hMainWin:=WIN_N2P( Application.Handle )
Form_1.fmg:

Código: Selecionar todos

n_X1    := VAL( MASCARA1 )                   && Posição e Medidas da janela Windows 'Form_1.fmg'.
n_Y1    := VAL( MASCARA2 )
n_Lrg   := VAL( LINF )
n_Alt   := VAL( LSUP )
*
DEFINE WINDOW TEMPLATE ;
   AT n_X1, n_Y1 ;
   WIDTH n_Lrg HEIGHT n_Alt;
   TITLE PROG_TIT ;
   CHILD ;
   ON INTERACTIVECLOSE Sai_Sim_Nao()

   @ 12,15 LABEL label_1 WIDTH n_Lrg-20 HEIGHT 20 ;
      VALUE 'ConexÆo INATIVA' ;
      FONT 'Times New Roman' SIZE 14 ;
      FONTCOLOR BLUE

   @ 40,15 LABEL label_2 WIDTH n_Lrg-20 HEIGHT 20 ;
      VALUE '===============' ;
      FONT 'Times New Roman' SIZE 14 ;
      FONTCOLOR BLUE

   ON KEY ALT+F4  ACTION { || Sai_Sim_Nao( ), Fecha_Connect() }
   ON KEY ALT+F12 ACTION { || Sai_Sim_Nao( ), Fecha_Connect() }
   ON KEY F5      ACTION { || Baixa_Prescr() }

   DEFINE TIMER Timer_1 INTERVAL n_Interv_1 ACTION MudaLabel( l_Atualiza )
   
   DEFINE CONTEXT MENU
      *
      BuildMenu()
      *
   END MENU
   *
END WINDOW
*
FORM_1 := n_Width_ - 640
E finalizando, a Função Sair_Sim_Nao() completa:

Código: Selecionar todos

FUNCTION Sai_Sim_Nao(  )
   *
   STATIC l_First := .T.
   Local l_Ret := .T.
   *
   IF l_First = .T.                             && Verificar se o aplicativo está iniciando.
      l_First := .F.
      l_Ret   := .F.
   ELSEIF File( "Processando.Sim" )             && Verifica se o Importador está importando Prescrições.
      l_Ret := .F.
      MsgStop( "Texto 1", 'Texto 2' )
   ELSE
      DO EVENTS
      l_Ret := MsgYesNo( "*      Deseja encerrar o Programa      *"+CRLF+CRLF+"           BAIXAR  PRESCRIیES ?         ", "BAIXAR  PRESCRIیES" )
      IF l_Ret
         Fecha_Connect()
      ENDIF
   ENDIF
   *
RETURN( l_Ret )
Aqui observe que inseri a linha "MsgStop( "Texto 1", 'Texto 2' )" somente para ter a certeza de que realmente o processamento NÃO passava onde deveria.

A Linha "ELSEIF File( "Processando.Sim" ) && Verifica se o Importador está importando Prescrições." deve evitar que o aplicativo feche antes de terminar algum processo importante que não pode ser interrompido.

Como sugestão, se isto for possível, quando o Botão "X" fosse clicado, o processamento deveria retornar imediatamente. Uma pequena mensagem informando o ocorrido poderia ser apresentada, mas SEM interromper o processamento. O Encerramento do aplicativo só deve ser possível quando o valor da variável l_Ret for .T.

Acho que as informações acima ajudem.
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

MiniGui x Botão "X"

Mensagem por Toledo »

Amigo, segue em anexo um exemplo.

Fiz algumas alterações no Form_1 e na função Sai_Sim_Nao().

Abraços,
Anexos
botaoX.zip
(711.26 KiB) Baixado 86 vezes
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
Hasse
Usuário Nível 4
Usuário Nível 4
Mensagens: 820
Registrado em: 19 Out 2004 10:30
Localização: Jaraguá do Sul - SC

MiniGui x Botão "X"

Mensagem por Hasse »

Obrigado Toledo.

Ainda hoje pretendo me dedicar ao assunto.
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Responder