FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Tema calendario nuevamente.
Posts: 212
Joined: Wed Apr 07, 2021 03:56 PM
Tema calendario nuevamente.
Posted: Sun Jun 09, 2024 11:26 PM

Buenas noches.

Buscando un calendario mas grande a MsgDate me sugirieron usar la clase tMiCalendario, mi version de FW es 12.6 y no contiene dicha clase.

Alguien conoce alguna otra aplicacion que muestre un calendario de tamaño mayor?

Gracias

Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: Tema calendario nuevamente.
Posted: Mon Jun 10, 2024 01:21 AM
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1772
Joined: Thu Sep 05, 2019 05:32 AM
Re: Tema calendario nuevamente.
Posted: Mon Jun 10, 2024 05:58 AM
hi,
what about CLASS TCalendar from source\classes\tcalenda.prg
Code (fw): Select all Collapse
         oCal := TCalendar() :New( 0, 0, { | u | IF( PCOUNT() == 0, dFirst, dFirst := u ) }, { | u | IF( PCOUNT() == 0, dLast, dLast := u ) }, oWnd,,,, BFcolor, BGcolor, oFontDefault, .F.,, .F.,, .F., .T.,, { | nKey, nFlags, Self | ( oWnd:Update() ) },, { | Self | ( oCal:End(), oWnd:End() ) }, { | Self | ( aDates := oCal:GetDateRange(), MsgInfo( cText := DTOC( aDates[ 1 ] ) + " - " + DTOC( aDates[ 2 ] ) + CHR( 13 ) + CHR( 10 ) + LTRIM( STR( aDates[ 2 ] - aDates[ 1 ] ) ) + " Days" ) ) }, .T., .F., .F., .F. )

      // NEED for Color
      SetWindowTheme( oCal:hWnd, "", "" )

      oCal:SetBackGround( BGcolor )
      oCal:SetMonthBk( BGcolor )

      oCal:SetTitleBk( CLR_GRAY )

      oCal:SetTextClr( BFcolor )
      oCal:SetTitleText( BFcolor )
      oCal:SetTrailingText( CLR_GRAY )

      oCal:SetMaxSelCount( 364 + 1 )                                  // max Day Range select

      oWnd:oClient := oCal

      oWnd:bKeyDown := { | nKey, nFlag | IF( nKey = VK_ESCAPE, ( oCal:End(), oWnd:End() ), nil ) }
      oCal:bKeyDown := { | nKey, nFlag | IF( nKey = VK_ESCAPE, ( oCal:End(), oWnd:End() ), nil ) }
      oCal:bAction := { | nKey, nFlag | ( oCal:End(), oWnd:End() ) }
greeting,

Jimmy
Posts: 6984
Joined: Fri Oct 07, 2005 07:07 PM
Re: Tema calendario nuevamente.
Posted: Mon Jun 10, 2024 07:01 AM
Jose, 'mas grande' do you mean like Jimmy suggests or the display larger?
Best regards,
Otto

Posts: 8523
Joined: Tue Dec 20, 2005 07:36 PM
Re: Tema calendario nuevamente.
Posted: Mon Jun 10, 2024 12:10 PM
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: Tema calendario nuevamente.
Posted: Mon Jun 10, 2024 01:59 PM
Un nuevo calendario implementado por nuestro querido Rao usando XBrowse. Una maravilla! :-)

xbcalend.prg
Code (fw): Select all Collapse
#include "fivewin.ch"

REQUEST HB_LANG_ESWIN
REQUEST HB_LANG_FR
REQUEST HB_LANG_PT
REQUEST HB_LANG_DEWIN
REQUEST HB_LANG_IT

static aCal

//----------------------------------------------------------------------------//

function Main()

   local aWeeks   := Array( 7 )

   aCal  := Array( 7, 6 )

   HB_LANGSELECT( "EN" )

//   AEval( aWeeks, { |u,i| aWeeks[ i ] := Upper( Left( nTocDow( i ), 3 ) ) } )

//   XBROWSER aWeeks

   ShowCalendar()

return nil

