Tema calendario nuevamente.

José Camilo
Posts: 212
Joined: Wed Apr 07, 2021 3:56 pm

Tema calendario nuevamente.

Post by José Camilo »

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
User avatar
Antonio Linares
Site Admin
Posts: 42259
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Tema calendario nuevamente.

Post by Antonio Linares »

regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Jimmy
Posts: 1733
Joined: Thu Sep 05, 2019 5:32 am
Location: Hamburg, Germany

Re: Tema calendario nuevamente.

Post by Jimmy »

hi,
what about CLASS TCalendar from source\classes\tcalenda.prg
Image

Code: Select all | Expand

         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
User avatar
Otto
Posts: 6378
Joined: Fri Oct 07, 2005 7:07 pm
Contact:

Re: Tema calendario nuevamente.

Post by Otto »

Jose, 'mas grande' do you mean like Jimmy suggests or the display larger?
Best regards,
Otto

Image
********************************************************************
mod harbour - Vamos a la conquista de la Web
modharbour.org
https://www.facebook.com/groups/modharbour.club
********************************************************************
User avatar
karinha
Posts: 7885
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Contact:

Re: Tema calendario nuevamente.

Post by karinha »

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
Antonio Linares
Site Admin
Posts: 42259
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Tema calendario nuevamente.

Post by Antonio Linares »

Un nuevo calendario implementado por nuestro querido Rao usando XBrowse. Una maravilla! :-)

xbcalend.prg

Code: Select all | Expand

#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
Image
regards, saludos

Antonio Linares
www.fivetechsoft.com
José Camilo
Posts: 212
Joined: Wed Apr 07, 2021 3:56 pm

Re: Tema calendario nuevamente.

Post by José Camilo »

Muchas Gracias a:
Mr. Rao, Antonio, Joao, Nano Espinoza, Jimmy y Otto por el tiempo dedicado.

Muchas Gracias
jbrita
Posts: 506
Joined: Mon Jan 16, 2006 3:42 pm

Re: Tema calendario nuevamente.

Post by jbrita »

Buenas noches...
Otto podrias compartir ese calendario
saludos
User avatar
Euclides
Posts: 156
Joined: Wed Mar 28, 2007 1:19 pm

Re: Tema calendario nuevamente.

Post by Euclides »

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.
User avatar
karinha
Posts: 7885
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Contact:

Re: Tema calendario nuevamente.

Post by karinha »

https://imgur.com/NOISSwf

Image

Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
Posts: 7885
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Contact:

Re: Tema calendario nuevamente.

Post by karinha »

Master RAO, can you help with these questions?

Maestro RAO, ¿puede ayudarnos con estas preguntas?

Code: Select all | Expand

// 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
User avatar
karinha
Posts: 7885
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Contact:

Re: Tema calendario nuevamente.

Post by karinha »

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

Image

Gracias, tks.

Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
sysctrl2
Posts: 1035
Joined: Mon Feb 05, 2007 7:15 pm
Contact:

Re: Tema calendario nuevamente.

Post by sysctrl2 »

Se puede seleccionar la fecha ?

Code: Select all | Expand

dFecha := ShowCalendar()
? dFecha
 
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
User avatar
carlos vargas
Posts: 1721
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Tema calendario nuevamente.

Post by carlos vargas »

Karina, muy bonito calendario, su forma y colores.
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
karinha
Posts: 7885
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Contact:

Re: Tema calendario nuevamente.

Post by karinha »

carlos vargas wrote:Karina, muy bonito calendario, su forma y colores.
Buén dia. Download aqui master:

https://mega.nz/file/cIcwEBaZ#E3PhxjP_G ... WLymsU4fJ8

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