You've already forked lazarus-ccr
tvplanit: Add editing of events to TVpMonthView by double-click
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@5990 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@@ -1749,7 +1749,7 @@ begin
|
|||||||
Invalidate;
|
Invalidate;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{$IF VP_LCL_SCALING}
|
{$IF VP_LCL_SCALING=1}
|
||||||
procedure TVpContactGrid.ScaleFontsPPI(const AProportion: Double);
|
procedure TVpContactGrid.ScaleFontsPPI(const AProportion: Double);
|
||||||
begin
|
begin
|
||||||
inherited;
|
inherited;
|
||||||
|
@@ -646,7 +646,7 @@ var
|
|||||||
cont: TVpContact;
|
cont: TVpContact;
|
||||||
task: TvpTask;
|
task: TvpTask;
|
||||||
i, j: Integer;
|
i, j: Integer;
|
||||||
// s: String;
|
s: String;
|
||||||
stream: TStream;
|
stream: TStream;
|
||||||
begin
|
begin
|
||||||
if FFilename = '' then
|
if FFilename = '' then
|
||||||
@@ -710,9 +710,12 @@ begin
|
|||||||
|
|
||||||
stream := TFileStream.Create(FFilename, fmCreate);
|
stream := TFileStream.Create(FFilename, fmCreate);
|
||||||
try
|
try
|
||||||
|
{$IF FPC_FULLVERSION < 030000}
|
||||||
|
s := json.FormatJSON;
|
||||||
|
stream.Write(s[1], Length(s));
|
||||||
|
{$ELSE}
|
||||||
json.DumpJSON(stream);
|
json.DumpJSON(stream);
|
||||||
// s := json.FormatJSON;
|
{$ENDIF}
|
||||||
// stream.Write(s[1], Length(s));
|
|
||||||
finally
|
finally
|
||||||
stream.Free;
|
stream.Free;
|
||||||
end;
|
end;
|
||||||
|
@@ -172,7 +172,9 @@ type
|
|||||||
FMouseDate: TDateTime;
|
FMouseDate: TDateTime;
|
||||||
|
|
||||||
{ event variables }
|
{ event variables }
|
||||||
|
FOnAddEvent: TVpOnAddNewEvent;
|
||||||
FOwnerDrawCells: TVpOwnerDrawDayEvent;
|
FOwnerDrawCells: TVpOwnerDrawDayEvent;
|
||||||
|
FOwnerEditEvent: TVpEditEvent;
|
||||||
FOnEventClick: TVpOnEventClick;
|
FOnEventClick: TVpOnEventClick;
|
||||||
FOnEventDblClick: TVpOnEventClick;
|
FOnEventDblClick: TVpOnEventClick;
|
||||||
|
|
||||||
@@ -207,6 +209,7 @@ type
|
|||||||
{ internal methods }
|
{ internal methods }
|
||||||
function GetDateAtCoord(APoint: TPoint): TDateTime;
|
function GetDateAtCoord(APoint: TPoint): TDateTime;
|
||||||
procedure mvPopulate;
|
procedure mvPopulate;
|
||||||
|
procedure mvSpawnEventEditDialog(NewEvent: Boolean);
|
||||||
procedure mvSpinButtonClick(Sender: TObject; Button: TUDBtnType);
|
procedure mvSpinButtonClick(Sender: TObject; Button: TUDBtnType);
|
||||||
procedure mvSetDateByCoord(APoint: TPoint);
|
procedure mvSetDateByCoord(APoint: TPoint);
|
||||||
procedure mvHookUp;
|
procedure mvHookUp;
|
||||||
@@ -308,9 +311,11 @@ type
|
|||||||
property WeekendAttributes: TVpMvWeekendAttr read FWeekendAttr write FWeekendAttr;
|
property WeekendAttributes: TVpMvWeekendAttr read FWeekendAttr write FWeekendAttr;
|
||||||
property WeekStartsOn: TVpDayType read FWeekStartsOn write SetWeekStartsOn;
|
property WeekStartsOn: TVpDayType read FWeekStartsOn write SetWeekStartsOn;
|
||||||
{events}
|
{events}
|
||||||
|
property OnAddEvent: TVpOnAddNewEvent read FOnAddEvent write FOnAddEvent;
|
||||||
property OnEventClick: TVpOnEventClick read FOnEventClick write FOnEventClick;
|
property OnEventClick: TVpOnEventClick read FOnEventClick write FOnEventClick;
|
||||||
property OnEventDblClick: TVpOnEventClick read FOnEventDblClick write FOnEventDblClick;
|
property OnEventDblClick: TVpOnEventClick read FOnEventDblClick write FOnEventDblClick;
|
||||||
property OnHoliday: TVpHolidayEvent read FOnHoliday write FOnHoliday;
|
property OnHoliday: TVpHolidayEvent read FOnHoliday write FOnHoliday;
|
||||||
|
property OnOwnerEditEvent: TVpEditEvent read FOwnerEditEvent write FOwnerEditEvent;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@@ -321,7 +326,7 @@ uses
|
|||||||
DateUtils,
|
DateUtils,
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
SysUtils, LazUTF8, Dialogs, StrUtils,
|
SysUtils, LazUTF8, Dialogs, StrUtils,
|
||||||
VpMonthViewPainter;
|
VpMonthViewPainter, VpEvntEditDlg;
|
||||||
|
|
||||||
(*****************************************************************************)
|
(*****************************************************************************)
|
||||||
{ TVpMonthViewAttr }
|
{ TVpMonthViewAttr }
|
||||||
@@ -653,6 +658,48 @@ begin
|
|||||||
end;
|
end;
|
||||||
{=====}
|
{=====}
|
||||||
|
|
||||||
|
procedure TVpMonthView.mvSpawnEventEditDialog(NewEvent: Boolean);
|
||||||
|
var
|
||||||
|
AllowIt: Boolean;
|
||||||
|
EventDlg : TVpEventEditDialog;
|
||||||
|
begin
|
||||||
|
if DataStore = nil then Exit;
|
||||||
|
|
||||||
|
if (not NewEvent) and (not mvActiveEvent.CanEdit) then begin
|
||||||
|
MessageDlg(RSCannotEditOverlayedEvent, mtInformation, [mbOk], 0);
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
|
||||||
|
AllowIt := false;
|
||||||
|
if Assigned(FOwnerEditEvent) then
|
||||||
|
FOwnerEditEvent(self, mvActiveEvent, DataStore.Resource, AllowIt)
|
||||||
|
else begin
|
||||||
|
EventDlg := TVpEventEditDialog.Create(nil);
|
||||||
|
try
|
||||||
|
EventDlg.DataStore := DataStore;
|
||||||
|
EventDlg.TimeFormat := FTimeFormat;
|
||||||
|
AllowIt := EventDlg.Execute(mvActiveEvent);
|
||||||
|
finally
|
||||||
|
EventDlg.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if AllowIt then begin
|
||||||
|
mvActiveEvent.Changed := true;
|
||||||
|
DataStore.PostEvents;
|
||||||
|
if Assigned(FOnAddEvent) then
|
||||||
|
FOnAddEvent(self, mvActiveEvent);
|
||||||
|
Invalidate;
|
||||||
|
end else begin
|
||||||
|
if NewEvent then begin
|
||||||
|
DataStore.Resource.Schedule.DeleteEvent(mvActiveEvent);
|
||||||
|
mvActiveEvent := nil;
|
||||||
|
end;
|
||||||
|
DataStore.PostEvents;
|
||||||
|
Invalidate;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TVpMonthView.mvSpinButtonClick(Sender: TObject; Button: TUDBtnType);
|
procedure TVpMonthView.mvSpinButtonClick(Sender: TObject; Button: TUDBtnType);
|
||||||
var
|
var
|
||||||
M, D, Y: Word;
|
M, D, Y: Word;
|
||||||
@@ -875,20 +922,38 @@ procedure TVpMonthView.WMLButtonDblClick(var Msg: TWMLButtonDblClk);
|
|||||||
{$ELSE}
|
{$ELSE}
|
||||||
procedure TVpMonthView.WMLButtonDblClick(var Msg: TLMLButtonDblClk);
|
procedure TVpMonthView.WMLButtonDblClick(var Msg: TLMLButtonDblClk);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
var
|
||||||
|
startTime, endTime: TDateTime;
|
||||||
begin
|
begin
|
||||||
inherited;
|
inherited;
|
||||||
// if the mouse was pressed down in the client area, then select the
|
// if the mouse was pressed down in the client area, then select the cell.
|
||||||
// cell.
|
|
||||||
if not focused then SetFocus;
|
if not focused then SetFocus;
|
||||||
|
|
||||||
if (Msg.YPos > mvDayHeadHeight) then
|
if (Msg.YPos > mvDayHeadHeight) then
|
||||||
begin
|
begin
|
||||||
{ The mouse click landed inside the client area }
|
{ The mouse click landed inside the client area }
|
||||||
MvSetDateByCoord(Point(Msg.XPos, Msg.YPos));
|
MvSetDateByCoord(Point(Msg.XPos, Msg.YPos));
|
||||||
|
|
||||||
{ Did the mouse click land on an event? }
|
{ Did the mouse click land on an event? }
|
||||||
if SelectEventAtCoord(Point(Msg.XPos, Msg.YPos))
|
if Assigned(FOnEventDblClick) then begin
|
||||||
and (Assigned(FOnEventDblClick)) then
|
if SelectEventAtCoord(Point(Msg.XPos, Msg.YPos)) then
|
||||||
FOnEventDblClick(self, mvActiveEvent);
|
FOnEventDblClick(self, mvActiveEvent);
|
||||||
|
end else
|
||||||
|
if mvActiveEvent <> nil then
|
||||||
|
mvSpawnEventEditDialog(SelectEventAtCoord(Point(Msg.XPos, Msg.YPos)))
|
||||||
|
else
|
||||||
|
if (DataStore.Resource <> nil) then begin
|
||||||
|
{ otherwise, we must want to create a new event }
|
||||||
|
startTime := trunc(Date) + 0.5; { default to 12:00 noon }
|
||||||
|
endTime := startTime + 30 / MinutesInDay; { StartTime + 30 minutes }
|
||||||
|
mvActiveEvent := DataStore.Resource.Schedule.AddEvent(
|
||||||
|
DataStore.GetNextID('Events'),
|
||||||
|
startTime,
|
||||||
|
endTime
|
||||||
|
);
|
||||||
|
{ edit this new event }
|
||||||
|
mvSpawnEventEditDialog(True); // true = new event
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
{=====}
|
{=====}
|
||||||
|
@@ -1248,7 +1248,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{$IF VP_LCL_SCALING}
|
{$IF VP_LCL_SCALING=1}
|
||||||
procedure TVpTaskList.ScaleFontsPPI(const AProportion: Double);
|
procedure TVpTaskList.ScaleFontsPPI(const AProportion: Double);
|
||||||
begin
|
begin
|
||||||
inherited;
|
inherited;
|
||||||
|
Reference in New Issue
Block a user