GARANTIR DESCONTO

Fórum month calendar no delphi4 #388061

06/10/2010

0

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

Yuli Chrysostomo

Responder

Posts

06/10/2010

Wesley Batista


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
Responder

Gostei + 0

07/10/2010

Ricardo Araujo

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.


  
Responder

Gostei + 0

07/10/2010

Yuli Chrysostomo

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 ?
Responder

Gostei + 0

07/10/2010

Yuli Chrysostomo

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;
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar