Clipper On Line • Ver Tópico - Como fechar caixa de diálogo apenas clicando no OK

Como fechar caixa de diálogo apenas clicando no OK

Projeto Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

 

Como fechar caixa de diálogo apenas clicando no OK

Mensagempor porter » 03 Mai 2018 19:51

Olá pessoal,
Tenho aqui uma rotina para caixa de diálogo, ao clicar fora da caixa, a caixa fecha voltando para rotina anterior,
nessa rotina, foi criado um botão OK, como faço para essa caixa ser fechada, apenas se clicar nesse botão OK ?
Harbour 3.2.0dev - GTWVG
Obrigado.

FUNCTION DynWinDialog()
   LOCAL hDlg, aDlg, nStyle, cDlgIcon, cDlgProc, lOnTop, hMenu
    aDlg := Wvt_MakeDlgTemplate( 1, 16, 18, 40, { 4, 5, 5, 4 },  VERSION() + " " + hb_gtInfo( HB_GTI_VERSION ) + HB_EOL() )
   
    nStyle := WS_CHILD + WS_VISIBLE + WS_TABSTOP + ES_AUTOVSCROLL + ES_MULTILINE + ES_WANTRETURN + WS_BORDER  + WS_VSCROLL
   
   aDlg   := Wvt_AddDlgItem( aDlg,  1, 2, 15, 35, {}, ID_MLE       , "EDIT"   , nStyle, /* cText, nHelpId, nExStyle */ )
   
   nStyle := WS_CHILD + WS_VISIBLE + SS_ICON //+ SS_CENTERIMAGE
   aDlg   := Wvt_AddDlgItem( aDlg, 18, 2, 2, 6, {}, ID_ICO_VOUCH  , "STATIC" , nStyle, "" )
 
// BOTAO OK
   nStyle :=            WS_VISIBLE + WS_TABSTOP + BS_PUSHBUTTON           
   aDlg   := Wvt_AddDlgItem( aDlg, 17, 20, 1,  8, { 2, 1, 1 , 0 }, ID_BTN_OK, "BUTTON" , nStyle, "OK" )   
   cDlgProc    := "DynDlgProc"

// Modeless Dialog
    hDlg := Wvt_CreateDialog( aDlg, lOnTop, cDlgProc, cDlgIcon, /*nTimerTicks*/, hMenu )
   
FUNCTION DynDlgProc( hDlg, nMsg, wParam, lParam )
   SWITCH nMsg
   // COR DA FONTE
   CASE WM_CTLCOLOREDIT
      IF Wvg_GetDlgItem( hDlg, ID_MLE ) == lParam
         Wvg_SetTextColor( wParam, RGB(0    ,0  , 0   ) )  // COR DA FONTE
         Wvg_SetBkColor  ( wParam, RGB( 255 ,178, 102 ) )  // COR DE FUNDO
         RETURN 1
      ENDIF
   CASE WM_INITDIALOG
      Wvg_SetDlgItemText( hDlg, ID_MLE, GetEditText() )

   CASE WM_DESTROY
      Wvg_GetDlgItemText( hDlg, ID_MLE )
   ENDSWITCH
porter
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1024
Data de registro: 10 Dez 2009 15:44
Cidade/Estado: OLIMPIA-SP
Curtiu: 3 vezes
Mens.Curtidas: 23 vezes

Como fechar caixa de diálogo apenas clicando no OK

Mensagempor Claudio Soto » 03 Mai 2018 23:09

Nunca usé las gtxxx pero seria algo asi:

Wvg_DestroyWindow (hDlg)

Caso no este implementada la función DestroyWindow del api de Windows es muy fácil implementarlo desde C.
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

Como fechar caixa de diálogo apenas clicando no OK

Mensagempor JoséQuintas » 04 Mai 2018 01:01

porter escreveu:nessa rotina, foi criado um botão OK, como faço para essa caixa ser fechada, apenas se clicar nesse botão OK ?Harbour 3.2.0dev - GTWVG


Segundo exemplo:

   IF nInfo == 2
      // Modal Dialog
      hDlg := wvt_DialogBox( aDlg, @DynDlgProc(), hb_gtInfo( HB_GTI_WINHANDLE ) )
   ELSE
      // Modeless Dialog
      hDlg := wvt_CreateDialog( aDlg, lOnTop, @DynDlgProc(), cDlgIcon, nTimerTicks, hMenu )
   ENDIF
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18152
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Como fechar caixa de diálogo apenas clicando no OK

Mensagempor porter » 04 Mai 2018 11:23

Obrigado Claudio Soto e JoseQuintas, agora deu certo.
porter
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1024
Data de registro: 10 Dez 2009 15:44
Cidade/Estado: OLIMPIA-SP
Curtiu: 3 vezes
Mens.Curtidas: 23 vezes

Como fechar caixa de diálogo apenas clicando no OK

Mensagempor porter » 04 Mai 2018 14:09

Quando executo a caixa de diálogo e fecho, em outras partes do sistema, quando teclo a letra "S" por exemplo em um Tbrowse,
está retornando 287, quando fechar, tenho que desabilitar algo ?
IF LASTKEY() = 83  // Letra "S", está retornando 287
    .........
ENDIF
porter
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1024
Data de registro: 10 Dez 2009 15:44
Cidade/Estado: OLIMPIA-SP
Curtiu: 3 vezes
Mens.Curtidas: 23 vezes




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 5 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