PDA

Ver la Versión Completa : Coger el dia seleccionado en un componente tipo tMonthCalendar en Delphi 7


cincosoft
02-12-2012, 10:50:41
Hola,

Estoy haciendo una agenda y quería que al escoger un día en el calendario (estoy utilizando el componente TMonthCalendar), se actualizase la agenda, para lo que tengo que utilizar el día seleccionado para lanzar la consulta.

Es el componente adecuado? En que evento tengo que llamar a la función? Como cojo la fecha seleccionada por el usuario?

Selecciono este componente porque prefiero que se vea todo el tiempo el calendario, por eso no utilizo por ejemplo el TDateTimerPicker.

Gracias y un saludo.

ecfisa
03-12-2012, 18:23:57
Hola cincosoft.

MonthCalendar (http://msdn.microsoft.com/en-us/library/windows/desktop/bb760917%28v=vs.85%29.aspx), no posee un evento que se dispare ante la selección de un día, pero si el Parent del TMonthCalendar es el form, podrías aprovechar el mensaje WM_NOTIFY.

Como ejemplo:

...
type
TForm1 = class(TForm)
MonthCalendar1: TMonthCalendar;
private
FDateSelected: TDate;
procedure MonthCalendarChange;
protected
procedure WmNotify(var Msg: TWMNOTIFY); message WM_NOTIFY;
public
end;

var
Form1: TForm1;

implementation {$R *.dfm}

uses CommCtrl;

procedure TForm1.MonthCalendarChange;
begin
ShowMessage('Fecha seleccionada: '+ DateToStr(FDateSelected));
end;

procedure TForm1.WmNotify(var Msg: TWMNOTIFY);
begin
if PNMHdr(Msg.NMHdr)^.code = MCN_SELECT then
begin
with PNMSelChange(Msg.NMHdr)^ do
begin
// Aquí las acciones que desees (pongo unas de ejemplo)
FDateSelected:= MonthCalendar1.Date;
MonthCalendarChange;
end;
end;
inherited;
end;
...


Saludos.