Se teclar <enter> não sai. Mas volta p/ edição quando teclar qualquer outra tecla.
No caso vc terá que criar sua função de validação da data, reinventar a roda...
Saudações,
Itamar M. Lins Jr.
Moderador: Moderadores




Código: Selecionar todos
PROCEDURE SuaProc
LOCAL bError := ErrorBlock( {|e| Break(e) } ), oErr, GetList := {}
BEGIN SEQUENCE
@x, y SAY 'Abc: ' GET .....
READ
HB_Alert( { " Tudo Ok " } )
RECOVER USING oErr
HB_Alert( { "Ocorreu o erro : " + oErr:subSystem + "/" + Ltrim(Str(oErr:subCode)), "DOS Error " + LTrim(Str(oErr:osCode)), "Descricao: " + oErr:description, "Operacao: " + oErr:Operation, "Arquivo: " + oErr:fileName },{ 'Ok' },"W+/B", 15 )
END SEQUENCE
ErrorBlock( bError )
RETURN

Código: Selecionar todos
hb_ThreadStart( || SeuModulo() )
Código: Selecionar todos
FUNCTION SeuModulo()
LOCAL dData := Date()
hb_gtReload( "GTWVT" )
CLS
@ 12, 20 SAY "Data:" GET dData
READ
RETURN NIL
Código: Selecionar todos
@echo off
SET MG_BCC=\Borland\BCC582
SET MG_ROOT=\MiniGuiCore
rem Makes all MiniGui libraries from folders under SOURCE folder.
@echo.
@echo MiniGui.lib
@echo.
call MakeLib.Bat %1 %2 %3 %4 %5 %6 %7 %8 %9
@echo.
@echo dbginit.obj
@echo.
call MakeObj.Bat %1 %2 %3 %4 %5 %6 %7 %8 %9
@echo.
@echo PropGrid.lib
@echo.
cd PropGrid
call MakeLib.bat %1 %2 %3 %4 %5 %6 %7 %8 %9
cd ..
@echo.
@echo PropSheet.lib
@echo.
cd PropSheet
call MakeLib.bat %1 %2 %3 %4 %5 %6 %7 %8 %9
cd ..
@echo.
@echo TsBrowse.lib
@echo.
cd TsBrowse
call MakeLib.bat %1 %2 %3 %4 %5 %6 %7 %8 %9
cd ..
@echo.
@echo HMG_QHTM.lib
@echo.
cd QHTM
call MakeLib.bat %1 %2 %3 %4 %5 %6 %7 %8 %9
cd ..
@echo.
@echo WinReport.lib
@echo.
cd WinReport
call MakeLib.Bat %1 %2 %3 %4 %5 %6 %7 %8 %9
cd ..
:END



Código: Selecionar todos
METHOD Reader( oMenu, aMsg ) CLASS HBGetList
LOCAL oGet := ::oGet
LOCAL nRow
LOCAL nCol
#ifdef HB_COMPAT_C53
LOCAL nOldCursor
LOCAL nKey
#endif
#ifdef HB_COMPAT_C53
IF ::nLastExitState == GE_SHORTCUT .OR.;
::nLastExitState == GE_MOUSEHIT .OR.;
::GetPreValidate( oGet, aMsg )
#else
IF ::GetPreValidate( oGet, aMsg )
#endif
::ShowGetMsg( oGet, aMsg )
::nHitCode := 0
::nLastExitState := 0
oGet:setFocus()
DO WHILE oGet:exitState == GE_NOEXIT .AND. !::lKillRead
* Aqui eu que comentei
* IF oGet:typeOut
* oGet:exitState := GE_ENTER
* ENDIF
// Aqui ja estava comentado no fonte original
// IF oGet:buffer == NIL
// oGet:exitState := GE_ENTER
// ENDIF
// Não entrava nesse laço abaixo, na segunda vez, porque nunca era GE_NOEXIT e ficava em um laço infinito, causando o travamento
DO WHILE oGet:exitState == GE_NOEXIT .AND. !::lKillRead
#ifdef HB_COMPAT_C53
SetCursor( iif( ::nSaveCursor == SC_NONE, SC_NORMAL, ::nSaveCursor ) )
* Eu comentei
* nKey := Inkey( 0 )
* Eu implementei, descartando os clicks, aceitando apenas letras, números, etc... que no momento é o que interessa...
nKey := 0
WHILE .T.
nKey := Inkey( 0 )
IF nKey > 0 .AND. nKey <= 255
EXIT
END
END
* Até aqui
SetCursor( SC_NONE )
::GetApplyKey( nKey, oGet, oMenu, aMsg )
#else
::GetApplyKey( Inkey( 0 ), oGet, oMenu, aMsg )
#endif
nRow := Row()
nCol := Col()
::ShowGetMsg( oGet, aMsg )
SetPos( nRow, nCol )
ENDDO
#ifdef HB_COMPAT_C53
IF !::nLastExitState == GE_SHORTCUT .AND. ;
!::nLastExitState == GE_MOUSEHIT .AND. ;
!::GetPostValidate( oGet, aMsg )
#else
IF !::GetPostValidate( oGet, aMsg )
#endif
oGet:exitState := GE_NOEXIT
ENDIF
ENDDO
#ifdef HB_COMPAT_C53
nRow := Row()
nCol := Col()
nOldCursor := SetCursor()
#endif
oGet:killFocus()
#ifdef HB_COMPAT_C53
SetCursor( nOldCursor )
SetPos( nRow, nCol )
#endif
::EraseGetMsg( aMsg )
ENDIF
RETURN Self

Código: Selecionar todos
SET SCOREBOARD OFF
SET STATUS OFF

Só aproveitando pra "cutucar" o povo.tive um problema parecido, resolvi com LOCAL GetList:={}