VB .NET - Criando uma Agenda com MonthCalendar
No artigo de hoje vou mostrar como podemos criar uma agenda básica que permite gravar e ler apontamentos usando o controle MonthCalendar do VB .NET. |
A classe MonthCalendar representa o controle MonthCalendar do VB .NET e no artigo VB.NET - Usando o controle MonthCalendar - Macoratti.net eu abordei as principais propriedades e métodos deste controle.
Neste artigo eu vou mostrar como criar uma agenda de compromissos que permite ao usuário registrar e ler apontamentos para uma data selecionada no controle MonthCalendar.
O evento DateSelected ocorre quando o usuário realizar a seleção de uma data no controle MonthCalendar.
Em nosso exemplo vamos usar esse evento para permitir ao usuário gravar e ler um apontamento em um arquivo texto que será montando com base no ano , mês e dia da data selecionada.
Para isso vamos usar a propriedade SelectionRange que obtém ou define o intervalo de datas para um controle de calendário do mês selecionado.
Assim para obter a data inicial selecionada podemos usar o seguinte código : MonthCalendar1.SelectionRange.Start
Para obter o ano o mês e o dia usamos o código a seguir:
O nome do arquivo onde os agendamentos serão gravados será composto pelo ano, mês e dia mais a extensão .txt. Ex: 20152306.txt
Para gravar, ler e deletar os apontamentos iremos usar os métodos ReadAllText, WriteAllText e Delete da classe File que esta no namespace System.IO.
Recursos usados :
Criando o projeto no VS 2013 Express Edition
Abra o VS 2013 Express for Windows desktop e clique em New Project;
A seguir selecione Visual Basic -> Windows Forms Application;
Informe o nome Agenda e clique no botão OK;
No formulário form1.vb vamos incluir os seguintes controles a partir da ToolBox:
1 MonthCalendar - name=mCal
1 TextBox - name=txtAgenda Multiline=True, Visible=False
1 Button - btnSalvar , Visible=False
1 Button - btnRetornar , Visible=False
Disponha os controles no formulário conforme o leiaute da figura abaixo:
A seguir defina no formulário o seguinte namespace:
Imports System.IO
Defina também no início do formulário a variável reg que irá representar o nome do nosso arquivo texto para a data selecionada.
Dim reg As String
Após isso defina o código no evento DateSelected do controle MonthCalendar :
Private Sub mCal_DateSelected(sender As Object, e As DateRangeEventArgs) Handles mCal.DateSelected
reg = mCal.SelectionRange.Start.Year.ToString & mCal.SelectionRange.Start.Month.ToString & mCal.SelectionRange.Start.Day.ToString
Try
If File.Exists(reg & ".txt") = True Then
AtivaControles()
txtAgenda.Text = File.ReadAllText(reg & ".txt")
Else
If MessageBox.Show("Deseja registrar apontamentos para esta data ?", "Registrar", MessageBoxButtons.YesNo) =
Windows.Forms.DialogResult.Yes Then
txtAgenda.Text = ""
AtivaControles()
txtAgenda.Text = "Dia " & mCal.SelectionRange.Start.Day.ToString & " - "
End If
End If
Catch ex As Exception
MessageBox.Show("Erro " + ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
|
Neste código montamos o nome do arquivo texto com base na data selecionada e após verificar se o arquivo existe exibimos o conteúdo do arquivo texto no TextBox ou emitimos uma mensagem ao usuário para registrar ou não agendamentos.
Se o usuário confirmar chamamos o método AtivaControles() que oculta o calendário e exibe a caixa de texto para informar o agendamento.
O código do método AtivaControles() é visto abaixo:
Private Sub AtivaControles()
Try
mCal.Enabled = False
mCal.Hide()
txtAgenda.Enabled = True
txtAgenda.Show()
btnSalvar.Enabled = True
btnSalvar.Show()
btnRetornar.Enabled = True
btnRetornar.Show()
Catch
Throw
End Try
End Sub
|
Ao apresentar a caixa de texto o usuário pode digitar o agendamento e clicar no botão Salvar cujo código é definido a seguir:
Private Sub btnSalvar_Click(sender As Object, e As EventArgs) Handles btnSalvar.Click Try If txtAgenda.Text = "" Then If File.Exists(reg & ".txt") = True Then If MessageBox.Show("Deseja deletar o agendamento registrado para este dia ? ", "Deletar", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then File.Delete(reg & ".txt") End If End If Else If txtAgenda.Text.Length > 0 Then File.WriteAllText(reg & ".txt", txtAgenda.Text) MessageBox.Show("Agendamento registrado com sucesso." + reg, "Agendado", MessageBoxButtons.OK, MessageBoxIcon.Information) End If End If Catch ex As Exception MessageBox.Show("Erro " + ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End Sub |
Após o usuário digitar o texto do agendamento a clicar no botão Salvar, o método WriteAllText da classe File grava os dados no arquivo.
Se já existia um agendamento e o usuário limpar o texto e clicar no botão Salvar o arquivo contendo o agendamento para o dia será deletado usando o método Delete() da classe File.
Após isso o usuário poderá clicar no botão Retornar para voltar exibir o calendário e ocultar a caixa de texto e os botões. O código associado ao evento Click deste botão é visto abaixo:
Private Sub btnRetornar_Click(sender As Object, e As EventArgs) Handles btnRetornar.Click
Try
txtAgenda.Enabled = False
txtAgenda.Hide()
btnSalvar.Enabled = False
btnSalvar.Hide()
btnRetornar.Enabled = False
btnRetornar.Hide()
mCal.Enabled = True
mCal.Show()
Catch ex As Exception
MessageBox.Show("Erro " + ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
|
Finalmente vamos usar o evento Load do formulário form1 para verificar se na data de hoje existe algum agendamento gravado, e, em caso positivo, vamos exibir uma mensagem ao usuário para exibir ou não o agendamento.
O código usado é descrito a seguir:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load reg = mCal.SelectionRange.Start.Year.ToString & mCal.SelectionRange.Start.Month.ToString & mCal.SelectionRange.Start.Day.ToString Try If Date.Today = mCal.TodayDate And File.Exists(reg & ".txt") = True Then If MessageBox.Show("Existem registros na Agenda para esta data. Deseja ver ? ", "Ver Agenda", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then AtivaControles() txtAgenda.Text = File.ReadAllText(reg & ".txt") End If End If Catch ex As Exception MessageBox.Show("Erro " + ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End Sub |
Executando o projeto e realizando algumas operações iremos obter:
1- Selecionando o dia de hoje
2- Gravando um agendamento para hoje
3- Carregando o projeto para o dia de hoje
Você pode incluir outras funcionalidades ao projeto tornando-o mais funcional e com mais recursos.
Na próxima parte vou mostrar como podemos vincular uma data selecionada no controle MonthCalendar.
Pegue o projeto completo aqui: AgendaMonthCalendar.zip
Disse Jesus : "Uma geração má e
adúltera pede um sinal, e nenhum sinal lhe será dado, senão o sinal do profeta
Jonas. E, deixando-os, retirou-se."
Mateus 16:4
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
TreeView - Arrastar e Soltar (Drag and Drop) - Macoratti.net