Hola a todos,
驴Es posible capturar/interceptar la pulsaci贸n de la tecla ESC en un DIALOG?
Gracias,
Un Saludo
Carlos G.
FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home
Hola a todos,
驴Es posible capturar/interceptar la pulsaci贸n de la tecla ESC en un DIALOG?
Gracias,
Un Saludo
Carlos G.
FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home
LOCAL nKey := VK_RETURN
REDEFINE BUTTONBMP oSaida ID 302 OF oDlgGrava ;
RESOURCE "154" TEXTRIGHT ;
ACTION( ( nKey := VK_ESCAPE, lGravacao := .F., oDlgGrava:End() ) ) CANCEL
IF nKey = VK_ESCAPE .OR. .NOT. lGravacao // := .F.
SELECT( DBCADPROPO ) // CADASTRO DE PROPOSTAS
SET ORDER TO 01
GO TOP
oLbx:Refresh()
lGravacao := .F.
RETURN NIL
ENDIF
DO CASE
CASE nKey == VK_ESCAPE .OR. GetKeyState( VK_ESCAPE )
lConfirma := .F.
ENDCASE #define DLGC_WANTALLKEYS 4
REDEFINE BUTTON oBtn[ 1 ] ID 635 OF oMap30;
ACTION( pPR_A_COD := TMP1, ;
TESTE2( oWnd, oAgen, oMap30, pPR_A_COD ) )
oBtn[ 1 ]:bKeyDown := {| nKey | IF( nKey = VK_ESCAPE, ( Ver_Tecla1() ), NIL ) }
oBtn[ 1 ]:nDlgCode := DLGC_WANTALLKEYS
FUNCTION Main()
LOCAL oDlg
DEFINE DIALOG oDlg
ACTIVATE DIALOG oDlg CENTERED VALID SAIDA( oDlg )
FUNCTION SAIDA( oDlg )
IF getkeystate( VK_ESCAPE )
msgstop( "Estou encerrando pela tecla ESC !!!" )
ELSE
MsgInfo( "cerrado de otra forma" )
ENDIF
RETURN .T.Carlos,
ACTIVATE DIALOG oDlg CENTERED
MsgInfo( oDlg:nResult )
nResult vale 2 cuando se ha cancelado el di谩logo
Gracias Karinha.
Seguir茅 las indicaciones de Antonio y adaptar茅 la funci贸n a mis necesidades.
Saludos,
Un Saludo
Carlos G.
FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home
Antonio Linares wrote:Carlos,
ACTIVATE DIALOG oDlg CENTERED
MsgInfo( oDlg:nResult )
nResult vale 2 cuando se ha cancelado el di谩logo
#include "FiveWin.ch"
#include "constant.ch"
//----------------------------------------------------------------------------//
function My_MsgList( aData, cTitle, nTop, nLeft, nBottom, nRight, cBtnTitle, nItem, lCancel, cCapCan, oFont )
聽 聽//LOCAL oFont, 聽 聽13/07/2021
聽 聽Local lKillOfont := .F. 聽 聽 聽// 13/07/2021
聽 聽LOCAL oLst, oBtnClose1, oBtnClose2
聽 聽LOCAL nCol1, nRow, nCol2, oDlg, nWidth, nHeight
聽 聽DEFAULT nBottom 聽 := 13,;
聽 聽 聽 聽 聽 聽nRight 聽 聽:= 59.5,;
聽 聽 聽 聽 聽 聽cTitle 聽 聽:= "Array list", ;
聽 聽 聽 聽 聽 聽cBtnTitle := "&OK", ;
聽 聽 聽 聽 聽 聽cCapCan 聽 := "&CANCEL",;
聽 聽 聽 聽 聽 聽nItem 聽 聽 := 聽1, ;
聽 聽 聽 聽 聽 聽lCancel 聽 := .F.
聽 聽nWidth = 聽Max( nRight * DLG_CHARPIX_W, 180 )
聽 聽nHeight = nBottom * DLG_CHARPIX_H
聽 聽// 13/07/2021
聽 聽If oFont == nil
聽 聽 聽 聽DEFINE FONT oFont NAME GetSysFont() SIZE 0, -8 聽
聽 聽 聽 聽lKillOfont := .T.
聽 聽EndIF
聽 聽// 13/07/2021
聽 聽//DEFINE FONT oFont NAME GetSysFont() SIZE 0, -8 13/07/2021
聽 聽DEFINE DIALOG oDlg SIZE nWidth, nHeight PIXEL;
聽 聽 聽 聽 聽 TITLE cTitle FONT oFont ;
聽 聽 聽 聽 聽 STYLE nOr(WS_POPUP, WS_CAPTION, WS_BORDER, WS_THICKFRAME, WS_CLIPCHILDREN )
聽 聽oDlg:lTruePixel := .f.
聽 聽@ 4, 3 LISTBOX oLst VAR nItem ITEMS aData OF oDlg PIXEL SIZE nWidth / 2 - 4, nHeight / 2 - 20
聽 聽oLst:bLDblClick := {|| oDlg:End( IDOK ) }
聽 聽IF lCancel
聽 聽 聽 @ 聽nHeight / 2 - 15, nWidth / 2 - 41 BUTTON oBtnClose1 PROMPT cCapCan SIZE 36, 13 PIXEL ;
聽 聽 聽 聽 聽ACTION (nItem := 0, oDlg:End()) UPDATE CANCEL OF oDlg
聽 聽 聽 聽 聽//ACTION (nItem := 0, oDlg:End()) UPDATE 聽 聽 聽 13/07/2021
聽 聽ENDIF
聽 聽@ nHeight / 2 - 15, If( lCancel, 5, nWidth / 2 - 41 ) BUTTON oBtnClose2 PROMPT cBtnTitle DEFAULT SIZE 36, 13 PIXEL ;
聽 聽 聽 ACTION oDlg:End( IDOK ) UPDATE OF oDlg
聽 聽oDlg:bResized = { | nType, nWidth, nHeight | oLst:SetSize( nWidth - 8, nHeight - 40 ),;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 nRow := nHeight - 30,;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 nCol2 := 聽nWidth - 82,;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 If( lCancel,;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 ( nCol1 := nWidth - 82,;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oBtnClose1:Move( nRow, nCol1 ),;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 nCol2 := 10 ), ),;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oBtnClose2:Move( nRow, nCol2 ),;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oLst:Refresh(), oDlg:Refresh() }
聽 聽ACTIVATE DIALOG oDlg CENTERED
聽 聽// 13/07/2021
聽 聽If ValType( oDlg:nResult ) == "N"
聽 聽 聽 聽If oDlg:nResult = 2
聽 聽 聽 聽 聽 聽nItem := 0
聽 聽 聽 聽EndIf
聽 聽EndIf
聽 聽// 13/07/2021
聽 聽// 13/07/2021
聽 聽If lKillOfont
聽 聽 聽 聽oFont:End()
聽 聽EndIf
聽 聽// 13/07/2021
RETURN nItemUn Saludo
Carlos G.
FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home
Muy bien
// \SAMPLES\MSGLIST1.PRG
#Include "FiveWin.ch"
FUNCTION Main()
LOCAL aData := {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }
LOCAL cTitle, nTop, nLeft, nBottom, nRight, cBtnTitle, cCampo
oaMsgList( aData, cTitle, nTop, nLeft, nBottom, nRight, cBtnTitle, cCampo )
RETURN NIL
FUNCTION oaMsgList( aData, cTitle, nTop, nLeft, nBottom, nRight, cBtnTitle, ;
cCampo )
LOCAL x, nItem := 0, nAlt, nLarg := 0, oFont, oDlg, oLst, oBtnClose
if aData == nil .or. len(aData) == 0
MsgStop("Os par芒metros n茫o foram passados corretamente para o oaMsgList()","Aten莽茫o")
RETURN nItem
endif
nAlt:=len( aData )
for x=1 to nAlt
nLarg:=max( nLarg, len( aData[x] ) )
next
// Para limitar a altura da janela.
nAlt := iif( nAlt > 50, 50, nAlt )
DEFAULT cTitle := "Selecione", nTop:=9, nLeft:=9, nBottom:=80+(nAlt*12), ;
nRight := max( (len(cTitle)*12)+50, 50+(nLarg*12) ), ;
cBtnTitle := "&Confirme", cCampo := ""
nItem := IIF( .NOT. Empty( cCampo ), aScan( aData, cCampo ), 1 )
SetBalloon( .T. ) // Balloon shape required for tooltips
SkinButtons()
DEFINE FONT oFont NAME GetSysFont() SIZE 0,-8
DEFINE DIALOG oDlg FROM nTop,nLeft TO nBottom,nRight ;
TITLE cTitle FONT oFont ;
STYLE nOr( WS_POPUP, WS_CAPTION, WS_BORDER, WS_THICKFRAME, ;
WS_MAXIMIZEBOX) COLORS CLR_BLACK, CLR_WHITE ;
TRANSPARENT PIXEL
@ 004,003 LISTBOX oLst VAR nItem ITEMS aData OF oDlg SIZE 100,100 Pixel
oLst:bLDblClick := {|| oDlg:End() }
@ 078,176 BUTTON oBtnClose PROMPT cBtnTitle DEFAULT SIZE 036,013 ;
ACTION oDlg:End() Pixel CANCEL
oDlg:bResized := {|| oLst:SetSize( oDlg:nWidth() - 27, oDlg:nHeight() - iif(LargeFonts(), 89, 79) ),;
oBtnClose:nTop := oDlg:nHeight() - iif(LargeFonts(), 79, 69),;
oBtnClose:nLeft := oDlg:nWidth() - 94,;
oLst:Select(nItem), oDlg:Refresh() }
ACTIVATE DIALOG oDlg CENTERED ON INIT ( Eval(oDlg:bResized) )
oFont:End()
RETURN nItem
// Fin / EndACTIVATE DIALOG oDlg ;
VALID(!GETKEYSTATE( 27 ))