Vous êtes sur la page 1sur 14

Trabalhando com cxScheduler da DevExpress

Ol amigos da comunidade Delphi. Ultimamente tenho observado um nmero crescente de


usurios que vem utilizando o componente cxScheduler da DevExpress e quase sempre na
maioria dos casos as dificuldades em como trabalhar com este componente so as mesmas.
Este artigo tem como objetivo servir de direcionamento para o desenvolvimento com este
poderoso componente.
O cxScheduler um excelente componente que nos poupa vrias horas de
programao, pra que tem a necessidade de desenvolver uma agenda fcil e funcional de ser
utilizada em seu sistema. O componente permite desenvolver agendas mltiplas, ou seja, se
voc tem a necessidade desenvolver agendas que sejam multiusurios, o componente permite
tal situao, para isto pasta configur-lo conforme sua necessidade.
Para que possamos trabalhar neste exemplo, vou utilizar a seguintes ferramentas,
Delphi 7, componente DevExpress verso 56, se voc utiliza uma verso inferior a esta no tem
problema nenhum . Firebird 2.1 e IBExpert para manipularmos o banco de dados.

Primeiramente vamos criar uma aplicao de exemplo.


File > New > Application

Figura 1 Criando aplicao


Crie uma pasta chama ExemploAgenda na unidade C: e salve o projeto com o nome
ExemploAgenda e a unit1.pas como unitAgenda.pas

Figura 2 Salvando Aplicao


Na UnitAgenda do projeto que acabamos de criar, coloque o componente cxScheduler.

Figura 3 Selecionando Componente


Defina a propriedade Align do componente no Form para AlClient o projeto devera estar como
a figura abaixo.

Figura 3 Componente Alclint


Vamos ver agora algumas propriedades do componente.
Temos a propriedade OptionsView, esta serve para
definiremos as opes de visualizao da agenda, como
numero de pginas no caso de exibio de agendas
simultneas.

Figura 4 Propriedades OptionsView cxScheduler


No grupo de propriedades ResourceNavigator mude o valor da propriedade visibility para
snvAlways isto ira adicionar no cxScheduler a possibilidade de navegao de pginas na
agenda.

Figura 5 Barra de Navegao


Nas propriedades do ResourceNavigator voc pode controlar o que deseja que seja utilizado
na navegao, no caso das propriedades do grupo Buttons voc define que tipo de ao estar
disponvel para o usurio final.

Figura 6 Propriedades Buttons cxScheduler

As propriedades Views servem para definir que tipo de


visualizao vamos fazer da agenda Diario, Semanal,
Mensal, Anual. Na propriedade Active passando o valor
de alguma para True voc habilita o tipo de viasuluzao,
por padro a propriedade Active da opo ViewDay j
vem habilitada, neste caso a agenda tem uma visualizao
diria, mas se voc passar o valor de qualquer outra
propriedade das opes pra True automaticamente esta
passa para False.

Figura 7 Propriedades Views cxScheduler

Agora que conhecemos um pouco das principais propriedades do componente vamos comear
a trabalhar em nosso exemplo.
Antes de comear, vamos criar primeiramente um banco de dados para que possamos
armazenar os dados de nossa agenda. Como disse no inicio vamos utilizar o firebird. Crie uma
pasta chamada dados dentro da pasta ExemploAgenda que criamos anteriormente para salvar
o projeto.
Para criar o banco vou utilizar o IBExpert:

Figura 8 Criando banco de dados

Aps criar o banco de dados crie a tabela AGENDA com a seguinte estrutura.
CREATE TABLE AGENDA (
ID_AGE

INTEGER NOT NULL,

RESOURCEID

INTEGER,

PARENTID

INTEGER,

CAPTION

VARCHAR(255),

START_AGE

TIMESTAMP,

FINISH

TIMESTAMP,

STATE

INTEGER,

ACTUALFINISH

INTEGER,

ACTUALSTART

INTEGER,

EVENTTYPE
LABELCOLOR

INTEGER,
INTEGER,

LOCATION

VARCHAR(255),

"MESSAGE"

VARCHAR(255),

OPTIONS
RECURRENCEINDEX
RECURRENCEINFO
REMINDERDATE

INTEGER,
INTEGER,
BLOB SUB_TYPE 1 SEGMENT SIZE 80,
TIMESTAMP,

REMINDERMINUTESBEFORESTART INTEGER,
REMINDERRESOURCESDATA
TASKCOMPLETEFIELD

BLOB SUB_TYPE 1 SEGMENT SIZE 80,

INTEGER,

TASKINDEXFIELD

INTEGER,

TASKLINKSFIELD

BLOB SUB_TYPE 1 SEGMENT SIZE 80,

TASKSTATUSFIELD

INTEGER

);

Em seguida modifique a tabela agenda conforme o script abaixo.


ALTER TABLE AGENDA ADD CONSTRAINT PK_AGENDA PRIMARY KEY (ID_AGE)
USING INDEX ID_AGE;

Feito a alterao vamos criar agora um Generator para o campo ID_AGE da tabela.
Abra a tabela AGENDA no IBExpert, de um clique duplo no campo ID_AGE abrir a seguinte
tela:

Figura 9 Criando um Generator


Selecione a aba Autoincremento ira aparecer mais abas abaixo na guia Gerador selecione o
checkbox Criar Gerador em seguida selecione a guia automotismo e clique no checkbox criar
automotismo em seguida clique em Ok e confirme a operao.
Feito isto estamos com nosso banco de dados pronto para trabalharmos com nosso exemplo.
Vamos agora conectar o banco com a nossa aplicao.
Crie um DataModule no projeto:
File > New > DataModule

