NewNewMétodo de criação do objeto da classeFWCalendar(): New ( < nMes>, < nAno> ) --> oSelf
Nome | Tipo | Descrição | Obrigatório | Referência | nMes | Numérico | Mês de Referência | X |
| nAno | Numérico | Anode Referência | X |
|
ActivateMétodo para a ativação da classeFWCalendar(): Activate ( < oDlg > ) -->
Nome | Tipo | Descrição | Obrigatório | Referência | oDlg | Objeto | Objeto onde será inserido o calendário | X |
|
AvalFocusMétodo responsável por controlar o foco da célula correnteFWCalendar(): AvalFocus ( ) --> CreateCellMétodo responsável por criar os objetos para as células do calendárioFWCalendar(): CreateCell ( < oDlg> ) -->
Nome | Tipo | Descrição | Obrigatório | Referência | oDlg | Objeto | Objeto onde está inserido o calendário | X |
|
DestroyMétodo destrutor do objetoFWCalendar(): Destroy ( < oDlg> ) -->
Nome | Tipo | Descrição | Obrigatório | Referência | oDlg | Objeto | Objeto onde está inserido o calendário | X |
|
GetInfoFWCalendar(): GetInfo ( < cId> ) --> cRet
Nome | Tipo | Descrição | Obrigatório | Referência | cId | Caracter | Id da célula do calendário | X |
|
cRet (caracter)- Retorna a informação da célula de acordo com o Id
HtmlDayMétodo responsável por retornar o Html inicial da célula do dia ativoFWCalendar(): HtmlDay ( [ lHtml] ) --> cRet
Nome | Tipo | Descrição | Obrigatório | Referência | lHtml | Lógico | Atribuir .F. para texto simples ou .T. para texto Html |
|
|
cRet(caracter)- Retorna a string Html
HtmlDayOffMétodo responsável por retornar o Html inicial da célula de dia inativoFWCalendar(): HtmlDayOff ( ) --> cRet cRet (caracter)- Retorna a string Html
Método responsável por retornar o Html inicial da célula de rodapéFWCalendar(): HtmlFooter ( ) --> cRet cRet (caracter)- Retorna a string Html
Método responsável por retornar o Html inicial da célula do cabeçalhoFWCalendar(): HtmlHeader ( ) --> cRet cRet (caracter)- Retorna a string Html
HtmlTodayMétodo responsável por retornar o Html inicial da célula da data atualFWCalendar(): HtmlToday ( [ lHtml] ) --> cRet
Nome | Tipo | Descrição | Obrigatório | Referência | lHtml | Lógico | Atribuir .F. para texto simples ou .T. para texto Html |
|
|
cRet (caracter)- Retorna a string Html
HtmlWeekHtmlWeekMétodo responsável por retornar o Html inicial da célula da mesmaFWCalendar(): HtmlWeek ( ) --> cRet cRet (caracter)- Retorna a string Html
HtmlWeekendMétodo responsável por retornar o Html inicial da célula de dia de fim de semanaFWCalendar(): HtmlWeekend ( [ lHtml] ) --> cRet
Nome | Tipo | Descrição | Obrigatório | Referência | lHtml | Lógico | Atribuir .F. para texto simples ou .T. para texto Html |
|
|
cRet (caracter)- Retorna a string Html
IdDayMétodo responsável por retornar o ID de um dia do mêsFWCalendar(): IdDay ( < Retorna o Id da célula do calendário> ) --> cRet
Nome | Tipo | Descrição | Obrigatório | Referência | Retorna o Id da célula do calendário | Numérico | Dia de referência | X |
|
cRet (caracter)- Retorna o Id da célula do calendário
nAtCellMétodo responsável por retornar a posição de uma célula no vetor de controleFWCalendar(): nAtCell ( < cId> ) --> nPos
Nome | Tipo | Descrição | Obrigatório | Referência | cId | Caracter | Id da célula do calendário | X |
|
nPos ()- Retorna a posição da célula no vetor de controle
ReCalcSetsMétodo responsável por recalcular o posicionamento do calendárioFWCalendar(): ReCalcSets ( ) --> SetCalendarMétodo responsável por configurar o calendário para um mês/ano determinadoFWCalendar(): SetCalendar ( < oDlg>, < nMes>, < nAno> ) -->
Nome | Tipo | Descrição | Obrigatório | Referência | oDlg | Objeto | Objeto onde está inserido o calendário | X |
| nMes | Numérico | Mês de referência | X |
| nAno | Numérico | Ano de referência | X |
|
SetDayMétodo responsável por definir o conteúdo das células do calendário referentes aos dias ativosFWCalendar(): SetDay ( < nDia>, [ cTexto ], [ cTextoCab ], [ lHtml ] ) --> cRet
Nome | Tipo | Descrição | Obrigatório | Referência | nDia | Numérico | Dia de referência | X |
| cTexto | Caracter | Texto para a montagem do Html |
|
| cTextoCab | Caracter | Texto para a montagem do cabeçalho Html |
|
| lHtml | Lógico | Verifica se os textos para montagem estão ou não no formato Html |
|
|
cRet (caracter)- Retorna a string Html
SetDayOffMétodo responsável por definir o conteúdo das células do calendário referentes aos dias inativosFWCalendar(): SetDayOff ( < nDia >, [ cTexto ], [ lHtml ] ) --> cRet
Nome | Tipo | Descrição | Obrigatório | Referência | nDia | Numérico | Dia de referência | X |
| cTexto | Caracter | Texto para a montagem do Html |
|
| lHtml | Lógico | Verifica se o texto para montagem está ou não no formato Html |
|
|
cRet (caracter)- Retorna a string Html
Método responsável por definir o conteúdo do rodapéFWCalendar(): SetFooter ( [ cTexto], [ lHtml] ) --> cRet
Nome | Tipo | Descrição | Obrigatório | Referência | cTexto | Caracter | Texto para a montagem do Html |
|
| lHtml | Lógico | Verifica se o texto para montagem está ou não no formato Html |
|
|
cRet (caracter)- Retorna a string Html
Método responsável por definir o conteúdo das células do calendário referentes ao cabeçalhoFWCalendar(): SetHeader ( [ cTexto], [ lHtml] ) --> cRet
Nome | Tipo | Descrição | Obrigatório | Referência | cTexto | Caracter | Texto para a montagem do Html |
|
| lHtml | Lógico | Verifica se o texto para montagem está ou não no formato Html |
|
|
cRet (caracter)- Retorna a String Html
SetInfoMétodo responsável por definir uma informação a ser exibida na célulaFWCalendar(): SetInfo ( < cId>, < uContent>, [ lHtml] ) -->
Nome | Tipo | Descrição | Obrigatório | Referência | cId | Caracter | Id da célula do calendário | X |
| uContent | Array of Record | String ou vetor de strings contendo as informações ou descrições dos itens referentes a cada célula | X |
| lHtml | Lógico | Verifica se o texto para montagem está ou não no formato Html |
|
|
SetWeekMétodo responsável por definir o conteúdo das células do calendário referentes à semanaFWCalendar(): SetWeek ( [ cTexto], [ lHtml] ) --> cRet
Nome | Tipo | Descrição | Obrigatório | Referência | cTexto | Caracter | Texto para a montagem do Html |
|
| lHtml | Lógico | Verifica se o texto para montagem está ou não no formato Html |
|
|
cRet (caracter)- Retorna a string Html
StartCellMétodo responsável por inicializar os dados de célulasFWCalendar(): StartCell ( < oDlg> ) -->
Nome | Tipo | Descrição | Obrigatório | Referência | oDlg | Objeto | Objeto onde será inserido o calendário | X |
|
StartControlMétodo responsável por inicializar os dados de controleFWCalendar(): StartControl ( ) --> StartLayoutMétodo responsável por inicializar os dados de layoutFWCalendar(): StartLayout ( ) --> StartMonthMétodo responsável por inicializar os dados de um novo mês/anoFWCalendar(): StartMonth ( < nMes>, < nAno> ) -->
Nome | Tipo | Descrição | Obrigatório | Referência | nMes | Numérico | Mês de referência | X |
| nAno | Numérico | Ano de referência | X |
|
Exemplos title | Exemplo de Implementação |
---|
| #INCLUDE "PROTHEUS.CH"
#DEFINE ID 1 // Id do | Celula#DEFINECelula
#DEFINE OBJETO 2 // Objeto de | Tela#DEFINETela
#DEFINE DATADIA 3 // Data Completa da | Celula#DEFINECelula
#DEFINE DIA 4 // Dia Ref. Data da | Celula#DEFINECelula
#DEFINE MES 5 // Mes Ref. Data da | Celula#DEFINECelula
#DEFINE ANO 6 // Ano Ref. Data da | Celula#DEFINECelula
#DEFINE NSEMANO 7 // Semana do Ano Ref. Data da | Celula#DEFINECelula
#DEFINE NSEMMES 8 // Semana do Mes Ref. Data da | Celula#DEFINECelula
#DEFINE ATIVO 9 // É celula referente a um dia | ativo#DEFINEativo
#DEFINE FOOTER 10 // É celula referente ao | rodape#DEFINErodape
#DEFINE HEADER 11 // É celula referente ao | Header#DEFINEHeader
#DEFINE SEMANA 12 // É celula referente a | semana#DEFINEsemana
#DEFINE BGDefault 13 // Cod de BackGround da | CelulaUser Function TestCalend()Local oDlgLocal cMes Local cAno Local cMesAno Local oCalendLocal nILocal aListLocalCelula
/*/
{Protheus.doc} TestCalend
Função de exemplo de uso do metodo FWCalendar
@type User Function
@author Bruno Pirolo
@since 04/11/2021
@return Nil
/*/
User Function TestCalend()
Local oDlg
Local cMes
Local cAno
Local cMesAno
Local oCalend
Local nI
Local aList
Local aItems := {'item1','item2','item3'} | Local cRet := ''Private dDatabasecMes
Private dDatabase
cMes := StrZero( | )
dDatabase := Date()
Define MsDialog oDlg Title 'Calendário ' + StrTran( cMesAno, '/', ' / ' ) From 0, 0 To 768,1024 | PixeloTelaPixel
oTela := FWFormContainer():New( oDlg )
cIdCalen := oTela:createHorizontalBox( | )
cIdRodape := oTela:createHorizontalBox( | 8 08)
cIcoCalen := oTela:createVerticalBox( | 505, cIdRodape )
cIcoBotoes:= oTela:createVerticalBox( 95, cIdRodape )
oTela:Activate( oDlg, .F. )
oTelaCaled := oTela:GetPanel( cIdCalen )
oTelaIcoCa := oTela:GetPanel( cIcoCalen )
oTelaIcoBt := oTela:GetPanel( cIcoBotoes )
oCalend := FWCalendar():New( VAL(cMes), VAL(cAno) )
oCalend:blDblClick := { | | aInfo|aInfo | DuploClick( oDlg, oTelaCaled, oCalend, aInfo ) }
oCalend:bRClicked := { | 'Botao da Direita [' + aInfo[1] + ']', oObj, nRow, nCol ) }
oCalend:aNomeCol := { | 'Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado', 'Semana' } | oCalend:lWeekColumn := .F.
// Exibe ou nao a coluna de | semanaoCalendlFooterLinelWeekColumn := .F.
// Exibe ou nao o | rodapeoCalend:Activate( oTelaCaled )rodape
oCalend:lFooterLine := .F.
//Atribuindo conteúdo as | datasaList datas
oCalend:Activate( oTelaCaled )
aList = Array(Len( oCalend:aCell ))
For nI := 1 To Len( oCalend:aCell )
If oCalend:aCell[nI][ATIVO]
oCalend:SetInfo( oCalend:aCell[nI][ID], aItems )
ElseIf oCalend:aCell[nI][SEMANA]
ElseIf oCalend:aCell[nI][FOOTER]
oCalend:SetInfo( oCalend:aCell[nI][ID], 'Rodapé' ) | EndIfNext@ 0
EndIf
Next
@0, 0 BTNBMP oButCal Resource "BTCALEND" Size 24, 24 Of oTelaIcoCa | PixeloButCalPixel
oButCal:cToolTip := "Alterar calendário..."
oButCal:bAction := { || dDiaSel := TrocaCalend( oDlg, CTod( '01/' + oCalend:cRef ) ) , oCalend:SetCalendar( oTelaCaled, Month( dDiaSel ) , Year( dDiaSel ) ) , oDlg:cTitle := 'Calendário ' + oCalend:cRef, JogaTexto( oCalend ) }
oButCal:Align := CONTROL_ALIGN_ | ALLCLIENToCalendALLCLIENT
oCalend:SetInfo( oCalend:IdDay( 20 ), '<td>10</td><td>30</td><td>20</td>', .T.)
oCalend:SetInfo( oCalend:IdDay( 21 ), '<td><tr><td>10</td><td>30</td><td>20</td></tr><tr><td>30</td><td>30</td><td>30</td></tr></td>', .T.)
oCalend:SetInfo( oCalend:IdDay( 22 ), '<td>10</td><td>30</td><td>20</td>', .T.)
@ oTelaIcoBt:nTop+05, oTelaIcoBt:nLeft+015 Button oBtn Prompt '01/2011' Size 25, 10 Of oTelaIcoBt Pixel Action ( oCalend:SetCalendar( oTelaCaled, '01', '2011' ) , oDlg:cTitle := 'Calendário ' + oCalend:cRef )
@ oTelaIcoBt:nTop+05, oTelaIcoBt:nLeft+040 Button oBtn Prompt '02/2011' Size 25, 10 Of oTelaIcoBt Pixel Action ( oCalend:SetCalendar( oTelaCaled, '02', '2011' ) , oDlg:cTitle := 'Calendário ' + oCalend:cRef )
@ oTelaIcoBt:nTop+05, oTelaIcoBt:nLeft+065 Button oBtn Prompt '03/2011' Size 25, 10 Of oTelaIcoBt Pixel Action ( oCalend:SetCalendar( oTelaCaled, '03', '2011' ) , oDlg:cTitle := 'Calendário ' + oCalend:cRef )
@ oTelaIcoBt:nTop+05, oTelaIcoBt:nLeft+090 Button oBtn Prompt '04/2011' Size 25, 10 Of oTelaIcoBt Pixel Action ( oCalend:SetCalendar( oTelaCaled, '04', '2011' ) , oDlg:cTitle := 'Calendário ' + oCalend:cRef )
@ oTelaIcoBt:nTop+05, oTelaIcoBt:nLeft+115 Button oBtn Prompt '05/2011' Size 25, 10 Of oTelaIcoBt Pixel Action ( oCalend:SetCalendar( oTelaCaled, '05', '2011' ) , oDlg:cTitle := 'Calendário ' + oCalend:cRef )
@ oTelaIcoBt:nTop+05, oTelaIcoBt:nLeft+140 Button oBtn Prompt '06/2011' Size 25, 10 Of oTelaIcoBt Pixel Action ( oCalend:SetCalendar( oTelaCaled, '06', '2011' ) , oDlg:cTitle := 'Calendário ' + oCalend:cRef )
@ oTelaIcoBt:nTop+15, oTelaIcoBt:nLeft+015 Button oBtn Prompt '07/2011' Size 25, 10 Of oTelaIcoBt Pixel Action ( oCalend:SetCalendar( oTelaCaled, '07', '2011' ) , oDlg:cTitle := 'Calendário ' + oCalend:cRef )
@ oTelaIcoBt:nTop+15, oTelaIcoBt:nLeft+040 Button oBtn Prompt '08/2011' Size 25, 10 Of oTelaIcoBt Pixel Action ( oCalend:SetCalendar( oTelaCaled, '08', '2011' ) , oDlg:cTitle := 'Calendário ' + oCalend:cRef )
@ oTelaIcoBt:nTop+15, oTelaIcoBt:nLeft+065 Button oBtn Prompt '09/2011' Size 25, 10 Of oTelaIcoBt Pixel Action ( oCalend:SetCalendar( oTelaCaled, '09', '2011' ) , oDlg:cTitle := 'Calendário ' + oCalend:cRef )
@ oTelaIcoBt:nTop+15, oTelaIcoBt:nLeft+090 Button oBtn Prompt '10/2011' Size 25, 10 Of oTelaIcoBt Pixel Action ( oCalend:SetCalendar( oTelaCaled, '10', '2011' ) , oDlg:cTitle := 'Calendário ' + oCalend:cRef )
@ oTelaIcoBt:nTop+15, oTelaIcoBt:nLeft+115 Button oBtn Prompt '11/2011' Size 25, 10 Of oTelaIcoBt Pixel Action ( oCalend:SetCalendar( oTelaCaled, '11', '2011' ) , oDlg:cTitle := 'Calendário ' + oCalend:cRef )
@ oTelaIcoBt:nTop+15, oTelaIcoBt:nLeft+140 Button oBtn Prompt '12/2011' Size 25, 10 Of oTelaIcoBt Pixel Action ( oCalend:SetCalendar( oTelaCaled, '12', '2011' ) , oDlg:cTitle := 'Calendário ' + oCalend:cRef )
oDlg:lMaximized := .T.
Activate MsDialog oDlg | CenteredReturn NIL Image RemovedCentered
Return NIL
/*/
{Protheus.doc} DuploClick
Função de exemplo de uso do metodo FWCalendar
@type Static Function
@author Bruno Pirolo
@since 04/11/2021
@return Nil
/*/
Static function DuploClick( oDlg, oTelaCaled, oCalend, aInfo )
Local nCelPos as numeric
Local nItemPos as numeric
Local cIdAtivo as character
Local cConteudo as character
MsgInfo("Primeiro exemplo - Partindo do objeto oCalend")
//Pega o ID selecionado
cIdAtivo := oCalend:CIDACTIVE
//Utiliza o metodo GetInfo() para pegar a informação principal da célula (neste caso o dia)
cConteudo := Right(oCalend:GetInfo(cIdAtivo), 2)
//Pega o indice da célula selecionada
nCelPos := oCalend:nAtCell(cIdAtivo)
If oCalend:aCell[nCelPos, 9]
//Se possuir ListBox
If oCalend:aCell[nCelPos, 14]
//Verifica a celula selecionada
nItemPos := oCalend:aCell[nCelPos, 2]:oListBoxContent:nAt
//Verifica se tem uma celula posicionada
If !Empty(nItemPos)
Alert("Dia: "+cConteudo+" - Conteudo ListBox - "+oCalend:aCell[nCelPos, 2]:oListBoxContent:aItems[nItemPos])
Else
Alert("Dia: "+cConteudo+" - Conteudo ListBox - Nenhum item selecionado")
EndIf
EndIf
Else
Alert("Célula inativa, não pode ser acessada.")
EndIf
MsgInfo("Segundo exemplo - Partindo do parametro que o componente já disponibiliza no evento de duplo clique, que já corresponde a célula.")
//Pega o ID selecionado
cIdAtivo := oCalend:CIDACTIVE
//Utiliza o metodo GetInfo() para pegar a informação principal da célula (neste caso o dia)
cConteudo := Right(oCalend:GetInfo(cIdAtivo), 2)
If aInfo[9]
//Se possuir ListBox
If aInfo[14]
//Verifica a celula selecionada
nItemPos := aInfo[2]:oListBoxContent:nAt
//Verifica se tem uma celula posicionada
If !Empty(nItemPos)
Alert("Dia: "+cConteudo+" - Conteudo ListBox - "+aInfo[2]:oListBoxContent:aItems[nItemPos])
Else
Alert("Dia: "+cConteudo+" - Conteudo ListBox - Nenhum item selecionado")
EndIf
EndIf
Else
Alert("Célula inativa, não pode ser acessada.")
EndIf
Return |
Layout da tela: Image Added |