A classe FWCalendar cria um calendário, permitindo que o usuário adicione informações sobre eventos e/ou descrições às suas respectivas datas.
Métodos:
New
Método de criação do objeto da classe
FWCalendar(): 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 |
- ()
- Objeto criado
Activate
Método para a ativação da classe
FWCalendar(): Activate ( < oDlg > ) -->
Nome | Tipo | Descrição | Obrigatório | Referência |
oDlg | Objeto | Objeto onde será inserido o calendário | X |
AvalFocus
Método responsável por controlar o foco da célula corrente
FWCalendar(): AvalFocus ( ) -->
CreateCell
Método responsável por criar os objetos para as células do calendário
FWCalendar(): CreateCell ( < oDlg> ) -->
Nome | Tipo | Descrição | Obrigatório | Referência |
oDlg | Objeto | Objeto onde está inserido o calendário | X |
Destroy
Método destrutor do objeto
FWCalendar(): Destroy ( < oDlg> ) -->
Nome | Tipo | Descrição | Obrigatório | Referência |
oDlg | Objeto | Objeto onde está inserido o calendário | X |
GetInfo
Método responsável por extrair a informação de uma célula
FWCalendar(): GetInfo ( < cId> ) --> cRet
Nome | Tipo | Descrição | Obrigatório | Referência |
cId | Caracter | Id da célula do calendário | X |
- (caracter)
- Retorna a informação da célula de acordo com o Id
HtmlDay
Método responsável por retornar o Html inicial da célula do dia ativo
FWCalendar(): HtmlDay ( [ lHtml] ) --> cRet
Nome | Tipo | Descrição | Obrigatório | Referência |
lHtml | Lógico | Atribuir .F. para texto simples ou .T. para texto Html |
- (caracter)
- Retorna a string Html
HtmlDayOff
Método responsável por retornar o Html inicial da célula de dia inativo
FWCalendar(): HtmlDayOff ( ) --> cRet
- (caracter)
- Retorna a string Html
HtmlFooter
Método responsável por retornar o Html inicial da célula de rodapé
FWCalendar(): HtmlFooter ( ) --> cRet
- (caracter)
- Retorna a string Html
HtmlHeader
Método responsável por retornar o Html inicial da célula do cabeçalho
FWCalendar(): HtmlHeader ( ) --> cRet
- (caracter)
- Retorna a string Html
HtmlToday
Método responsável por retornar o Html inicial da célula da data atual
FWCalendar(): HtmlToday ( [ lHtml] ) --> cRet
Nome | Tipo | Descrição | Obrigatório | Referência |
lHtml | Lógico | Atribuir .F. para texto simples ou .T. para texto Html |
- (caracter)
- Retorna a string Html
HtmlWeek
Método responsável por retornar o Html inicial da célula da mesma
FWCalendar(): HtmlWeek ( ) --> cRet
- (caracter)
- Retorna a string Html
HtmlWeekend
Método responsável por retornar o Html inicial da célula de dia de fim de semana
FWCalendar(): HtmlWeekend ( [ lHtml] ) --> cRet
Nome | Tipo | Descrição | Obrigatório | Referência |
lHtml | Lógico | Atribuir .F. para texto simples ou .T. para texto Html |
- (caracter)
- Retorna a string Html
IdDay
Método responsável por retornar o ID de um dia do mês
FWCalendar(): 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 |
- (caracter)
- Retorna o Id da célula do calendário
nAtCell
Método responsável por retornar a posição de uma célula no vetor de controle
FWCalendar(): nAtCell ( < cId> ) --> nPos
Nome | Tipo | Descrição | Obrigatório | Referência |
cId | Caracter | Id da célula do calendário | X |
- ()
- Retorna a posição da célula no vetor de controle
ReCalcSets
Método responsável por recalcular o posicionamento do calendário
FWCalendar(): ReCalcSets ( ) -->
SetCalendar
Método responsável por configurar o calendário para um mês/ano determinado
FWCalendar(): 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 |
SetDay
Método responsável por definir o conteúdo das células do calendário referentes aos dias ativos
FWCalendar(): 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 |
- (caracter)
- Retorna a string Html
SetDayOff
Método responsável por definir o conteúdo das células do calendário referentes aos dias inativos
FWCalendar(): 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 |
- (caracter)
- Retorna a string Html
SetFooter
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 |
- (caracter)
- Retorna a string Html
SetHeader
Método responsável por definir o conteúdo das células do calendário referentes ao cabeçalho
FWCalendar(): 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 |
- (caracter)
- Retorna a String Html
SetInfo
Método responsável por definir uma informação a ser exibida na célula
FWCalendar(): 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 |
SetWeek
Método responsável por definir o conteúdo das células do calendário referentes à semana
FWCalendar(): 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 |
- (caracter)
- Retorna a string Html
StartCell
Método responsável por inicializar os dados de células
FWCalendar(): StartCell ( < oDlg> ) -->
Nome | Tipo | Descrição | Obrigatório | Referência |
oDlg | Objeto | Objeto onde será inserido o calendário | X |
StartControl
Método responsável por inicializar os dados de controle
FWCalendar(): StartControl ( ) -->
StartLayout
Método responsável por inicializar os dados de layout
FWCalendar(): StartLayout ( ) -->
StartMonth
Método responsável por inicializar os dados de um novo mês/ano
FWCalendar(): 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 |
#INCLUDE "PROTHEUS.CH" #DEFINE ID 1 // Id do Celula #DEFINE OBJETO 2 // Objeto de Tela #DEFINE DATADIA 3 // Data Completa da Celula #DEFINE DIA 4 // Dia Ref. Data da Celula #DEFINE MES 5 // Mes Ref. Data da Celula #DEFINE ANO 6 // Ano Ref. Data da Celula #DEFINE NSEMANO 7 // Semana do Ano Ref. Data da Celula #DEFINE NSEMMES 8 // Semana do Mes Ref. Data da Celula #DEFINE ATIVO 9 // É celula referente a um dia ativo #DEFINE FOOTER 10 // É celula referente ao rodape #DEFINE HEADER 11 // É celula referente ao Header #DEFINE SEMANA 12 // É celula referente a semana #DEFINE BGDefault 13 // Cod de BackGround da Celula /*/ {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'} Private dDatabase cMes := StrZero(Month( Date() ), 2) cAno := StrZero(Year( Date() ), 4) cMesAno := AllTrim(cMes)+'/'+AllTrim(cAno) dDatabase := Date() Define MsDialog oDlg Title 'Calendário ' + StrTran( cMesAno, '/', ' / ' ) From 0, 0 To 768,1024 Pixel oTela := FWFormContainer():New( oDlg ) cIdCalen := oTela:createHorizontalBox(92) cIdRodape := oTela:createHorizontalBox(08) cIcoCalen := oTela:createVerticalBox( 05, 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 | DuploClick( oDlg, oTelaCaled, oCalend, aInfo ) } oCalend:bRClicked := {|aInfo, oObj, nRow, nCol| Direita('Botao da Direita [' + aInfo[1] + ']', oObj, nRow, nCol ) } oCalend:aNomeCol := {'Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado', 'Semana' } // Exibe ou nao a coluna de semana oCalend:lWeekColumn := .F. // Exibe ou nao o rodape oCalend:lFooterLine := .F. //Atribuindo conteúdo as 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é' ) EndIf Next @0, 0 BTNBMP oButCal Resource "BTCALEND" Size 24, 24 Of oTelaIcoCa Pixel 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_ALLCLIENT 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 Centered 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: