month calendar no delphi4
Oii, galerinhaa..
meu primeiro post aqui, rodei a internet inteira e não achei nada do que eu quero, então vim aqui.. [obs:to no desespero total ]
to fazendo um projeto no colégio, que sem ele posso ser reprovada :O
No sistema que to fazendo, preciso mt mt saber como faço tipo uma "conexão" , entre o monthcalendar e as datas gravadas no banco de dados. Porque quero, que apareça a descrição do compromisso gravado em um label ao clicar na data do month calendar .. e tbm as datas que possuem compromissos gravados fiquem em negrito.
Não sei se expliquei direito, mas o que quero fazer é uma espécie de "agenda", onde pelo calendário eu posso ver os compromissos.
Infelizmente eu uso a versão 4 do delphi , que não possui muitos recursos.. e os componentes que encontro na internet não são compatíveis com a versão, por isso já to ficando loucaa!!
Se vocês puderem me ajudar eu agradeceria demais.
Beijo pessoal!
Yuli Chrysostomo
Curtidas 0
Respostas
Wesley Batista
06/10/2010
Olá, seja bem vinda a este Forum, tenho o prazer de ser o primeiro a lhe responder.
Vamos ver se consigo lhe ajudar.
Sua dúvida é ligar o MonthCalendar com o seu banco de dados, para isso :
MonthCalendar1.date := CLIENTDATASET1.FIELDBYNAME('DATANASCIMENTO').AsDate;
Desta Forma você conseguirá carregar o campo DataNascimento para o MonthCalendar.
Dica , coloque este código no evento affterScrool do seu DataSet, você usa ClientDataSet?Senão procure no seu componente este evento, e implemente o código acima. Toda vez que seu DataSet mudar de registro, este evento será disparado, e a data atualizada no seu MonthCalendar.
Para gravar uma data em um campo você faz ao contrário
CLIENTDATASET1.FIELDBYNAME('DATANASCIMENTO').AsDate :=
MonthCalendar1.date;
Isso lhe ajuda ?
Um abraço
Wesley Batista
GOSTEI 0
Ricardo Araujo
06/10/2010
BOM DIA,
Colega fiz um exemplo básico,
estou enviando os código para estudo, qualquer coisa manda email para mim que envio o source do sistema.
code :
object Form1: TForm1
Left = 237
Top = 121
Width = 525
Height = 480
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object Label1: TLabel
Left = 16
Top = 16
Width = 122
Height = 20
Caption = 'COMPROMISSO'
Font.Charset = DEFAULT_CHARSET
Font.Color = clRed
Font.Height = -16
Font.Name = 'MS Sans Serif'
Font.Style = []
ParentFont = False
end
object MonthCalendar1: TMonthCalendar
Left = 320
Top = 16
Width = 162
Height = 153
Date = 40458.436248958340000000
TabOrder = 0
OnClick = MonthCalendar1Click
end
object DBGrid1: TDBGrid
Left = 0
Top = 184
Width = 509
Height = 260
Align = alBottom
DataSource = DataSource1
TabOrder = 1
TitleFont.Charset = DEFAULT_CHARSET
TitleFont.Color = clWindowText
TitleFont.Height = -11
TitleFont.Name = 'MS Sans Serif'
TitleFont.Style = []
end
object mmObs: TMemo
Left = 16
Top = 48
Width = 289
Height = 121
Lines.Strings = (
'...')
TabOrder = 2
end
object CDSFO: TClientDataSet
Aggregates = <>
Params = <>
Left = 232
Top = 256
end
object DataSource1: TDataSource
DataSet = CDSFO
Left = 264
Top = 256
end
end
código do arquivo pas
unit uPrincipal;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, DBClient, Grids, DBGrids, ComCtrls, StdCtrls;
type
TForm1 = class(TForm)
CDSFO: TClientDataSet;
DataSource1: TDataSource;
MonthCalendar1: TMonthCalendar;
DBGrid1: TDBGrid;
Label1: TLabel;
mmObs: TMemo;
procedure FormCreate(Sender: TObject);
procedure MonthCalendar1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
CDSFO.FieldDefs.Add('CODIGO',ftAutoInc,0, false);
CDSFO.FieldDefs.Add('NOME',ftString,20, false);
CDSFO.FieldDefs.Add('DATA_NASC',ftDate,0, false);
CDSFO.FieldDefs.Add('COMPROMISSO',ftString,20, false);
CDSFO.CreateDataSet;
end;
procedure TForm1.MonthCalendar1Click(Sender: TObject);
begin
mmObs.Clear;
if not CDSFO.Locate('DATA_NASC',DateToStr(MonthCalendar1.Date),[]) then
begin
mmObs.Lines.Add('....');
mmObs.Lines.Add('Nenhum Compromisso hoje')
end else begin
mmObs.Lines.Text := CDSFO.FieldByName('COMPROMISSO').AsString;
end;
end;
end.
amigo esta bem simples blz.
espero ter ajudado, bom estudo.
Colega fiz um exemplo básico,
estou enviando os código para estudo, qualquer coisa manda email para mim que envio o source do sistema.
code :
object Form1: TForm1
Left = 237
Top = 121
Width = 525
Height = 480
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object Label1: TLabel
Left = 16
Top = 16
Width = 122
Height = 20
Caption = 'COMPROMISSO'
Font.Charset = DEFAULT_CHARSET
Font.Color = clRed
Font.Height = -16
Font.Name = 'MS Sans Serif'
Font.Style = []
ParentFont = False
end
object MonthCalendar1: TMonthCalendar
Left = 320
Top = 16
Width = 162
Height = 153
Date = 40458.436248958340000000
TabOrder = 0
OnClick = MonthCalendar1Click
end
object DBGrid1: TDBGrid
Left = 0
Top = 184
Width = 509
Height = 260
Align = alBottom
DataSource = DataSource1
TabOrder = 1
TitleFont.Charset = DEFAULT_CHARSET
TitleFont.Color = clWindowText
TitleFont.Height = -11
TitleFont.Name = 'MS Sans Serif'
TitleFont.Style = []
end
object mmObs: TMemo
Left = 16
Top = 48
Width = 289
Height = 121
Lines.Strings = (
'...')
TabOrder = 2
end
object CDSFO: TClientDataSet
Aggregates = <>
Params = <>
Left = 232
Top = 256
end
object DataSource1: TDataSource
DataSet = CDSFO
Left = 264
Top = 256
end
end
código do arquivo pas
unit uPrincipal;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, DBClient, Grids, DBGrids, ComCtrls, StdCtrls;
type
TForm1 = class(TForm)
CDSFO: TClientDataSet;
DataSource1: TDataSource;
MonthCalendar1: TMonthCalendar;
DBGrid1: TDBGrid;
Label1: TLabel;
mmObs: TMemo;
procedure FormCreate(Sender: TObject);
procedure MonthCalendar1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
CDSFO.FieldDefs.Add('CODIGO',ftAutoInc,0, false);
CDSFO.FieldDefs.Add('NOME',ftString,20, false);
CDSFO.FieldDefs.Add('DATA_NASC',ftDate,0, false);
CDSFO.FieldDefs.Add('COMPROMISSO',ftString,20, false);
CDSFO.CreateDataSet;
end;
procedure TForm1.MonthCalendar1Click(Sender: TObject);
begin
mmObs.Clear;
if not CDSFO.Locate('DATA_NASC',DateToStr(MonthCalendar1.Date),[]) then
begin
mmObs.Lines.Add('....');
mmObs.Lines.Add('Nenhum Compromisso hoje')
end else begin
mmObs.Lines.Text := CDSFO.FieldByName('COMPROMISSO').AsString;
end;
end;
end.
amigo esta bem simples blz.
espero ter ajudado, bom estudo.
GOSTEI 0
Yuli Chrysostomo
06/10/2010
WESLEY,
eu uso o data source e o table..
meu banco de dados é o database desktop [/próprio do delphi]
e não achei esse evento, então em qual evento devo colocar o código ?
se eu pôr no "ondblclick" funcionaria normal ?
GOSTEI 0
Yuli Chrysostomo
06/10/2010
pessoal eu consegui, fazer a ligação do month calendar com o bd..
mas ainda preciso de ajuda ...
quero saber como colocar as datas que eu gravei no banco de dados em negrito, para assim ter uma referência das datas que possuem compromissos..
e outra coisa, quando os compromisso forem concluídos, ao clicar no botão, riscar a data [/ou colocá-la de outra cor, o que for mais fácil para vocês]
p.s: versão = delphi4
banco de dados = databasedesktop
--------------------------------------------------- ~ ---------------------------------------------------------------------- ~ ------
haaa!!!
para ter um parâmetro, dêem uma olhada no código que eu fiz para ligar o bd e o monthcalendar:
procedure TForm1.MonthCalendar1DblClick(Sender: TObject);
var
data: Tdatetime;
begin
data:= monthcalendar1.date;
edit1.text:= DateTimetoStr(data);
If table1.locate('Data',edit1.text,[loPartialKey]) then
begin
Edit2.text := table1.fieldbyname('Data').asstring;
Memo1.text := table1.fieldbyname('Descrição').asstring;
end
else
begin
edit2.text:='';
memo1.text:='';
showmessage('Não existe compromisso cadastrado');
end;
end;
var
data: Tdatetime;
begin
data:= monthcalendar1.date;
edit1.text:= DateTimetoStr(data);
If table1.locate('Data',edit1.text,[loPartialKey]) then
begin
Edit2.text := table1.fieldbyname('Data').asstring;
Memo1.text := table1.fieldbyname('Descrição').asstring;
end
else
begin
edit2.text:='';
memo1.text:='';
showmessage('Não existe compromisso cadastrado');
end;
end;
GOSTEI 0