Added events to Calendar

Shane

git-svn-id: trunk@483 -
This commit is contained in:
lazarus 2001-12-05 18:23:48 +00:00
parent f43d37ca9b
commit 65878c388e
4 changed files with 115 additions and 7 deletions

View File

@ -50,6 +50,9 @@ Type
FDate : String;
FDisplaySettings : TDisplaySettings;
FReadOnly: Boolean;
FDayChanged: TNotifyEvent;
FMonthChanged: TNotifyEvent;
FYearChanged: TNotifyEvent;
procedure SetReadOnly(const AValue: Boolean);
Procedure GetProps;
Procedure SetProps;
@ -58,7 +61,11 @@ Type
function GetDate: String;
procedure SetDate(const AValue: String);
protected
procedure AttachSignals; override;
procedure LMMonthChanged(var Message: TLMessage); message LM_MONTHCHANGED;
procedure LMYEARChanged(var Message: TLMessage); message LM_YEARCHANGED;
procedure LMDAYChanged(var Message: TLMessage); message LM_DAYCHANGED;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
@ -69,6 +76,10 @@ Type
// Property Date : TDate read GetDate write SetDate;
property ReadOnly : Boolean read FReadOnly write SetReadOnly;
property Visible;
// property OnChange;
property OnDayChanged : TNotifyEvent read FDayChanged write FDayChanged;
property OnMonthChanged : TNotifyEvent read FMonthChanged write FMonthChanged;
property OnYearChanged : TNotifyEvent read FYearChanged write FYearChanged;
end;
implementation
@ -158,6 +169,34 @@ begin
end;
procedure TCalendar.AttachSignals;
begin
inherited;
SetCallback(LM_MONTHCHANGED);
SetCallback(LM_YEARCHANGED);
SetCallback(LM_DAYCHANGED);
end;
procedure TCalendar.LMDAYChanged(var Message: TLMessage);
begin
if Assigned(OnDayChanged) then
OnDayChanged(self);
end;
procedure TCalendar.LMMonthChanged(var Message: TLMessage);
begin
if Assigned(OnMonthChanged) then
OnMonthChanged(self);
end;
procedure TCalendar.LMYEARChanged(var Message: TLMessage);
begin
if Assigned(OnYearChanged) then
OnYearChanged(self);
end;
end.

View File

@ -104,6 +104,17 @@ begin
Result := DeliverMessage(Data, Mess) = 0;
end;
function gtkdaychanged(Widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
var
MSG: TLMessage;
begin
Result := True;
EventTrace('day changed', data);
MSG.Msg := LM_DAYCHANGED;
Result := DeliverPostMessage(Data, MSG);
// Result := DeliverMessage(Data, MSG) = 0;
end;
function gtkdraw(Widget: PGtkWidget; area: PGDKRectangle; data: gPointer) : GBoolean; cdecl;
var
MSG: TLMPaint;
@ -333,6 +344,18 @@ begin
//TObject(data).Dispatch(Mess);
end;
function gtkmonthchanged(Widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
var
MSG: TLMessage;
begin
Result := True;
EventTrace('month changed', data);
MSG.Msg := LM_MONTHCHANGED;
Result := DeliverPostMessage(Data, MSG);
// Result := DeliverMessage(Data, MSG) = 0;
end;
function GTKMotionNotify(widget:PGTKWidget; event: PGDKEventMotion; data: gPointer):GBoolean; cdecl;
var
Msg: TLMMouseMove;
@ -1270,6 +1293,17 @@ begin
Result := 0;
end;
function gtkyearchanged(Widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
var
MSG: TLMessage;
begin
Result := True;
EventTrace('year changed', data);
MSG.Msg := LM_YEARCHANGED;
Result := DeliverPostMessage(Data, MSG);
end;
{------------------------------------------------------------------------------
ClipboardSelectionReceivedHandler
@ -1465,6 +1499,10 @@ end;
{ =============================================================================
$Log$
Revision 1.50 2001/12/05 18:23:47 lazarus
Added events to Calendar
Shane
Revision 1.49 2001/11/30 16:41:59 lazarus
Improved hints with overlapping windows.
Shane

View File

@ -465,12 +465,6 @@ begin
LM_BRINGTOFRONT:
begin
Writeln('----------------------------');
Writeln('----------------------------');
Writeln('----------------------------');
Writeln('----------------------------');
Writeln('----------------------------');
Writeln('----------------------------');
{ Assert(False, 'Trace:TODO:bringtofront');
//For now just hide and show again.
if (Sender is TControl) then begin
@ -1587,6 +1581,13 @@ begin
begin
ConnectSignal(gObject, 'configure-event', @gtkconfigureevent);
end;
LM_DAYCHANGED : //calendar
Begin
ConnectSignal(gObject, 'day-selected', @gtkdaychanged);
ConnectSignal(gObject, 'day-selected-double-click', @gtkdaychanged);
end;
LM_PAINT :
begin
@ -1636,6 +1637,13 @@ begin
ConnectSignal(gFixed, 'key-release-event', @GTKKeyUpDown, GDK_KEY_RELEASE_MASK);
end;
LM_MONTHCHANGED : //calendar
Begin
ConnectSignal(gObject, 'month-changed', @gtkmonthchanged);
ConnectSignal(gObject, 'prev-month', @gtkmonthchanged);
ConnectSignal(gObject, 'next-month', @gtkmonthchanged);
end;
LM_MOUSEMOVE:
begin
if (sender is TComboBox) then Begin
@ -1799,6 +1807,13 @@ begin
begin
ConnectSignal(PGTKObject(gtk_scrolled_window_get_vadjustment(PGTKScrolledWindow(gObject))), 'value-changed', @GTKVScrollCB);
end;
LM_YEARCHANGED : //calendar
Begin
ConnectSignal(gObject, 'prev-year', @gtkyearchanged);
ConnectSignal(gObject, 'next-year', @gtkyearchanged);
end;
(*
LM_WINDOWPOSCHANGED:
begin
@ -3415,6 +3430,10 @@ end;
{ =============================================================================
$Log$
Revision 1.80 2001/12/05 18:23:48 lazarus
Added events to Calendar
Shane
Revision 1.79 2001/12/05 17:40:00 lazarus
Added READONLY to Calendar.
Shane

View File

@ -204,6 +204,9 @@ LM_DROPFILES = $0233;
LM_PARENTNOTIFY = $0210;
//Calendar
// lcl messages
@ -273,6 +276,10 @@ LM_CLOSEQUERY = LM_USER+62;
LM_DRAGSTART = LM_USER+63;
LM_DEACTIVATE = LM_USER+64; //used when a form is no longer in front
LM_MONTHCHANGED = LM_USER+65;
LM_YEARCHANGED = LM_USER+66;
LM_DAYCHANGED = LM_USER+67;
LM_CB_FIRST = LM_USER+100;
LM_CB_GETCOUNT = LM_CB_FIRST+1;
LM_CB_GETTEXT = LM_CB_FIRST+2;
@ -280,6 +287,7 @@ LM_CB_ADDTEXT = LM_CB_FIRST+3;
LM_CB_LAST = LM_CB_FIRST+10; //LM_USER+110
LM_UNKNOWN = LM_User+99;
LM_SYSCOMMAND = $0112;
@ -773,6 +781,10 @@ end.
{
$Log$
Revision 1.14 2001/12/05 18:23:47 lazarus
Added events to Calendar
Shane
Revision 1.13 2001/11/21 19:32:32 lazarus
TComboBox can now be moved in FormEditor
Shane