function ShowCalendar()

   local dMth, nMth, nYear
   local aMonths  := MonthNames()
   local nLang := 1
   local oDlg, oBrw, oCbxLang, oCbxMth, oGetYr
   local oFont, oBold

   dMth     := BOM( Date() - 30 )
   nMth     := MONTH( dMth )
   nYear    := YEAR( dMth )
   FillDates( nMth, nYear )

   DEFINE FONT oFont NAME "Segoe UI" SIZE 0,-16
   DEFINE FONT oBold NAME "IMPACT" SIZE 0,-40

   DEFINE DIALOG oDlg SIZE 600,550 PIXEL TRUEPIXEL RESIZABLE FONT oFont ;
      TITLE "CALENDAR"

   @ 40, 20 COMBOBOX oCbxLang VAR nLang ITEMS { "ENGLISH", "SPANISH", "FRENCH", "PORTUGESE", "GERMAN", "ITALIAN" } ;
      SIZE 120,400 PIXEL OF oDlg  ON CHANGE ( ;
         HB_LANGSELECT( { "EN", "ES", "FR", "PT", "DE", "IT" }[ nLang ] ), ;
         oBrw:Refresh(), oCbxMth:SetItems( aMonths := MonthNames() ) )

   @ 40,200 COMBOBOX oCbxMth VAR nMth ITEMS aMonths ;
      SIZE 100,400 PIXEL OF oDlg ON CHANGE ( ;
      FillDates( nMth, nYear ), oBrw:Refresh() )

   @ 40,400 GET oGetYr VAR nYear SIZE 80,30 PIXEL OF oDlg RIGHT SPINNER ;
      ON UP ( FillDates( nMth, ++nYear ), oBrw:Refresh(), oGetYr:Refresh() ) ;
      ON DOWN ( FillDates( nMth, --nYear ), oBrw:Refresh(), oGetYr:Refresh() ) ;
      VALID ( FillDates( nMth, nYear ), oBrw:Refresh(), .t. )


   @ 80, 0 XBROWSE oBrw SIZE 0,0 PIXEL OF oDlg ;
      DATASOURCE aCal ;
      COLUMNS { || Upper( Left( NtoCDow( oBrw:nArrayAt ), 3 ) ) }, 1, 2, 3, 4, 5 ;
      HEADERS "WEEK", "1", "2", "3", "4", "5" ;
      LINES NOBORDER

   WITH OBJECT oBrw
      :nRowHeight    := 60
      :nWidths       := 90
      :nStretchCol   := 1
      :lDisplayZeros := .f.
      :lColDividerComplete := .f.
      :nDataStrAligns   := AL_CENTER
      :oDataFonts    := oBold
      //
      :CreateFromCode()
   END

   ACTIVATE DIALOG oDlg CENTERED ON INIT ( oBrw:SetFocus() )

return nil

static function FillDates( nMth, nYear )

   local dDate := STOD( STR( nYear, 4 ) + STRZERO( nMth, 2 ) + "01" )
   local nDays := LastDayOM( dDate )
   local nDow  := DOW( dDate )
   local nRow, nCol, nDay := 1

   // this may be revised

   if nDow > 1
      AEval( aCal, { |a| a[ 1 ] := 0 }, 1, nDow )
   endif
   AEval( aCal, { |a| a[ 1 ] := nDay++ }, nDow )
   for nCol := 2 to 4
      AEval( aCal, { |a| a[ nCol ] := nDay++ } )
   next
   AEval( aCal, { |a| a[ 5 ] := If( nDay <= nDays, nDay++, 0 ) } )

   if nDay <= nDays
      AEval( aCal, { |a| a[ 1 ] := nDay++ }, 1, nDays - nDay + 1 )
   endif

return nil

static function MonthNames()

   local aRet  := Array( 12 )

   AEval( aRet, { |u,i| aRet[ i ] := UPPER( NTOCMONTH( i ) ) } )

return aRet
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 212
Joined: Wed Apr 07, 2021 03:56 PM
Re: Tema calendario nuevamente.
Posted: Mon Jun 10, 2024 02:04 PM

Muchas Gracias a:

Mr. Rao, Antonio, Joao, Nano Espinoza, Jimmy y Otto por el tiempo dedicado.

Muchas Gracias

Posts: 537
Joined: Mon Jan 16, 2006 03:42 PM
Re: Tema calendario nuevamente.
Posted: Wed Jun 12, 2024 01:08 AM

Buenas noches...

Otto podrias compartir ese calendario

saludos

Posts: 159
Joined: Wed Mar 28, 2007 01:19 PM
Re: Tema calendario nuevamente.
Posted: Wed Jun 12, 2024 11:45 AM

