Page 1 of 1

Un get de fecha con consulta de calendario

Posted: Mon Dec 12, 2016 3:00 am
by lubin
Buenas noches

Una duda simple les tengo:
Queria consultarles como se usa el Get de una variable tipo fecha donde el Get tenga un botón para mostrar un calendario y seleccionar una fecha
como debo hacerlo, con que clase ese posible ?

Gracias de antemano

Lubin

Re: Un get de fecha con consulta de calendario

Posted: Mon Dec 12, 2016 4:28 am
by FranciscoA
Hola Lubin.
Esta function Calend() la tomé de aqui del foro (no recuerdo de quien es), con algunos retoques, pero me ha funcionado hasta el momento.
Aqui te la dejo.

Code: Select all

  REDEFINE GET oFecha  VAR dFecha  ID 202 OF oDlg ;
           ACTION Calend(@dFecha,Self,2)  BITMAP "FIND" ;
           VALID !empty(dFecha) 
  oFecha:lBtnTransparent := .t. 


//-------------------------//Llama a Classe TCalend
FUNCTION Calend( dFecha, oGet, nSide )
LOCAL oDlg, oCal, aRect, nPos
LOCAL lOk := .f.

DEFAULT  nSide := 1  // posic derecha

aRect := GetWndRect( oGet:hWnd )

DEFINE DIALOG oDlg FROM 0,0 TO 145,224 PIXEL TITLE "CALEND" // STYLE nor( WS_POPUP,WS_VISIBLE,WS_BORDER)
@-10,-20 CALENDAR oCal VAR dFecha OF oDlg PIXEL DAYSTATE SIZE 150,89 DBLCLICK (lOk:=.t.,oDlg:End())  
oCal:bKeyDown := {|nkey| IF( nKey = 13 .OR. nKey = 32, (lOk:=.t.,oDlg:End()), ) }
oDlg:oClient := oCal

if nSide == 1
   nPos :=aRect[2]
else
   nPos :=aRect[2]-(oDlg:nWidth-oGet:nWidth)
endif

ACTIVATE DIALOG oDlg ;
     ON INIT (oCal:show(),oDlg:Move(aRect[1] + oGet:nHeight + 4, nPos)) ;
     VALID IF( lOk .AND. ! GetKeyState( VK_ESCAPE ), (oGet:cText := dFecha, oGet:refresh(), .T. ), .t. )

RETURN NIL
 
Espero te sea util.
Saludos.

Re: Un get de fecha con consulta de calendario

Posted: Mon Dec 12, 2016 5:43 am
by lubin
Gracias Francisco, le dare una mirada

Re: Un get de fecha con consulta de calendario

Posted: Mon Dec 12, 2016 4:24 pm
by Armando
Lubin:

La clase en cuestión es la DatePicker

Aquí un ejemplo:

Code: Select all

#Include "DtPicker.ch"

....
....

        REDEFINE dtPicker aGets[01] VAR oHdr:FDE ID 101 OF oDlg UPDATE;
            VALID ValFde();
            MESSAGE "Fecha de emisión del comprobante"

 
Y en Recursos utilizas el control Date-Time

Saludos