You've already forked lazarus-ccr
tvplanit: Replace TVpWeekView's updown control by 4 speedbuttons for navigation to prev/next month/week, issue #39035.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8388 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -1299,30 +1299,22 @@ end;
|
|||||||
|
|
||||||
procedure TVpMonthView.PopupNextMonth(Sender: TObject);
|
procedure TVpMonthView.PopupNextMonth(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
SpinButtonClick(FNextMonthBtn);
|
Date := IncMonth(Date, +1);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TVpMonthView.PopupPrevMonth(Sender: TObject);
|
procedure TVpMonthView.PopupPrevMonth(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
SpinButtonClick(FPrevMonthBtn);
|
Date := IncMonth(Date, -1);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TVpMonthView.PopupNextYear(Sender: TObject);
|
procedure TVpMonthView.PopupNextYear(Sender: TObject);
|
||||||
//var
|
|
||||||
// M, D, Y: Word;
|
|
||||||
begin
|
begin
|
||||||
SpinButtonClick(FNextYearBtn);
|
Date := IncYear(Date, +1);
|
||||||
// DecodeDate(Date, Y, M, D);
|
|
||||||
// Date := EncodeDate(Y + 1, M, 1);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TVpMonthView.PopupPrevYear(Sender: TObject);
|
procedure TVpMonthView.PopupPrevYear(Sender: TObject);
|
||||||
//var
|
|
||||||
// M, D, Y: Word;
|
|
||||||
begin
|
begin
|
||||||
SpinButtonClick(FPrevYearBtn);
|
Date := IncYear(Date, -1);
|
||||||
// DecodeDate(Date, Y, M, D);
|
|
||||||
// Date := EncodeDate(Y - 1, M, 1);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TVpMonthView.PopupCustomDate(Sender: TObject);
|
procedure TVpMonthView.PopupCustomDate(Sender: TObject);
|
||||||
|
@ -59,7 +59,7 @@ uses
|
|||||||
{$ELSE}
|
{$ELSE}
|
||||||
Windows, Messages,
|
Windows, Messages,
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
Classes, Graphics, Controls, ComCtrls, ExtCtrls, StdCtrls, Forms, Menus,
|
Classes, Graphics, Controls, ComCtrls, ExtCtrls, StdCtrls, Buttons, Forms, Menus,
|
||||||
VpConst, VpBase, VpBaseDS, VpMisc, VpData, VpSR, VpCanvasUtils, VpDayView;
|
VpConst, VpBase, VpBaseDS, VpMisc, VpData, VpSR, VpCanvasUtils, VpDayView;
|
||||||
|
|
||||||
type
|
type
|
||||||
@ -158,6 +158,11 @@ type
|
|||||||
FAllowDragAndDrop: Boolean;
|
FAllowDragAndDrop: Boolean;
|
||||||
FApplyCategoryInfos: Boolean;
|
FApplyCategoryInfos: Boolean;
|
||||||
FDragDropTransparent: Boolean;
|
FDragDropTransparent: Boolean;
|
||||||
|
FPrevWeekBtn: TSpeedButton;
|
||||||
|
FPrevMonthBtn: TSpeedButton;
|
||||||
|
FNextMonthBtn: TSpeedButton;
|
||||||
|
FNextWeekBtn: TSpeedButton;
|
||||||
|
|
||||||
{ event variables }
|
{ event variables }
|
||||||
FBeforeEdit: TVpBeforeEditEvent;
|
FBeforeEdit: TVpBeforeEditEvent;
|
||||||
FAfterEdit: TVpAfterEditEvent;
|
FAfterEdit: TVpAfterEditEvent;
|
||||||
@ -173,7 +178,6 @@ type
|
|||||||
// wvDayHeadHeight: Integer;
|
// wvDayHeadHeight: Integer;
|
||||||
wvHeaderHeight: Integer;
|
wvHeaderHeight: Integer;
|
||||||
wvStartDate: TDateTime;
|
wvStartDate: TDateTime;
|
||||||
wvSpinButtons: TUpDown;
|
|
||||||
wvEventList: TList;
|
wvEventList: TList;
|
||||||
wvEventArray: TVpEventArray;
|
wvEventArray: TVpEventArray;
|
||||||
wvWeekdayArray: TVpWeekdayArray;
|
wvWeekdayArray: TVpWeekdayArray;
|
||||||
@ -215,10 +219,10 @@ type
|
|||||||
procedure InitializeDefaultPopup;
|
procedure InitializeDefaultPopup;
|
||||||
|
|
||||||
{ internal methods }
|
{ internal methods }
|
||||||
|
procedure SpinButtonClick(Sender: TObject);
|
||||||
procedure wvEditInPlace(Sender: TObject);
|
procedure wvEditInPlace(Sender: TObject);
|
||||||
procedure wvHookUp;
|
procedure wvHookUp;
|
||||||
procedure wvPopulate;
|
procedure wvPopulate;
|
||||||
procedure wvSpinButtonClick(Sender: TObject; Button: TUDBtnType);
|
|
||||||
|
|
||||||
{ event related methods }
|
{ event related methods }
|
||||||
procedure EditEvent;
|
procedure EditEvent;
|
||||||
@ -474,17 +478,38 @@ begin
|
|||||||
FHeadAttr := TVpWvHeadAttributes.Create(self);
|
FHeadAttr := TVpWvHeadAttributes.Create(self);
|
||||||
FAllDayEventAttr := TVpAllDayEventAttributes.Create(self);
|
FAllDayEventAttr := TVpAllDayEventAttributes.Create(self);
|
||||||
|
|
||||||
|
FPrevMonthBtn := TSpeedButton.Create(self);
|
||||||
|
FPrevMonthBtn.Hint := RSPrevMonth;
|
||||||
|
FPrevMonthBtn.OnClick := SpinButtonClick;
|
||||||
|
FPrevWeekBtn := TSpeedButton.Create(self);
|
||||||
|
FPrevWeekBtn.Hint := RSPrevWeek;
|
||||||
|
FPrevWeekBtn.OnClick := SpinButtonClick;
|
||||||
|
FNextWeekBtn := TSpeedButton.Create(self);
|
||||||
|
FNextWeekBtn.Hint := RSNextWeek;
|
||||||
|
FNextWeekBtn.OnClick := SpinButtonClick;
|
||||||
|
FNextMonthBtn := TSpeedButton.Create(self);
|
||||||
|
FNextMonthBtn.Hint := RSNextMonth;
|
||||||
|
FNextMonthBtn.OnClick := SpinButtonClick;
|
||||||
|
|
||||||
|
// Speedbutton glyphs
|
||||||
|
{$IFDEF NEW_ICONS}
|
||||||
|
LoadGlyphFromRCDATA(FPrevMonthBtn.Glyph, 'VpLArrows', 16, 24, 32);
|
||||||
|
LoadGlyphFromRCDATA(FPrevWeekBtn.Glyph, 'VpLArrow', 16, 24, 32);
|
||||||
|
LoadGlyphFromRCDATA(FNextWeekBtn.Glyph, 'VpRArrow', 16, 24, 32);
|
||||||
|
LoadGlyphFromRCDATA(FNextMonthBtn.Glyph, 'VpRArrows', 16, 24, 32);
|
||||||
|
{$ELSE}
|
||||||
|
FPrevMonthBtn.Glyph.LoadFromResourceName(HINSTANCE, 'VPLEFTARROWS');
|
||||||
|
FPrevWeekBtn.Glyph.LoadFromResourceName(HINSTANCE, 'VPLEFTARROW');
|
||||||
|
FNextWeekBtn.Glyph.LoadFromResourceName(HINSTANCE, 'VPRIGHTARROW');
|
||||||
|
FNextMonthUpBtn.Glyph.LoadFromResourceName(HINSTANCE, 'VPRIGHTARROWS');
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
FEventFont := TVpFont.Create(self);
|
FEventFont := TVpFont.Create(self);
|
||||||
FEventFont.Assign(Font);
|
FEventFont.Assign(Font);
|
||||||
FShowEventTime := true;
|
FShowEventTime := true;
|
||||||
wvInLinkHandler := false;
|
wvInLinkHandler := false;
|
||||||
wvEventList := TList.Create;
|
wvEventList := TList.Create;
|
||||||
wvClickTimer := TTimer.Create(self);
|
wvClickTimer := TTimer.Create(self);
|
||||||
wvSpinButtons := TUpDown.Create(self);
|
|
||||||
wvSpinButtons.OnClick := wvSpinButtonClick;
|
|
||||||
wvSpinButtons.Orientation := udHorizontal;
|
|
||||||
wvSpinButtons.Min := -32768;
|
|
||||||
wvSpinButtons.Max := 32767;
|
|
||||||
wvHotPoint := Point(0, 0);
|
wvHotPoint := Point(0, 0);
|
||||||
wvDragging := false;
|
wvDragging := false;
|
||||||
wvMouseDownPoint := Point(0, 0);
|
wvMouseDownPoint := Point(0, 0);
|
||||||
@ -547,7 +572,6 @@ begin
|
|||||||
FHeadAttr.Free;
|
FHeadAttr.Free;
|
||||||
wvClickTimer.Free;
|
wvClickTimer.Free;
|
||||||
FEventFont.Free;
|
FEventFont.Free;
|
||||||
wvSpinButtons.Free;
|
|
||||||
wvEventList.Free;
|
wvEventList.Free;
|
||||||
FDefaultPopup.Free;
|
FDefaultPopup.Free;
|
||||||
inherited;
|
inherited;
|
||||||
@ -787,16 +811,18 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
{=====}
|
|
||||||
|
|
||||||
procedure TVpWeekView.wvSpinButtonClick(Sender: TObject; Button: TUDBtnType);
|
procedure TVpWeekView.SpinButtonClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
if Button = btNext then
|
if Sender = FPrevWeekBtn then
|
||||||
Date := Date + 7
|
Date := IncWeek(Date, -1)
|
||||||
else
|
else if Sender = FNextWeekBtn then
|
||||||
Date := Date - 7;
|
Date := IncWeek(Date, +1)
|
||||||
|
else if Sender = FPrevMonthBtn then
|
||||||
|
Date := IncMonth(Date, -1)
|
||||||
|
else if Sender = FNextMonthBtn then
|
||||||
|
Date := IncMonth(Date, +1);
|
||||||
end;
|
end;
|
||||||
{=====}
|
|
||||||
|
|
||||||
procedure TVpWeekView.SetColor(Value: TColor);
|
procedure TVpWeekView.SetColor(Value: TColor);
|
||||||
begin
|
begin
|
||||||
@ -805,7 +831,6 @@ begin
|
|||||||
Invalidate;
|
Invalidate;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
{=====}
|
|
||||||
|
|
||||||
procedure TVpWeekView.SetActiveEvent(AValue: TVpEvent);
|
procedure TVpWeekView.SetActiveEvent(AValue: TVpEvent);
|
||||||
begin
|
begin
|
||||||
@ -829,7 +854,6 @@ begin
|
|||||||
Invalidate;
|
Invalidate;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
{=====}
|
|
||||||
|
|
||||||
procedure TVpWeekView.SetLineColor(Value: TColor);
|
procedure TVpWeekView.SetLineColor(Value: TColor);
|
||||||
begin
|
begin
|
||||||
@ -857,7 +881,6 @@ begin
|
|||||||
FEventFont.Assign(Value);
|
FEventFont.Assign(Value);
|
||||||
Invalidate;
|
Invalidate;
|
||||||
end;
|
end;
|
||||||
{=====}
|
|
||||||
|
|
||||||
procedure TVpWeekView.SetLayout(AValue: TVpWeekviewLayout);
|
procedure TVpWeekView.SetLayout(AValue: TVpWeekviewLayout);
|
||||||
begin
|
begin
|
||||||
@ -874,7 +897,6 @@ begin
|
|||||||
Invalidate;
|
Invalidate;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
{=====}
|
|
||||||
|
|
||||||
procedure TVpWeekView.SetTimeFormat(Value: TVpTimeFormat);
|
procedure TVpWeekView.SetTimeFormat(Value: TVpTimeFormat);
|
||||||
begin
|
begin
|
||||||
@ -883,7 +905,6 @@ begin
|
|||||||
Invalidate;
|
Invalidate;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
{=====}
|
|
||||||
|
|
||||||
procedure TVpWeekView.SetActiveDate(Value: TDateTime);
|
procedure TVpWeekView.SetActiveDate(Value: TDateTime);
|
||||||
begin
|
begin
|
||||||
@ -905,7 +926,6 @@ begin
|
|||||||
ControlLink.Notify(self, neDateChange, FActiveDate);
|
ControlLink.Notify(self, neDateChange, FActiveDate);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
{=====}
|
|
||||||
|
|
||||||
procedure TVpWeekView.SetWeekStartsOn(Value: TVpDayType);
|
procedure TVpWeekView.SetWeekStartsOn(Value: TVpDayType);
|
||||||
begin
|
begin
|
||||||
@ -914,7 +934,6 @@ begin
|
|||||||
Invalidate;
|
Invalidate;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
{=====}
|
|
||||||
|
|
||||||
{$IFNDEF LCL}
|
{$IFNDEF LCL}
|
||||||
procedure TVpWeekView.WMSize(var Msg: TWMSize);
|
procedure TVpWeekView.WMSize(var Msg: TWMSize);
|
||||||
@ -926,7 +945,6 @@ begin
|
|||||||
{ force a repaint on resize }
|
{ force a repaint on resize }
|
||||||
Invalidate;
|
Invalidate;
|
||||||
end;
|
end;
|
||||||
{=====}
|
|
||||||
|
|
||||||
procedure TVpWeekView.CreateParams(var Params: TCreateParams);
|
procedure TVpWeekView.CreateParams(var Params: TCreateParams);
|
||||||
begin
|
begin
|
||||||
@ -939,14 +957,15 @@ begin
|
|||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
{=====}
|
|
||||||
|
|
||||||
procedure TVpWeekView.CreateWnd;
|
procedure TVpWeekView.CreateWnd;
|
||||||
begin
|
begin
|
||||||
inherited;
|
inherited;
|
||||||
wvSpinButtons.Parent := self;
|
FPrevMonthBtn.Parent := Self;
|
||||||
|
FPrevWeekBtn.Parent := Self;
|
||||||
|
FNextWeekBtn.Parent := Self;
|
||||||
|
FNextMonthBtn.Parent := Self;
|
||||||
end;
|
end;
|
||||||
{=====}
|
|
||||||
|
|
||||||
procedure TVpWeekView.DoEndDrag(Target: TObject; X, Y: Integer);
|
procedure TVpWeekView.DoEndDrag(Target: TObject; X, Y: Integer);
|
||||||
begin
|
begin
|
||||||
@ -1369,69 +1388,35 @@ procedure TVpWeekView.PopupToday(Sender: TObject);
|
|||||||
begin
|
begin
|
||||||
Date := Now;
|
Date := Now;
|
||||||
end;
|
end;
|
||||||
{=====}
|
|
||||||
|
|
||||||
procedure TVpWeekView.PopupNextWeek(Sender: TObject);
|
procedure TVpWeekView.PopupNextWeek(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
Date := Date + 7;
|
Date := Date + 7;
|
||||||
end;
|
end;
|
||||||
{=====}
|
|
||||||
|
|
||||||
procedure TVpWeekView.PopupPrevWeek(Sender: TObject);
|
procedure TVpWeekView.PopupPrevWeek(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
Date := Date - 7;
|
Date := Date - 7;
|
||||||
end;
|
end;
|
||||||
{=====}
|
|
||||||
|
|
||||||
procedure TVpWeekView.PopupNextMonth(Sender: TObject);
|
procedure TVpWeekView.PopupNextMonth(Sender: TObject);
|
||||||
var
|
|
||||||
M, D, Y: Word;
|
|
||||||
begin
|
begin
|
||||||
DecodeDate(Date, Y, M, D);
|
Date := IncMonth(Date, 1);
|
||||||
if M = 12 then begin
|
|
||||||
M := 1;
|
|
||||||
Y := Y + 1;
|
|
||||||
end else
|
|
||||||
M := M + 1;
|
|
||||||
if (D > DaysInAMonth(Y, M)) then
|
|
||||||
D := DaysInAMonth(Y, M);
|
|
||||||
|
|
||||||
Date := EncodeDate(Y, M, D);
|
|
||||||
end;
|
end;
|
||||||
{=====}
|
|
||||||
|
|
||||||
procedure TVpWeekView.PopupPrevMonth(Sender : TObject);
|
procedure TVpWeekView.PopupPrevMonth(Sender : TObject);
|
||||||
var
|
|
||||||
M, D, Y: Word;
|
|
||||||
begin
|
begin
|
||||||
DecodeDate(Date, Y, M, D);
|
Date := IncMonth(Date, -1);
|
||||||
if M = 1 then begin
|
|
||||||
M := 12;
|
|
||||||
Y := Y - 1;
|
|
||||||
end else
|
|
||||||
M := M - 1;
|
|
||||||
if (D > DaysInAMonth(Y, M)) then
|
|
||||||
D := DaysInAMonth(Y, M);
|
|
||||||
|
|
||||||
Date := EncodeDate(Y, M, D);
|
|
||||||
end;
|
end;
|
||||||
{=====}
|
|
||||||
|
|
||||||
procedure TVpWeekView.PopupNextYear(Sender: TObject);
|
procedure TVpWeekView.PopupNextYear(Sender: TObject);
|
||||||
var
|
|
||||||
M, D, Y: Word;
|
|
||||||
begin
|
begin
|
||||||
DecodeDate(Date, Y, M, D);
|
Date := IncYear(Date, +1);
|
||||||
Date := EncodeDate(Y + 1, M, 1);
|
|
||||||
end;
|
end;
|
||||||
{=====}
|
|
||||||
|
|
||||||
procedure TVpWeekView.PopupPrevYear(Sender: TObject);
|
procedure TVpWeekView.PopupPrevYear(Sender: TObject);
|
||||||
var
|
|
||||||
M, D, Y : Word;
|
|
||||||
begin
|
begin
|
||||||
DecodeDate(Date, Y, M, D);
|
Date := IncYear(Date, -1);
|
||||||
Date := EncodeDate(Y - 1, M, 1);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TVpWeekView.PopupCustomDate(Sender: TObject);
|
procedure TVpWeekView.PopupCustomDate(Sender: TObject);
|
||||||
|
@ -600,6 +600,7 @@ var
|
|||||||
HeadStrLen: Integer;
|
HeadStrLen: Integer;
|
||||||
weekNo: Integer;
|
weekNo: Integer;
|
||||||
startStr, endStr: String;
|
startStr, endStr: String;
|
||||||
|
txtStart: Integer;
|
||||||
begin
|
begin
|
||||||
RenderCanvas.Brush.Color := RealHeadAttrColor;
|
RenderCanvas.Brush.Color := RealHeadAttrColor;
|
||||||
RenderCanvas.Font.Assign(TFont(FWeekView.HeadAttributes.Font));
|
RenderCanvas.Font.Assign(TFont(FWeekView.HeadAttributes.Font));
|
||||||
@ -657,16 +658,34 @@ begin
|
|||||||
HeadTextRect.Right - HeadTextRect.Left - TextMargin );
|
HeadTextRect.Right - HeadTextRect.Left - TextMargin );
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ position the spinner }
|
{ Position the spinner }
|
||||||
with TVpWeekViewOpener(FWeekView) do begin
|
with TVpWeekViewOpener(FWeekView) do begin
|
||||||
wvSpinButtons.Height := Trunc(wvHeaderHeight * 0.8);
|
FPrevMonthBtn.Height := Trunc(wvHeaderHeight * 0.8);;
|
||||||
wvSpinButtons.Width := wvSpinButtons.Height * 2;
|
FPrevMonthBtn.Width := FPrevMonthBtn.Height;
|
||||||
wvSpinButtons.Left := TextMargin;
|
FPrevMonthBtn.Left := TextMargin;
|
||||||
wvSpinButtons.Top := (wvHeaderHeight - wvSpinButtons.Height) div 2 + 2;
|
FPrevMonthBtn.Top := (wvHeaderHeight - FPrevMonthBtn.Height) div 2 + 2;
|
||||||
|
|
||||||
|
FPrevWeekBtn.Height := FPrevMonthBtn.Height;
|
||||||
|
FPrevWeekBtn.Width := FPrevMonthBtn.Height;
|
||||||
|
FPrevWeekBtn.Left := FPrevMonthBtn.Left + FPrevMonthBtn.Width;
|
||||||
|
FPrevWeekBtn.Top := FPrevMonthBtn.Top;
|
||||||
|
|
||||||
|
FNextWeekBtn.Height := FPrevMonthBtn.Height;
|
||||||
|
FNextWeekBtn.Width := FPrevMonthBtn.Height;
|
||||||
|
FNextWeekBtn.Left := FPrevWeekBtn.Left + FPrevWeekBtn.Width;
|
||||||
|
FNextWeekBtn.Top := FPrevMonthBtn.Top;
|
||||||
|
|
||||||
|
FNextMonthBtn.Height := FPrevMonthBtn.Height;
|
||||||
|
FNextMonthBtn.Width := FPrevMonthBtn.Height;
|
||||||
|
FNextMonthBtn.Left := FNextWeekBtn.Left + FNextWeekBtn.Width;
|
||||||
|
FNextMonthBtn.Top := FPrevMonthBtn.Top;
|
||||||
|
|
||||||
|
txtStart := FNextMonthBtn.Left + FNextMonthBtn.Width + TextMargin;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
TPSTextOut(RenderCanvas, Angle, RenderIn,
|
TPSTextOut(RenderCanvas, Angle, RenderIn,
|
||||||
HeadTextRect.Left + TextMargin,
|
txtStart,
|
||||||
(HeadTextRect.Top + HeadTextRect.Bottom - RenderCanvas.TextHeight('Tg')) div 2, //HeadTextRect.Top + TextMargin,
|
(HeadTextRect.Top + HeadTextRect.Bottom - RenderCanvas.TextHeight('Tg')) div 2,
|
||||||
HeadStr
|
HeadStr
|
||||||
);
|
);
|
||||||
end;
|
end;
|
||||||
|
Reference in New Issue
Block a user