Wonderful!... But... Here in Brazil (and other places in the world) the name of the week days are at the top.

And the week numbers are at left. Could show the number of the week in the year.

Just my 2 cents.

Regards, Euclides.

Posts: 8523
Joined: Tue Dec 20, 2005 07:36 PM
Re: Tema calendario nuevamente.
Posted: Wed Jun 12, 2024 01:35 PM
https://imgur.com/NOISSwf



Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 8523
Joined: Tue Dec 20, 2005 07:36 PM
Re: Tema calendario nuevamente.
Posted: Wed Jun 12, 2024 01:36 PM
Master RAO, can you help with these questions?

Maestro RAO, ¿puede ayudarnos con estas preguntas?
Code (fw): Select all Collapse
// C:\FWH\SAMPLES\XBCALEND.PRG  By mister Rao.

#include "fivewin.ch"

REQUEST HB_LANG_ESWIN
REQUEST HB_LANG_FR
REQUEST HB_LANG_PT
REQUEST HB_LANG_DEWIN
REQUEST HB_LANG_IT

REQUEST HB_CODEPAGE_PT850

STATIC aCal

FUNCTION Main()

   LOCAL aWeeks := Array( 7 )

   aCal := Array( 7, 6 )

   // hb_langSelect( "EN" )

   HB_LANGSELECT( 'PT' )     // Default language is now Portuguese

   /*
   Mr Rao, if you use this command, it causes an error on the day:
   Sábado (SAB) is returned S B. In Portuguese there is no S B but SÁB (Sabádo)
   Saturday

   HB_SETCODEPAGE( "PT850" )
   */

   // AEval( aWeeks, { |u,i| aWeeks[ i ] := Upper( Left( nTocDow( i ), 3 ) ) } )

   // XBROWSER aWeeks

   ShowCalendar()

RETURN NIL

FUNCTION ShowCalendar()

   LOCAL dMth, nMth, nYear, oSaida
   LOCAL aMonths  := MonthNames()
   LOCAL nLang // := 1     // 12/06/2024 - Joao.
   LOCAL oDlg, oBrw, oCbxLang, oCbxMth, oGetYr
   LOCAL oFont, oBold, cItens, cHeader, cTitle

   // dMth  := BOM( Date() - 30 ) // 12/06/2024 - Joao.
   // It must show the current month and not the previous month.
   dMth  := BOM( Date() )
   nMth  := Month( dMth )
   nYear := Year( dMth )

   FillDates( nMth, nYear )

   // 12/06/2024 - Joao.
   DEFAULT nLang := FWSetLanguage()
   // nLang := 4 // Portuguese
   FWSetLanguage( nLang )

   SkinButtons()

   // 12/06/2024 - Joao.
   IF( nLang ) = 4
      cItens  := { "INGLÊS", "ESPANHOL", "FRANCÊS", "PORTUGUÊS", "ALEMÃO", "ITALIANO" }
      cHeader := { "SEMANA", "1", "2", "3", "4", "5" }
      cTitle  := "CALENDÁRIO"
   ELSE
      cItens  := { "ENGLISH", "SPANISH", "FRENCH", "PORTUGESE", "GERMAN", "ITALIAN" }
      cHeader := { "WEEK", "1", "2", "3", "4", "5" }
      cTitle  := "CALENDAR"
   ENDIF

   DEFINE FONT oFont NAME "Segoe UI" SIZE 0, - 16
   DEFINE FONT oBold NAME "IMPACT"   SIZE 0, - 40

   DEFINE DIALOG oDlg SIZE 600, 550 PIXEL TRUEPIXEL RESIZABLE FONT oFont ;
      TITLE cTitle 

   // Here it returns wrong. After changing the language
   @ 40, 20 COMBOBOX oCbxLang VAR nLang ITEMS cItens                    ;
      SIZE 120, 400 PIXEL OF oDlg  ON CHANGE ( ;
      hb_langSelect( { "EN", "ES", "FR", "PT", "DE", "IT" }[ nLang ] ), ;
      oBrw:Refresh(), oCbxMth:SetItems( aMonths := MonthNames() ) )

   @ 40, 200 COMBOBOX oCbxMth VAR nMth ITEMS aMonths ;
      SIZE 100, 400 PIXEL OF oDlg ON CHANGE ( ;
      FillDates( nMth, nYear ), oBrw:Refresh() )

   @ 40, 400 GET oGetYr VAR nYear SIZE 80, 30 PIXEL OF oDlg RIGHT SPINNER ;
      ON UP ( FillDates( nMth, ++nYear ), oBrw:Refresh(), oGetYr:Refresh() ) ;
      ON DOWN ( FillDates( nMth, --nYear ), oBrw:Refresh(), oGetYr:Refresh() ) ;
      VALID ( FillDates( nMth, nYear ), oBrw:Refresh(), .T. )

   @ 80, 0 XBROWSE oBrw SIZE 0, 0 PIXEL OF oDlg ;
      DATASOURCE aCal ;
      COLUMNS {|| Upper( Left( NtoCDow( oBrw:nArrayAt ), 3 ) ) }, 1, 2, 3, 4, 5 ;
      HEADERS cHeader ; // "WEEK", "1", "2", "3", "4", "5" ;
      LINES NOBORDER

   WITH OBJECT oBrw
      :nRowHeight    := 60
      :nWidths       := 90
      :nStretchCol   := 1
      :lDisplayZeros := .F.
      :lColDividerComplete := .F.
      :nDataStrAligns := AL_CENTER
      :oDataFonts    := oBold
      //
      :CreateFromCode()
   END

   @ 001, 500 BUTTONBMP oSaida PROMPT( "&Saida" )                     ;
      BITMAP "..\bitmaps\16x16\Exit.bmp" TEXTRIGHT SIZE 086, 34 PIXEL ;
      FONT oFont OF oDlg ACTION( oDlg:End() ) CANCEL

   ACTIVATE DIALOG oDlg CENTERED ON INIT ( oBrw:SetFocus() )

   oFont:End()
   oBold:End()

