Page 1 of 1

Clase Calendario

Posted: Thu Jun 22, 2006 11:38 am
by Mike Serra
Hola Foro:

Mirad, tengo un problema muy raro, resulta que tengo un dialogo que cuando se abre no pasa nada, todo funciona correctamente, el problema esta que cuando se abre el dialogo y el puntero del raton está situado sobre el área del Calendario, me sale el siguiente error:

ERROR DESCRIPTION: ERROR BASE/1081 ARGUMENT ERROR: +

CALLED FROM TMICALENDARIO:LFUERA(0)
CALLED FROM TWINDOW:MOUSEMOVE(0)
CALLED FROM TWINDOW:HANDLEEVENT(0)
CALLED FROM TWINDOW:HANDLEEVENT(0)
CALLED FROM _FWH(0)
CALLED FROM WINRUN(0)
CALLED FROM TWINDOW:ACTIVATE(0)
CALLED FROM CREAPRIN(0)
CALLED FROM STDIDI(0)


Alguna ayuda?
:)

[/img]

Posted: Thu Jun 22, 2006 11:48 am
by Antonio Linares
Mike,

Que código hay en TMICALENDARIO:LFUERA() ?

Posted: Thu Jun 22, 2006 8:41 pm
by Mike Serra
Gracias Antonio! :)

La clase esta desarrollada por Rodrigo Soto y Bingen Ugaldebere, por si te sirve de algo. El Metodo

METHOD lFuera( nRow, nCol) CLASS TMiCalendario
Return iif( (nRow > (::nFila1 + 3) .and.;
nRow <= (::nFila2 - 3) .and.;
nCol > (::nCol1 + 3) .and.;
nCol <= (::nCol2 - 3) ), .f., .t.)

Constructor

METHOD New (nTop, nLeft, nWidth, nHeight, oWnd, oFont, nLANGUAGE ) CLASS TMiCalendario
DEFAULT nTop:=5, nLeft:=5,nWidth:=120,nHeight:=120 //Bingen
DEFAULT nLanguage := L_SPANISH

::nContador := 1
// Coordenadas de la region de dibujo.
::nTop := nTop
::nLeft := nLeft
::nBottom := ::nTop + nHeight
::nRight := ::nLeft + nWidth

::dFechaControl := Date()
::bFestivos := {|| ARRAY(0) } //Bingen
::nLanguage := nLanguage //Bingen
::Language() //Bingen

// Definicion del tooltip por dia..
::TipLimpiar()

// Array con dias festivos...
::aFestivos := { {}, {}, {},;
{}, {}, {},;
{}, {}, {},;
{}, {}, {} }
::oWnd := oWnd
::oFont := oFont
::lFont := !oFONT=NIL
::nPosFila := 1
::nPosCol := 1
::nPosBoton := 1
::aColorCuerpo := { nRgb(205,240,240),; // Color Borde superior
nRgb(145,220,220),; // Color de Relleno
nRgb( 55,170,170),; // Color Borde inferior
nRgb( 0, 0, 0),; // Color del texto,
nRgb(130,130, 65)} // Color dia seleccionado al perder el foco

::aColorTitulo := { nRgb( 55,170,170),; // Color Borde superior
nRgb( 40,120,120),; // Color de Relleno
nRgb( 40,110,110),; // Color Borde inferior
::aColorCuerpo[2],; // Color Letra mes y año
nRgb(205,205,155) } // Color de los dias.
::aColorBoton := { nRgb( 55,170,170),; // Color Borde superior
nRgb( 40,120,120),; // Color de Relleno
nRgb( 40,110,110),; // Color Borde inferior
::aColorCuerpo[2],; // Color Letra
::aColorCuerpo[2] } // Color relleno cuando se selecciona.
::aColorDomingo := ::aColorTitulo
::aColorFestivo := ::aColorTitulo


::nPosicion := day(::dFechaControl)
::FijaClrs()
::FijaClrDomingo()
::FijaClrFestivo()

::nStyle := nOr(WS_CHILD, WS_VISIBLE, WS_TABSTOP)
::Register()
If !Empty( oWnd:hWnd )
::Create()
oWnd:AddControl( Self )
else
oWnd:DefControl( Self )
endif
::hWndFijo := ::hWnd
Return Self

Si te falta algo mas de código, te subo la clase entera.

UN SALUDO.

Posted: Thu Jun 22, 2006 9:57 pm
by Antonio Linares
Mike,

> Si te falta algo mas de código, te subo la clase entera.

Si, por favor, súbela a www.hyperupload.com y copias aquí el link de descarga que te proporcionan.

Posted: Thu Jun 22, 2006 10:38 pm
by Mike Serra
Antonio, es la primera vez que subo algo, espero que funcione.

http://hyperupload.com/download/0244b22 ... A.PRG.html

Posted: Fri Jun 23, 2006 8:56 am
by Antonio Linares
Mike,

Correctamente subido, gracias :)

Prueba este cambio y comprueba que valores te aparecen:

Code: Select all

METHOD lFuera( nRow, nCol)  CLASS TMiCalendario
   MsgInfo( ::nFila1 )
   MsgInfo( ::nCol1 )
Return iif( (nRow  > (::nFila1 + 3) .and.;
             nRow <= (::nFila2 - 3) .and.;
             nCol  > (::nCol1  + 3) .and.;
	     nCol <= (::nCol2  - 3) ), .f., .t.)

Posted: Sat Jun 24, 2006 8:39 am
by Mike Serra
Antonio Linares wrote:Mike,

Correctamente subido, gracias :)

Prueba este cambio y comprueba que valores te aparecen:

Code: Select all

METHOD lFuera( nRow, nCol)  CLASS TMiCalendario
   MsgInfo( ::nFila1 )
   MsgInfo( ::nCol1 )
Return iif( (nRow  > (::nFila1 + 3) .and.;
             nRow <= (::nFila2 - 3) .and.;
             nCol  > (::nCol1  + 3) .and.;
	     nCol <= (::nCol2  - 3) ), .f., .t.)
Antonio, me pusiste en el camino, y creo que está todo solucionado. El problema era ::nFila1, que mostraba NIL, yo lo he solucionado inicializando las variales de instancia en la clase (nFila1,nFila2,nCol1,nCol2). Las he inicializado a 0, y no hay ya problema. De todas maneras me gustaría tu opinion al lo que he hecho.

UN SALUDO y muchisimas gracias ANTONIO.

Posted: Sat Jun 24, 2006 9:33 am
by Antonio Linares
Mike,

Has hecho lo correcto :)