Utilizando o componente cxScheduler da DevExpress

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (6)  (0)

Veja neste artigo uma breve apresentação do componente cxScheduler da biblioteca DevExpress para Delphi. Serão apresentados suas principais funcionalidades, juntamente como um exemplo onde se grava os dados dos agendamentos em uma arquivo local.

Um dos componentes mais complexos e ao mesmo tempo mais “extraordinários” da DevExpress é, sem dúvidas, o cxScheduler que nos permite montar toda uma estrutura de agenda com um único controle.

Explicar detalhadamente todas as propriedades, eventos e métodos do cxScheduler levaria algum tempo e um único artigo não seria bastante para isso. Então, o objetivo deste artigo é apresentar, de forma rápida, as principais funcionalidades deste componente através de exemplos práticos de uso.

Para iniciar, crie uma nova aplicação de formulário no Delphi (File > New > VCL Forms Application) e no form principal adicione um componente cxScheduler, como mostra a Figura 1.

cxScheduler básico na tela

Figura 1: cxScheduler básico na tela

A respeito da imagem acima vale fazer algumas observações:

  • No lado esquerdo tem-se uma marcação vertical referente ao horário. A marcação é feita a cada 30 min, aos quais corresponde uma linha no centro (região amarela). Não significa que os eventos da agenda só podem ser definidos em horários múltiplos de trinta minutos, essa é apenas uma marcação visual para facilitar a identificação.
  • Ainda na marcação dos horários, há uma linha horizontal (de cor laranja, na figura) que indica o horário atual. Mesmo em tempo de design esta linha se mantém em uma posição fiel. Assim, no momento da captura da Figura 1, o relógio marcava aproximadamente 11h20.
  • Nas laterais da região amarela existem dois botões: “Previous appointment” e “Next apointment” que, quando houver eventos agendados antes ou depois do dia e horário que se está visualizando, levarão o usuário até eles.
  • Na parte superior direita, há um calendário que pode ser usado, inclusive em tempo de design, para navegar entre as datas.
  • Clicando com a direita sobre o controle, em tempo de design a primeira opção do menu de contexto é “Active view”, que permite escolher a forma como a agenda é exibida (diária, semanal, mensal, etc).

Executando o projeto, vemos que não é possível adicionar nenhum evento, dando dois cliques ou clicando com a direita sobre o horário. Como vemos na Figura 2, as opções do menu de contexto principal estão desabilitadas, sendo permitido utilizar apenas duas opções de navegação.

Menu de contexto do cxScheduler com opções desabilitadas

Figura 2: Menu de contexto do cxScheduler com opções desabilitadas

A opção “Today” faz com que a agenda exiba a data atual, enquanto a opção “Go to Date...” permite ir para uma data específica, conforme a Figura 3.

Opção Go to Date

Figura 3: Opção Go to Date

O campo “Show In” define o tipo de calendário que será exibido após a busca. As opções são: diário, semanal, mensal e semanal com apenas os dias úteis.

A inserção de eventos está desabilitada porque nenhuma forma de armazenamento foi definida ainda. É necessário escolher um arquivo ou um uma conexão com ou banco de dados no qual as informações serão gravadas, como veremos a seguir.

Salvando a agenda em arquivo local

Uma das formas de se armazenar os dados da agenda é utilizando o componente auxiliar cxSchedulerStorage para salvar os agendamentos em um arquivo local. Então, para prosseguir adicione um componente desse ao form e o ligue ao cxScheduler através da propriedade Storage desse segundo.

Para testes, os dados serão salvos quando o formulário for fechado, pois nesse ponto o usuário já deve ter feito todas as inserções, alterações e exclusões necessárias. No evento onClose do formulário principal, adicione o código para gravar os dados conforme mostra a Listagem 1.

Listagem 1: Gravando os dados da agenda em arquivo

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction)
begin</p>
  cxSchedulerStorage1.SaveToFile('D:\Agenda.txt');
end;

Em seguida, acesse o evento OnShow do formulário e insira o código para carregar os dados da agenda a partir do arquivo previamente gravado. Caso o arquivo não exista, será gerado um erro, então crie um arquivo de texto com nome e caminho que informou no método SaveToFile.

Listagem 2: Carregando os dados do arquivo

procedure TForm1.FormShow(Sender: TObject);
begin
  cxSchedulerStorage1.LoadFromFile('D:\Agenda.txt');
end;

Nos exemplos foi utilizado o path ‘D:\Arquivo.txt’, mas outros formatos também podem ser utilizados. Porém, o formato escolhido não reflete diretamente na forma como os dados são dispostos no arquivo.

Os métodos para salvar e carregar os dados já foram definidos, pode-se então testar o funcionamento do projeto. Para isso, execute-o, escolha um horário e dê dois cliques sobre a linha correspondente na região amarela. Uma janela como a da Figura 4 será mostrada.

Adição de evento

Figura 4: Adição de evento

Os campos encontrados nessa tela são os seguintes:

  • Subject: assunto ou título do evento que será listado na agenda.
  • Location: local onde ocorrerá o evento, utilizado para reuniões, festas, etc.
  • Label: categoria do evento, existem alguns valores predefinidos como “Importante”, “Negócios” e “Pessoal”.
  • Start time: data e horário de início do evento.
  • End time: data e horário de término do evento.
  • All day event: essa opção faz com que o evento seja marcado como “diário”, ou seja, agendado para todos os dias no mesmo horário.
  • Reminder: quando ativa, essa opção faz com que o usuário seja relembrado (alarme) sobre o evento a cada intervalo de tempo predefinido. Um exemplo de alarme é mostrado na Figura 5.
  • Show time as: como o evento será mostrado na agenda (“Ocupado”, “Externo”, etc).
Alarme de evento

Figura 5: Alarme de evento

Quando o alarme é exibido, pode-se utilizar a opção “soneca” (snooze) para adiá-lo por alguns minutos, ou finalizar a tarefa usando os botões “Dismiss” ou “Dismiss All” (para finalizar todas).

Ainda na tela de cadastro de evento, clicando no botão “Recurrence” é possível definir configurações de repetição do evento, como mostra a Figura 6.

Definindo a repetição do evento

Figura 6: Definindo a repetição do evento

Nessa tela pode-se definir que o evento repete-se diariamente, semanalmente, mensalmente ou anualmente, utilizando uma das várias opções disponíveis.

Na parte inferior pode ser escolhida uma data de encerramento do evento ou uma quantidade de vezes que o evento vai se repetir até ser encerrado.

Registre um evento e feche a aplicação. Em seguida, execute novamente o projeto e veja que o agendamento foi gravado no arquivo e carregado na abertura do formulário.

Evento marcado na agenda

Figura 7: Evento marcado na agenda

Conclusão

Como foi possível ver ao longo deste artigo, não é complicado criar um sistema de agendamento simples utilizando o cxScheduler e armazenando dados em um arquivo local. Certamente a maioria deve preferir armazenar as informações em um banco de dados, separar por usuário, etc, mas este assunto caberia a outro artigo, pois requer um maior detalhamento do componente e de algumas de suas propriedades e componentes auxiliares.

O objetivo dessa publicação foi apresentar as principais funcionalidades do componente em execução, explicando o significado de cada um dos campos apresentados para o usuário.

Espero que o conteúdo aqui apresentado possa ser útil. Agradeço a atenção do leitor e até a próxima.

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?