RETURN NIL

STATIC FUNCTION FillDates( nMth, nYear )

   LOCAL dDate := SToD( Str( nYear, 4 ) + StrZero( nMth, 2 ) + "01" )
   LOCAL nDays := LastDayOM( dDate )
   LOCAL nDow  := DoW( dDate )
   LOCAL nRow, nCol, nDay := 1

   // this may be revised

   IF nDow > 1
      AEval( aCal, {| a | a[ 1 ] := 0 }, 1, nDow )
   ENDIF

   AEval( aCal, {| a | a[ 1 ] := nDay++ }, nDow )

   FOR nCol := 2 TO 4
      AEval( aCal, {| a | a[ nCol ] := nDay++ } )
   NEXT

   AEval( aCal, {| a | a[ 5 ] := If( nDay <= nDays, nDay++, 0 ) } )

   IF nDay <= nDays
      AEval( aCal, {| a | a[ 1 ] := nDay++ }, 1, nDays - nDay + 1 )
   ENDIF

RETURN NIL

STATIC FUNCTION MonthNames()

   LOCAL aRet  := Array( 12 )

   AEval( aRet, {| u, i | aRet[ i ] := Upper( NTOCMONTH( i ) ) } )

RETURN aRet
Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 8523
Joined: Tue Dec 20, 2005 07:36 PM
Re: Tema calendario nuevamente.
Posted: Wed Jun 12, 2024 01:40 PM
Señor Rao, la visualización del calendario en portugués es incorrecta.

Mister Rao, calendar display for Portuguese is incorrect.

https://imgur.com/FvsUkOv



Gracias, tks.

Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 1144
Joined: Mon Feb 05, 2007 07:15 PM
Re: Tema calendario nuevamente.
Posted: Wed Jun 12, 2024 07:34 PM
Se puede seleccionar la fecha ?
Code (fw): Select all Collapse
dFecha := ShowCalendar()
? dFecha
Cesar Cortes Cruz

SysCtrl Software

Mexico



' Sin +- FWH es mejor "
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: Tema calendario nuevamente.
Posted: Tue Jun 25, 2024 09:16 PM

Karina, muy bonito calendario, su forma y colores.

Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 8523
Joined: Tue Dec 20, 2005 07:36 PM
Re: Tema calendario nuevamente.
Posted: Wed Jun 26, 2024 01:36 PM
carlos vargas wrote:Karina, muy bonito calendario, su forma y colores.
Buén dia. Download aqui master:

https://mega.nz/file/cIcwEBaZ#E3PhxjP_GekUMwgN2rOYWN0c00bogblM4WLymsU4fJ8

Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341