Salve como o nome de UDM.pas e mude a propriedade name para DM.


Para a conexo com o banco vou utilizar os componentes da paleta Interbse, mas voc pode
utilizar qualquer componente de sua preferncia.
Coloque no DataModule um IBDataBase de um clique duplo no mesmo e preencha conforme a
figura abaixo.

Figura 10 Conectando com o banco

Adicione um IBTranzaction da paleta Interbase ao DataModule e na propriedade


DefaultDataBase deste componente selecione o IBDataBase e clique no IBDataBase e na
propriedade DefaltTranzaction selecione o IBTranzaction e na propriedade Active dos dois
componente passe o valor para True. Adicione tambm ao DataModule um IBDataSet da
paleta Interbase e um DataSource da paleta DataAccess, na proriedade Name do IBDataSet
mude para IB_Tab_Agenda e no DataSource para Ds_IB_Tab_Agenda.
A propriedade DataBase do IB_Tab_Agenda selecione o IBDataBase e na propriedade
SelectSQL de um clique duplo e selecione a tabela AGENDA conforme a figura abaixo.

Figura 11 Selecionando a tabela agenda

Clique em Ok. Na propriedade GeneratorField de um clique duplo e preencha tambm como a


imagem abaixo:

Figura 12 Conectando com o generator

Clique com o boto direito do mouse em cima IB_Tab_Agenda e selecione a opo no menu
DataBase Edit. No campo Key Fields selecione apenas o campo ID_AGE da tabela e no campo

Update Fields deixe selecionado todos os campos e em seguida clique no boto Generate SQL
e depois no boto Ok.
De um clique duplo em cima novamente do IB_Tab_Agenda e clique no teclado Crtl + F e
adicione todos os campos da tabela AGENDA ao IB_Tab_Agenda e passe a propriedade Active
para True. Selecione o Ds_IB_Tab_Agenda e na propriedade DataSet selecione o
IB_Tab_Agenda e a propriedade AutoEdit deixe igual a True.
Feito isso vamos para nosso Form1 onde esta nosso componente cxScheduler. Tecle no teclado
as teclas Alt + F11 e inclua no Uses do Form1 a unit DM que nosso DataModule.
Adicione no Form1 um componente chamado cxSchedulerDBStorage que se encontra na
mesma paleta que o cxScheduler este componente que vai se comunicar com nossa base de
dados e o cxScheduler portando ele como se fosse o intermedirio de informaes.
Na propriedade DataSource do cxSchedulerDBStorage selecione DM.Ds_IB_Tab_Agenda. Na
proriedade FildNames preencha seus campos igual a figura abaixo.

Figura 13 Preenchendo campos fildsNames

Feito isso selecione o cxSheduler e na propriedade Storage do mesmo adicione o


cxSchedulerDBStorage.
Realizado este processo voc j pode compilar o projeto e verificar o resultado at aqui. Neste
caso j estamos como nossa agenda funcionando, voc pode conferir o resultado na imagem
abaixo.

Figura 14 Exemplo 1 Agenda

No caso desta agenda ela j serviria para sistemas que precisam trabalhar com um nica
agenda. Para sistemas que precisam de uma agenda individual para cada usurio tambm
conseguimos fazer isso com o cxScheduler, para isso vamos apenas dar uma pequena
modificada em nosso sistema e incluir mais uma tabela em nosso banco de dados.
Vamos criar a tabela FUNCIONARIOS para nosso exemplo, uma tabela simples com apenas dois
campos.
Crie a tabela conforme o script abaixo:
CREATE TABLE FUNCIONARIOS (
ID INTEGER NOT NULL,
NOME VARCHAR(100)
);

ALTER TABLE FUNCIONARIOS ADD CONSTRAINT PK_FUNCIONARIOS PRIMARY KEY (ID);

Aps criar a tabela vamos adicionar pelo IBExpert mesmo alguns dados para que possamos ver
nosso exemplo com mltiplas agendas.

Figura 15 Inserindo dados tabela funcionrio

Conecte essa tabela ao nosso sistema da mesma maneira que conectamos a tabela AGENDA
no DataModule.
Aps conectar a tabela deixa a mesma j ativa para que quando compilarmos o sistema j
esteja em funcionamento, lembrado que estou deixando a tabela ativa somente no caso deste
exemplo para facilitar.
Feito isso vamos at nosso Form e selecionar o cxSchedulerDBStorage e em sua propriedade
Resources vamos configurar da seguinte maneira.
Em DataSource selecione a tabela Funcionarios, em ResourceID adicione o campo ID da tabela
e em ResourceName o campo nome.

Figura 16 configurando os campos

Feito isso basta compilarmos nosso projeto novamente e conferir o resultado que neste caso
j temos uma agenda individual para cada funcionrio. Como voc pode observar, trabalhamos
em quase todo momento somente com os prprios recursos do componente o que nos poupa
muito tempo de desenvolvimento. Agora s voc dar uma boa fuada nos recursos do
componente para que j esteja apto a trabalhar com o mesmo.
Bom amigos este foi um exemplo de como trabalhar com cxScheduler espero que possa ajudals em seus sistemas. Confira na figura abaixo o resultado da aplicao. Abrao e at a
prxima.

Figura 17 Exemplo 2 Agenda

Edson Alves:
colaborador no frum da Active Delphi, atua como programador Delphi h 3 anos.
Atualmente trabalha na Ikatec Solues desenvolvendo aplicaes para o comercio local.

e-mail: edson.alvesan@gmail.com

Vous aimerez peut-être aussi