You've already forked lazarus-ccr
jvcllaz: Fix lclscaling of TJvTimeLine. Adjust demo to scaled imagelist.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7265 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -24,7 +24,6 @@
|
|||||||
</PublishOptions>
|
</PublishOptions>
|
||||||
<RunParams>
|
<RunParams>
|
||||||
<FormatVersion Value="2"/>
|
<FormatVersion Value="2"/>
|
||||||
<Modes Count="0"/>
|
|
||||||
</RunParams>
|
</RunParams>
|
||||||
<RequiredPackages Count="3">
|
<RequiredPackages Count="3">
|
||||||
<Item1>
|
<Item1>
|
||||||
@ -37,7 +36,7 @@
|
|||||||
<PackageName Value="LCL"/>
|
<PackageName Value="LCL"/>
|
||||||
</Item3>
|
</Item3>
|
||||||
</RequiredPackages>
|
</RequiredPackages>
|
||||||
<Units Count="3">
|
<Units Count="4">
|
||||||
<Unit0>
|
<Unit0>
|
||||||
<Filename Value="TimeLineDemo.lpr"/>
|
<Filename Value="TimeLineDemo.lpr"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
@ -56,6 +55,10 @@
|
|||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
</Unit2>
|
</Unit2>
|
||||||
|
<Unit3>
|
||||||
|
<Filename Value="TimelineDemo.inc"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
</Unit3>
|
||||||
</Units>
|
</Units>
|
||||||
</ProjectOptions>
|
</ProjectOptions>
|
||||||
<CompilerOptions>
|
<CompilerOptions>
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
{$mode objfpc}{$H+}
|
{$mode objfpc}{$H+}
|
||||||
|
|
||||||
uses
|
uses
|
||||||
Forms, datetimectrls, Interfaces,
|
Forms, Interfaces, LCLVersion,
|
||||||
TimelineNotesFormU in 'TimelineNotesFormU.pas' {TimelineNotesForm},
|
TimelineNotesFormU in 'TimelineNotesFormU.pas' {TimelineNotesForm},
|
||||||
TimelineMainFormU in 'TimelineMainFormU.pas' {TimelineMainForm};
|
TimelineMainFormU in 'TimelineMainFormU.pas' {TimelineMainForm};
|
||||||
|
|
||||||
|
3
components/jvcllaz/examples/JVTimeLine/TimelineDemo.inc
Normal file
3
components/jvcllaz/examples/JVTimeLine/TimelineDemo.inc
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{ Define HIGH_RES_IMAGELIST if you use Laz v2.0+ which introduces a
|
||||||
|
high-resolution imagelist }
|
||||||
|
{$DEFINE HIGH_RES_IMAGELIST}
|
File diff suppressed because it is too large
Load Diff
@ -26,12 +26,14 @@
|
|||||||
|
|
||||||
{$mode objfpc}{$H+}
|
{$mode objfpc}{$H+}
|
||||||
|
|
||||||
|
{$I TimelineDemo.inc}
|
||||||
|
|
||||||
unit TimelineMainFormU;
|
unit TimelineMainFormU;
|
||||||
|
|
||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
LCLIntf, LCLType,
|
LCLIntf, LCLType, LCLVersion,
|
||||||
SysUtils, Classes, Graphics, Controls, Forms, Dialogs, DateTimePicker,
|
SysUtils, Classes, Graphics, Controls, Forms, Dialogs, DateTimePicker,
|
||||||
ComCtrls, StdCtrls, ExtCtrls, Menus, ImgList, ComboEx, JvTimeLine;
|
ComCtrls, StdCtrls, ExtCtrls, Menus, ImgList, ComboEx, JvTimeLine;
|
||||||
|
|
||||||
@ -42,14 +44,12 @@ type
|
|||||||
TTimelineMainForm = class(TForm)
|
TTimelineMainForm = class(TForm)
|
||||||
Bevel1: TBevel;
|
Bevel1: TBevel;
|
||||||
CbImgIndex: TComboBoxEx;
|
CbImgIndex: TComboBoxEx;
|
||||||
ImageList1: TImageList;
|
|
||||||
Splitter1: TSplitter;
|
Splitter1: TSplitter;
|
||||||
PopupMenu1: TPopupMenu;
|
PopupMenu1: TPopupMenu;
|
||||||
Changecaption1: TMenuItem;
|
Changecaption1: TMenuItem;
|
||||||
remove1: TMenuItem;
|
remove1: TMenuItem;
|
||||||
Move1: TMenuItem;
|
Move1: TMenuItem;
|
||||||
N1: TMenuItem;
|
N1: TMenuItem;
|
||||||
ImageList2: TImageList;
|
|
||||||
StatusBar1: TStatusBar;
|
StatusBar1: TStatusBar;
|
||||||
Notes1: TMenuItem;
|
Notes1: TMenuItem;
|
||||||
N2: TMenuItem;
|
N2: TMenuItem;
|
||||||
@ -104,6 +104,9 @@ type
|
|||||||
procedure chkMultiClick(Sender: TObject);
|
procedure chkMultiClick(Sender: TObject);
|
||||||
procedure btnFontClick(Sender: TObject);
|
procedure btnFontClick(Sender: TObject);
|
||||||
procedure btnYrFontClick(Sender: TObject);
|
procedure btnYrFontClick(Sender: TObject);
|
||||||
|
procedure FormActivate(Sender: TObject);
|
||||||
|
procedure FormCreate(Sender: TObject);
|
||||||
|
procedure FormDestroy(Sender: TObject);
|
||||||
procedure FormShow(Sender: TObject);
|
procedure FormShow(Sender: TObject);
|
||||||
procedure TimeLine1Click(Sender: TObject);
|
procedure TimeLine1Click(Sender: TObject);
|
||||||
procedure Changecaption1Click(Sender: TObject);
|
procedure Changecaption1Click(Sender: TObject);
|
||||||
@ -121,7 +124,6 @@ type
|
|||||||
procedure udItemHeightClick(Sender: TObject; Button: TUDBtnType);
|
procedure udItemHeightClick(Sender: TObject; Button: TUDBtnType);
|
||||||
procedure chkOwnerDrawClick(Sender: TObject);
|
procedure chkOwnerDrawClick(Sender: TObject);
|
||||||
procedure Notes1Click(Sender: TObject);
|
procedure Notes1Click(Sender: TObject);
|
||||||
procedure FormCreate(Sender: TObject);
|
|
||||||
procedure TimeLine1SaveItem(Sender: TObject; Item: TJvTimeItem; Stream: TStream);
|
procedure TimeLine1SaveItem(Sender: TObject; Item: TJvTimeItem; Stream: TStream);
|
||||||
procedure TimeLine1LoadItem(Sender: TObject; Item: TJvTimeItem; Stream: TStream);
|
procedure TimeLine1LoadItem(Sender: TObject; Item: TJvTimeItem; Stream: TStream);
|
||||||
procedure TimeLine1DrawItem(Sender: TObject; ACanvas: TCanvas;
|
procedure TimeLine1DrawItem(Sender: TObject; ACanvas: TCanvas;
|
||||||
@ -133,7 +135,6 @@ type
|
|||||||
procedure btnAutoClick(Sender: TObject);
|
procedure btnAutoClick(Sender: TObject);
|
||||||
procedure btnLoadClick(Sender: TObject);
|
procedure btnLoadClick(Sender: TObject);
|
||||||
procedure btnSaveClick(Sender: TObject);
|
procedure btnSaveClick(Sender: TObject);
|
||||||
procedure FormDestroy(Sender: TObject);
|
|
||||||
procedure chkFlatClick(Sender: TObject);
|
procedure chkFlatClick(Sender: TObject);
|
||||||
procedure Exit1Click(Sender: TObject);
|
procedure Exit1Click(Sender: TObject);
|
||||||
procedure chkHelpYearClick(Sender: TObject);
|
procedure chkHelpYearClick(Sender: TObject);
|
||||||
@ -160,7 +161,13 @@ var
|
|||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
uses TimelineNotesFormU;
|
uses
|
||||||
|
{$IFDEF HIGH_RES_IMAGELIST}
|
||||||
|
TimelineImageModuleU,
|
||||||
|
{$ELSE}
|
||||||
|
TimelineImageModule_old,
|
||||||
|
{$ENDIF}
|
||||||
|
TimelineNotesFormU;
|
||||||
|
|
||||||
{$R *.lfm}
|
{$R *.lfm}
|
||||||
|
|
||||||
@ -172,7 +179,8 @@ type
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TTimelineMainForm.btnAddClick(Sender: TObject);
|
procedure TTimelineMainForm.btnAddClick(Sender: TObject);
|
||||||
var aItem: TJvTimeItem;
|
var
|
||||||
|
aItem: TJvTimeItem;
|
||||||
begin
|
begin
|
||||||
aItem := TimeLine1.Items.Add;
|
aItem := TimeLine1.Items.Add;
|
||||||
aItem.Caption := edCaption.Text;
|
aItem.Caption := edCaption.Text;
|
||||||
@ -318,21 +326,27 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TTimelineMainForm.chkLargeClick(Sender: TObject);
|
procedure TTimelineMainForm.chkLargeClick(Sender: TObject);
|
||||||
|
var
|
||||||
|
itemHeight: Integer;
|
||||||
begin
|
begin
|
||||||
if chkNoImages.Checked then
|
if chkNoImages.Checked then
|
||||||
Exit;
|
Exit;
|
||||||
if chkLarge.Checked then
|
if chkLarge.Checked then
|
||||||
begin
|
begin
|
||||||
TimeLine1.Images := ImageList2;
|
TimeLine1.Images := ImageModule.ImageList2;
|
||||||
TimeLine1.ItemHeight := 60;
|
itemHeight := 60;
|
||||||
udItemHeight.Position := 60;
|
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
TimeLine1.Images := ImageList1;
|
TimeLine1.Images := ImageModule.ImageList1;
|
||||||
TimeLine1.ItemHeight := 40;
|
itemHeight := 40;
|
||||||
udItemHeight.Position := 40;
|
|
||||||
end;
|
end;
|
||||||
|
{$IF LCL_FullVersion >= 1080000}
|
||||||
|
TimeLine1.ItemHeight := Scale96ToFont(itemHeight);
|
||||||
|
{$ELSE}
|
||||||
|
TimeLine1.ItemHeight := itemHeight;
|
||||||
|
{$IFEND}
|
||||||
|
udItemHeight.Position := TimeLine1.ItemHeight;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TTimelineMainForm.udYrSizeClick(Sender: TObject; Button: TUDBtnType);
|
procedure TTimelineMainForm.udYrSizeClick(Sender: TObject; Button: TUDBtnType);
|
||||||
@ -395,6 +409,12 @@ procedure TTimelineMainForm.FormCreate(Sender: TObject);
|
|||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
begin
|
begin
|
||||||
|
if ImageModule = nil then
|
||||||
|
Application.CreateForm(TImageModule, ImageModule);
|
||||||
|
|
||||||
|
TimeLine1.Images := ImageModule.ImageList1;
|
||||||
|
CbImgIndex.Images := ImageModule.ImageList1;
|
||||||
|
|
||||||
FCurColor := TimeLine1.Color;
|
FCurColor := TimeLine1.Color;
|
||||||
cbDragging.ItemIndex := 0;
|
cbDragging.ItemIndex := 0;
|
||||||
TimelineNotesForm := TTimelineNotesForm.Create(nil);
|
TimelineNotesForm := TTimelineNotesForm.Create(nil);
|
||||||
@ -403,9 +423,10 @@ begin
|
|||||||
TimeLine1.ShowSelection := false;
|
TimeLine1.ShowSelection := false;
|
||||||
TimeLine1.DoubleBuffered := false;
|
TimeLine1.DoubleBuffered := false;
|
||||||
|
|
||||||
for i := 0 to ImageList1.Count-1 do
|
for i := 0 to ImageModule.ImageList1.Count-1 do
|
||||||
CbImgIndex.Add(IntToStr(i), 0, i);
|
CbImgIndex.Add(IntToStr(i), 0, i);
|
||||||
CbImgIndex.ItemIndex := 0;
|
CbImgIndex.ItemIndex := 0;
|
||||||
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -597,6 +618,12 @@ begin
|
|||||||
Close;
|
Close;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TTimelineMainForm.FormActivate(Sender: TObject);
|
||||||
|
begin
|
||||||
|
udYrSize.Position := TimeLine1.YearWidth;
|
||||||
|
udItemHeight.Position := TimeLine1.ItemHeight;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TTimelineMainForm.chkHelpYearClick(Sender: TObject);
|
procedure TTimelineMainForm.chkHelpYearClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
TimeLine1.HelperYears := chkHelpYear.Checked;
|
TimeLine1.HelperYears := chkHelpYear.Checked;
|
||||||
|
3384
components/jvcllaz/examples/JVTimeLine/timelineimagemodule_old.lfm
Normal file
3384
components/jvcllaz/examples/JVTimeLine/timelineimagemodule_old.lfm
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,31 @@
|
|||||||
|
unit TimelineImageModule_old;
|
||||||
|
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
Classes, SysUtils, Controls;
|
||||||
|
|
||||||
|
type
|
||||||
|
|
||||||
|
{ TImageModuleOld }
|
||||||
|
|
||||||
|
TImageModule = class(TDataModule)
|
||||||
|
ImageList1: TImageList;
|
||||||
|
ImageList2: TImageList;
|
||||||
|
private
|
||||||
|
|
||||||
|
public
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
ImageModule: TImageModule;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
{$R *.lfm}
|
||||||
|
|
||||||
|
end.
|
||||||
|
|
4028
components/jvcllaz/examples/JVTimeLine/timelineimagemoduleu.lfm
Normal file
4028
components/jvcllaz/examples/JVTimeLine/timelineimagemoduleu.lfm
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,31 @@
|
|||||||
|
unit TimelineImageModuleU;
|
||||||
|
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
Classes, SysUtils, Controls;
|
||||||
|
|
||||||
|
type
|
||||||
|
|
||||||
|
{ TImageModule }
|
||||||
|
|
||||||
|
TImageModule = class(TDataModule)
|
||||||
|
ImageList1: TImageList;
|
||||||
|
ImageList2: TImageList;
|
||||||
|
private
|
||||||
|
|
||||||
|
public
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
ImageModule: TImageModule;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
{$R *.lfm}
|
||||||
|
|
||||||
|
end.
|
||||||
|
|
@ -42,11 +42,12 @@ unit JvTimeLine;
|
|||||||
|
|
||||||
{$mode objfpc}{$H+}
|
{$mode objfpc}{$H+}
|
||||||
{$WARN 5024 off : Parameter "$1" not used}
|
{$WARN 5024 off : Parameter "$1" not used}
|
||||||
|
|
||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
SysUtils, Classes,
|
SysUtils, Classes,
|
||||||
LCLType, LCLIntf, LMessages,
|
LCLType, LCLIntf, LMessages, LCLVersion,
|
||||||
Graphics, Controls, Forms, StdCtrls, ExtCtrls, ImgList,
|
Graphics, Controls, Forms, StdCtrls, ExtCtrls, ImgList,
|
||||||
JvConsts, JvComponent;
|
JvConsts, JvComponent;
|
||||||
|
|
||||||
@ -76,6 +77,7 @@ type
|
|||||||
FSelected: Boolean;
|
FSelected: Boolean;
|
||||||
FEnabled: Boolean;
|
FEnabled: Boolean;
|
||||||
FOnDestroy: TNotifyEvent;
|
FOnDestroy: TNotifyEvent;
|
||||||
|
function IsStoredWidth: Boolean;
|
||||||
procedure SetEnabled(Value: Boolean);
|
procedure SetEnabled(Value: Boolean);
|
||||||
procedure SetImageOffset(Value: Integer);
|
procedure SetImageOffset(Value: Integer);
|
||||||
procedure SetStyle(Value: TJvTimeItemType);
|
procedure SetStyle(Value: TJvTimeItemType);
|
||||||
@ -113,7 +115,7 @@ type
|
|||||||
property Selected: Boolean read FSelected write SetSelected default False;
|
property Selected: Boolean read FSelected write SetSelected default False;
|
||||||
property TextColor: TColor read FTextColor write SetTextColor default clBlack;
|
property TextColor: TColor read FTextColor write SetTextColor default clBlack;
|
||||||
property WidthAs: TJvTimeItemType read FStyle write SetStyle default asPixels;
|
property WidthAs: TJvTimeItemType read FStyle write SetStyle default asPixels;
|
||||||
property Width: Integer read FWidth write SetWidth default 50;
|
property Width: Integer read FWidth write SetWidth stored IsStoredWidth;
|
||||||
property OnDestroy: TNotifyEvent read FOnDestroy write FOnDestroy;
|
property OnDestroy: TNotifyEvent read FOnDestroy write FOnDestroy;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -206,16 +208,25 @@ type
|
|||||||
FHelperYears: Boolean;
|
FHelperYears: Boolean;
|
||||||
FDragLine: Boolean;
|
FDragLine: Boolean;
|
||||||
FLineVisible: Boolean;
|
FLineVisible: Boolean;
|
||||||
|
FYearLineLength: Integer;
|
||||||
|
FMonthLineLength: Integer;
|
||||||
|
FDayLineLength: Integer;
|
||||||
|
FYearTextTop: Integer;
|
||||||
|
FMonthTextTop: Integer;
|
||||||
|
FDayTextTop: Integer;
|
||||||
|
FItemMargin: Integer;
|
||||||
//--FMouseDown: Boolean;
|
//--FMouseDown: Boolean;
|
||||||
FNewHeight: Integer;
|
FNewHeight: Integer;
|
||||||
FOldX: Integer;
|
FOldX: Integer;
|
||||||
FOldHint: string;
|
FOldHint: string;
|
||||||
FStyle: TJvTimeLineStyle;
|
FStyle: TJvTimeLineStyle;
|
||||||
FScrollArrows: TJvScrollArrows;
|
FScrollArrows: TJvScrollArrows;
|
||||||
|
FScrollEdgeOffset: Integer;
|
||||||
FTimeItems: TJvTimeItems;
|
FTimeItems: TJvTimeItems;
|
||||||
FItemHeight: Integer;
|
FItemHeight: Integer;
|
||||||
FTopLevel: Integer;
|
FTopLevel: Integer;
|
||||||
FImages: TCustomImageList;
|
FImages: TCustomImageList;
|
||||||
|
FImagesWidth: Integer;
|
||||||
FYearFont: TFont;
|
FYearFont: TFont;
|
||||||
FSelectedItem: TJvTimeItem;
|
FSelectedItem: TJvTimeItem;
|
||||||
//FYearList: TList;
|
//FYearList: TList;
|
||||||
@ -246,6 +257,9 @@ type
|
|||||||
FShowSelection: Boolean;
|
FShowSelection: Boolean;
|
||||||
FOnItemMouseMove: TJvItemMouseMove;
|
FOnItemMouseMove: TJvItemMouseMove;
|
||||||
FSupportsColor: TColor;
|
FSupportsColor: TColor;
|
||||||
|
function IsStoredTopOffset: Boolean;
|
||||||
|
function IsStoredYearFont: Boolean;
|
||||||
|
function IsStoredYearWidth: Boolean;
|
||||||
procedure SetHelperYears(Value: Boolean);
|
procedure SetHelperYears(Value: Boolean);
|
||||||
procedure SetFlat(Value: Boolean);
|
procedure SetFlat(Value: Boolean);
|
||||||
procedure SetScrollArrows(Value: TJvScrollArrows);
|
procedure SetScrollArrows(Value: TJvScrollArrows);
|
||||||
@ -255,6 +269,9 @@ type
|
|||||||
procedure SetFirstDate(Value: TDate);
|
procedure SetFirstDate(Value: TDate);
|
||||||
procedure SetTimeItems(Value: TJvTimeItems);
|
procedure SetTimeItems(Value: TJvTimeItems);
|
||||||
procedure SetImages(Value: TCustomImageList);
|
procedure SetImages(Value: TCustomImageList);
|
||||||
|
{$IF LCL_FullVersion >= 2000000}
|
||||||
|
procedure SetImagesWidth(Value: Integer);
|
||||||
|
{$IFEND}
|
||||||
procedure SetShowMonths(Value: Boolean);
|
procedure SetShowMonths(Value: Boolean);
|
||||||
procedure SetShowDays(Value: Boolean);
|
procedure SetShowDays(Value: Boolean);
|
||||||
procedure SetSelectedItem(Value: TJvTimeItem);
|
procedure SetSelectedItem(Value: TJvTimeItem);
|
||||||
@ -364,14 +381,17 @@ type
|
|||||||
property MultiSelect: Boolean read FMultiSelect write SetMultiSelect default False;
|
property MultiSelect: Boolean read FMultiSelect write SetMultiSelect default False;
|
||||||
property Flat: Boolean read FFlat write SetFlat default False;
|
property Flat: Boolean read FFlat write SetFlat default False;
|
||||||
// property Hint: TTranslateString read GetHint write SetHint;
|
// property Hint: TTranslateString read GetHint write SetHint;
|
||||||
property YearFont: TFont read FYearFont write SetYearFont;
|
property YearFont: TFont read FYearFont write SetYearFont stored IsStoredYearFont;
|
||||||
property YearWidth: TJvYearWidth read FYearWidth write SetYearWidth default 140;
|
property YearWidth: TJvYearWidth read FYearWidth write SetYearWidth stored IsStoredYearWidth;
|
||||||
property TopOffset: Integer read FTopOffset write SetTopOffset default 21;
|
property TopOffset: Integer read FTopOffset write SetTopOffset stored IsStoredTopOffset;
|
||||||
property ShowMonthNames: Boolean read FShowMonths write SetShowMonths;
|
property ShowMonthNames: Boolean read FShowMonths write SetShowMonths;
|
||||||
property ShowSelection: Boolean read FShowSelection write SetShowSelection default False;
|
property ShowSelection: Boolean read FShowSelection write SetShowSelection default False;
|
||||||
property ShowDays: Boolean read FShowDays write SetShowDays default False;
|
property ShowDays: Boolean read FShowDays write SetShowDays default False;
|
||||||
property FirstVisibleDate: TDate read FFirstDate write SetFirstDate;
|
property FirstVisibleDate: TDate read FFirstDate write SetFirstDate;
|
||||||
property Images: TCustomImageList read FImages write SetImages;
|
property Images: TCustomImageList read FImages write SetImages;
|
||||||
|
{$IF LCL_FullVersion >= 2000000}
|
||||||
|
property ImagesWidth: Integer read FImagesWidth write SetImagesWidth default 0;
|
||||||
|
{$IFEND}
|
||||||
property Items: TJvTimeItems read FTimeItems write SetTimeItems;
|
property Items: TJvTimeItems read FTimeItems write SetTimeItems;
|
||||||
property ItemHeight: Integer read FItemHeight write SetItemHeight default 0;
|
property ItemHeight: Integer read FItemHeight write SetItemHeight default 0;
|
||||||
// property ItemAlign: TItemAlign read FItemAlign write SetItemAlign default tiCenter;
|
// property ItemAlign: TItemAlign read FItemAlign write SetItemAlign default tiCenter;
|
||||||
@ -394,6 +414,20 @@ type
|
|||||||
property OnItemMoved: TJvItemMovedEvent read FOnItemMoved write FOnItemMoved;
|
property OnItemMoved: TJvItemMovedEvent read FOnItemMoved write FOnItemMoved;
|
||||||
property OnItemMouseMove: TJvItemMouseMove read FOnItemMouseMove write FOnItemMouseMove;
|
property OnItemMouseMove: TJvItemMouseMove read FOnItemMouseMove write FOnItemMouseMove;
|
||||||
property OnItemMoving: TJvItemMovingEvent read FOnItemMoving write FOnItemMoving;
|
property OnItemMoving: TJvItemMovingEvent read FOnItemMoving write FOnItemMoving;
|
||||||
|
|
||||||
|
{ LCL scaling }
|
||||||
|
{$IF LCL_FullVersion >= 1080000}
|
||||||
|
protected
|
||||||
|
procedure DoAutoAdjustLayout(const AMode: TLayoutAdjustmentPolicy;
|
||||||
|
const AXProportion, AYProportion: Double); override;
|
||||||
|
public
|
||||||
|
procedure ScaleFontsPPI({$IF LCL_FullVersion >= 1080100}const AToPPI: Integer;{$IFEND}
|
||||||
|
const AProportion: Double); override;
|
||||||
|
{$IF LCL_FullVersion >= 2010000}
|
||||||
|
procedure FixDesignFontsPPI(const ADesignTimePPI: Integer); override;
|
||||||
|
{$IFEND}
|
||||||
|
{$IFEND}
|
||||||
|
|
||||||
public
|
public
|
||||||
constructor Create(AOwner: TComponent); override;
|
constructor Create(AOwner: TComponent); override;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
@ -414,6 +448,7 @@ type
|
|||||||
procedure EndUpdate; virtual;
|
procedure EndUpdate; virtual;
|
||||||
procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override;
|
procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override;
|
||||||
procedure BeginDrag(Immediate: Boolean; Threshold: Integer = -1);
|
procedure BeginDrag(Immediate: Boolean; Threshold: Integer = -1);
|
||||||
|
property ScrollEdgeOffset: Integer read FScrollEdgeOffset;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
TJvTimeLine = class(TJvCustomTimeLine)
|
TJvTimeLine = class(TJvCustomTimeLine)
|
||||||
@ -440,6 +475,9 @@ type
|
|||||||
property Hint;
|
property Hint;
|
||||||
property HorzSupports;
|
property HorzSupports;
|
||||||
property Images;
|
property Images;
|
||||||
|
{$IF LCL_FullVersion >= 2000000}
|
||||||
|
property ImagesWidth;
|
||||||
|
{$IFEND}
|
||||||
// property ItemAlign;
|
// property ItemAlign;
|
||||||
property ItemHeight;
|
property ItemHeight;
|
||||||
property Items;
|
property Items;
|
||||||
@ -502,15 +540,18 @@ uses
|
|||||||
JvJCLUtils, JvJVCLUtils;
|
JvJCLUtils, JvJVCLUtils;
|
||||||
|
|
||||||
const
|
const
|
||||||
FDayLineLength = 4;
|
DEFAULT_ITEM_MARGIN = 2;
|
||||||
FDayTextTop = 5;
|
DEFAULT_ITEM_WIDTH = 50;
|
||||||
FMonthLineLength = 10;
|
DEFAULT_DAY_LINELENGTH = 4;
|
||||||
FMonthTextTop = 24;
|
DEFAULT_DAY_TEXT_TOP = 5;
|
||||||
FYearLineLength = 24;
|
DEFAULT_MONTH_LINELENGTH = 10;
|
||||||
FYearTextTop = 32;
|
DEFAULT_MONTH_TEXT_TOP = 24;
|
||||||
FScrollEdgeOffset = 8;
|
DEFAULT_TOP_OFFSET = 21;
|
||||||
|
DEFAULT_YEAR_WIDTH = 140;
|
||||||
ITEM_MARGIN = 2;
|
DEFAULT_YEAR_LINELENGTH = 24;
|
||||||
|
DEFAULT_YEAR_FONT_SIZE = 18;
|
||||||
|
DEFAULT_YEAR_TEXT_TOP = 32;
|
||||||
|
DEFAULT_SCROLL_EDGE_OFFSET = 8;
|
||||||
|
|
||||||
var
|
var
|
||||||
FInitRepeatPause: Cardinal = 140;
|
FInitRepeatPause: Cardinal = 140;
|
||||||
@ -563,7 +604,7 @@ begin
|
|||||||
FSelected := False;
|
FSelected := False;
|
||||||
FImageIndex := ACollection.Count - 1;
|
FImageIndex := ACollection.Count - 1;
|
||||||
FLevel := FImageIndex;
|
FLevel := FImageIndex;
|
||||||
FWidth := 50;
|
FWidth := DEFAULT_ITEM_WIDTH; // will be scaled by TimeLine
|
||||||
FStyle := asPixels;
|
FStyle := asPixels;
|
||||||
FImageOffset := 0;
|
FImageOffset := 0;
|
||||||
Update;
|
Update;
|
||||||
@ -702,6 +743,12 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TJvTimeItem.IsStoredWidth: Boolean;
|
||||||
|
begin
|
||||||
|
Result := (WidthAs = asDays) or
|
||||||
|
(FWidth <> FParent.FTimeLine.Scale96ToFont(DEFAULT_ITEM_WIDTH));
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TJvTimeItem.SetWidth(Value: Integer);
|
procedure TJvTimeItem.SetWidth(Value: Integer);
|
||||||
begin
|
begin
|
||||||
if FWidth <> Value then
|
if FWidth <> Value then
|
||||||
@ -766,6 +813,8 @@ end;
|
|||||||
function TJvTimeItems.Add: TJvTimeItem;
|
function TJvTimeItems.Add: TJvTimeItem;
|
||||||
begin
|
begin
|
||||||
Result := TJvTimeItem(inherited Add);
|
Result := TJvTimeItem(inherited Add);
|
||||||
|
if Result.WidthAs = asPixels then
|
||||||
|
Result.Width := FTimeLine.Scale96ToFont(Result.Width);
|
||||||
Update(Result);
|
Update(Result);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -882,31 +931,43 @@ begin
|
|||||||
case FDirection of
|
case FDirection of
|
||||||
scrollLeft:
|
scrollLeft:
|
||||||
begin
|
begin
|
||||||
SetBounds(FScrollEdgeOffset, TimeLine.Height - FScrollEdgeOffset -
|
SetBounds(
|
||||||
|
TimeLine.FScrollEdgeOffset,
|
||||||
|
TimeLine.Height - TimeLine.ScrollEdgeOffset -
|
||||||
TimeLine.FScrollHeight,
|
TimeLine.FScrollHeight,
|
||||||
TimeLine.FScrollWidth, TimeLine.FScrollHeight);
|
TimeLine.FScrollWidth,
|
||||||
|
TimeLine.FScrollHeight
|
||||||
|
);
|
||||||
Anchors := [akLeft, akBottom];
|
Anchors := [akLeft, akBottom];
|
||||||
end;
|
end;
|
||||||
scrollRight:
|
scrollRight:
|
||||||
begin
|
begin
|
||||||
SetBounds(TimeLine.Width - FScrollEdgeOffset - TimeLine.FScrollWidth * 2,
|
SetBounds(
|
||||||
TimeLine.Height - FScrollEdgeOffset - TimeLine.FScrollHeight,
|
TimeLine.Width - TimeLine.ScrollEdgeOffset - TimeLine.FScrollWidth * 2,
|
||||||
TimeLine.FScrollWidth, TimeLine.FScrollHeight);
|
TimeLine.Height - TimeLine.ScrollEdgeOffset - TimeLine.FScrollHeight,
|
||||||
|
TimeLine.FScrollWidth,
|
||||||
|
TimeLine.FScrollHeight
|
||||||
|
);
|
||||||
Anchors := [akRight, akBottom];
|
Anchors := [akRight, akBottom];
|
||||||
end;
|
end;
|
||||||
scrollUp:
|
scrollUp:
|
||||||
begin
|
begin
|
||||||
Anchors := [];
|
Anchors := [];
|
||||||
SetBounds(TimeLine.Width - FScrollEdgeOffset - TimeLine.FScrollWidth,
|
SetBounds(
|
||||||
TimeLine.FItemOffset + FScrollEdgeOffset,
|
TimeLine.Width - TimeLine.ScrollEdgeOffset - TimeLine.FScrollWidth,
|
||||||
TimeLine.FScrollWidth, TimeLine.FScrollHeight);
|
TimeLine.FItemOffset + TimeLine.ScrollEdgeOffset,
|
||||||
|
TimeLine.FScrollWidth,
|
||||||
|
TimeLine.FScrollHeight);
|
||||||
Anchors := [akRight, akTop];
|
Anchors := [akRight, akTop];
|
||||||
end;
|
end;
|
||||||
scrollDown:
|
scrollDown:
|
||||||
begin
|
begin
|
||||||
SetBounds(TimeLine.Width - FScrollEdgeOffset - TimeLine.FScrollWidth,
|
SetBounds(
|
||||||
TimeLine.Height - FScrollEdgeOffset - TimeLine.FScrollHeight * 2,
|
TimeLine.Width - TimeLine.ScrollEdgeOffset - TimeLine.FScrollWidth,
|
||||||
TimeLine.FScrollWidth, TimeLine.FScrollHeight);
|
TimeLine.Height - TimeLine.ScrollEdgeOffset - TimeLine.FScrollHeight * 2,
|
||||||
|
TimeLine.FScrollWidth,
|
||||||
|
TimeLine.FScrollHeight
|
||||||
|
);
|
||||||
Anchors := [akRight, akBottom];
|
Anchors := [akRight, akBottom];
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -1097,7 +1158,7 @@ begin
|
|||||||
// FYearList := TList.Create;
|
// FYearList := TList.Create;
|
||||||
FScrollArrows := [scrollLeft..scrollDown];
|
FScrollArrows := [scrollLeft..scrollDown];
|
||||||
FSupportLines := False;
|
FSupportLines := False;
|
||||||
FTopOffset := 21;
|
FTopOffset := Scale96ToFont(DEFAULT_TOP_OFFSET);
|
||||||
FShowDays := False;
|
FShowDays := False;
|
||||||
FItemHeight := 0;
|
FItemHeight := 0;
|
||||||
FTopLevel := 0;
|
FTopLevel := 0;
|
||||||
@ -1105,18 +1166,26 @@ begin
|
|||||||
FShowItemHint := False;
|
FShowItemHint := False;
|
||||||
FShowHiddenItemHints := True;
|
FShowHiddenItemHints := True;
|
||||||
FFlat := False;
|
FFlat := False;
|
||||||
FYearWidth := 140;
|
FYearWidth := Scale96ToFont(DEFAULT_YEAR_WIDTH);
|
||||||
FMonthWidth := 12;
|
FYearTextTop := Scale96ToFont(DEFAULT_YEAR_TEXT_TOP);
|
||||||
|
FMonthTextTop := Scale96ToFont(DEFAULT_MONTH_TEXT_TOP);
|
||||||
|
FDayTextTop := Scale96ToFont(DEFAULT_DAY_TEXT_TOP);
|
||||||
|
FMonthWidth := FYearWidth / 12;
|
||||||
FMultiSelect := False;
|
FMultiSelect := False;
|
||||||
FDragLine := True;
|
FDragLine := True;
|
||||||
FTimeItems := TJvTimeItems.Create(Self);
|
FTimeItems := TJvTimeItems.Create(Self);
|
||||||
FImageChangeLink := TChangeLink.Create;
|
FImageChangeLink := TChangeLink.Create;
|
||||||
FImageChangeLink.OnChange := @ImagesChanged;
|
FImageChangeLink.OnChange := @ImagesChanged;
|
||||||
FYearFont := TFont.Create;
|
FYearFont := TFont.Create;
|
||||||
FYearFont.Size := 18;
|
FYearFont.Size := DEFAULT_YEAR_FONT_SIZE; // is scaled automatically
|
||||||
FYearFont.OnChange := @DoYearFontChange;
|
FYearFont.OnChange := @DoYearFontChange;
|
||||||
|
FYearLineLength := Scale96ToFont(DEFAULT_YEAR_LINELENGTH);
|
||||||
|
FMonthLineLength := Scale96ToFont(DEFAULT_MONTH_LINELENGTH);
|
||||||
|
FDayLineLength := Scale96ToFont(DEFAULT_DAY_LINELENGTH);
|
||||||
|
FItemMargin := Scale96ToFont(DEFAULT_ITEM_MARGIN);
|
||||||
FNewHeight := 0;
|
FNewHeight := 0;
|
||||||
FAutoSize := False;
|
FAutoSize := False;
|
||||||
|
FScrollEdgeOffset := Scale96ToFont(DEFAULT_SCROLL_EDGE_OFFSET);
|
||||||
FScrollWidth := GetSystemMetrics(SM_CXHSCROLL);
|
FScrollWidth := GetSystemMetrics(SM_CXHSCROLL);
|
||||||
FScrollHeight := GetSystemMetrics(SM_CXVSCROLL);
|
FScrollHeight := GetSystemMetrics(SM_CXVSCROLL);
|
||||||
UpdateOffset;
|
UpdateOffset;
|
||||||
@ -1140,6 +1209,60 @@ begin
|
|||||||
inherited Destroy;
|
inherited Destroy;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{$IF LCL_FullVersion >= 1080000}
|
||||||
|
procedure TJvCustomTimeLine.DoAutoAdjustLayout(
|
||||||
|
const AMode: TLayoutAdjustmentPolicy;
|
||||||
|
const AXProportion, AYProportion: Double);
|
||||||
|
var
|
||||||
|
i: Integer;
|
||||||
|
item: TJvTimeItem;
|
||||||
|
begin
|
||||||
|
inherited;
|
||||||
|
if AMode in [lapAutoAdjustWithoutHorizontalScrolling, lapAutoAdjustForDPI] then
|
||||||
|
begin
|
||||||
|
if FItemHeight <> 0 then
|
||||||
|
FItemHeight := round(FItemHeight * AYProportion);
|
||||||
|
if IsStoredTopOffset then
|
||||||
|
FTopOffset := round(FTopOffset * AYProportion);
|
||||||
|
if IsStoredYearWidth then
|
||||||
|
FYearWidth := round(FYearWidth * AYProportion);
|
||||||
|
|
||||||
|
for i := 0 to FTimeItems.Count - 1 do
|
||||||
|
begin
|
||||||
|
item := TJvTimeItem(FTimeItems[i]);
|
||||||
|
if item.IsStoredWidth and (item.WidthAs = asPixels) then
|
||||||
|
item.Width := round(item.Width * AXProportion);
|
||||||
|
end;
|
||||||
|
|
||||||
|
// geometries, not stored
|
||||||
|
FYearLineLength := round(DEFAULT_YEAR_LINELENGTH * AYProportion);
|
||||||
|
FMonthLineLength := round(DEFAULT_MONTH_LINELENGTH * AYProportion);
|
||||||
|
FDayLineLength := round(DEFAULT_DAY_LINELENGTH * AYProportion);
|
||||||
|
FYearTextTop := round(DEFAULT_YEAR_TEXT_TOP * AYProportion);
|
||||||
|
FMonthTextTop := round(DEFAULT_MONTH_TEXT_TOP * AYProportion);
|
||||||
|
FDayTextTop := round(DEFAULT_DAY_TEXT_TOP * AYProportion);
|
||||||
|
FScrollEdgeOffset := round(DEFAULT_SCROLL_EDGE_OFFSET * AXProportion);
|
||||||
|
FItemMargin := round(DEFAULT_ITEM_MARGIN * AXProportion);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{$IF LCL_FullVersion >= 2010000}
|
||||||
|
procedure TJvCustomTimeLine.FixDesignFontsPPI(const ADesignTimePPI: Integer);
|
||||||
|
begin
|
||||||
|
inherited;
|
||||||
|
DoFixDesignFontPPI(FYearFont, ADesignTimePPI);
|
||||||
|
end;
|
||||||
|
{$IFEND}
|
||||||
|
|
||||||
|
procedure TJvCustomTimeLine.ScaleFontsPPI(
|
||||||
|
{$IF LCL_FullVersion >= 1080100}const AToPPI: Integer;{$IFEND}
|
||||||
|
const AProportion: Double);
|
||||||
|
begin
|
||||||
|
inherited;
|
||||||
|
DoScaleFontPPI(FYearFont, AToPPI, AProportion);
|
||||||
|
end;
|
||||||
|
{$IFEND}
|
||||||
|
|
||||||
procedure TJvCustomTimeLine.DoYearFontChange(Sender: TObject);
|
procedure TJvCustomTimeLine.DoYearFontChange(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
Invalidate;
|
Invalidate;
|
||||||
@ -1166,7 +1289,7 @@ begin
|
|||||||
FArrows[I].UpdatePlacement;
|
FArrows[I].UpdatePlacement;
|
||||||
end;
|
end;
|
||||||
if FItemHeight = 0 then
|
if FItemHeight = 0 then
|
||||||
FItemHeight := Canvas.TextHeight('Tg') + ITEM_MARGIN;
|
FItemHeight := Canvas.TextHeight('Tg') + FItemMargin;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TJvCustomTimeLine.UpdateOffset;
|
procedure TJvCustomTimeLine.UpdateOffset;
|
||||||
@ -1214,7 +1337,7 @@ begin
|
|||||||
FArrows[scrollUp].Visible :=
|
FArrows[scrollUp].Visible :=
|
||||||
(scrollUp in ScrollArrows) and (FTopLevel > 0);
|
(scrollUp in ScrollArrows) and (FTopLevel > 0);
|
||||||
FArrows[scrollDown].Visible :=
|
FArrows[scrollDown].Visible :=
|
||||||
(scrollDown in ScrollArrows) and (FNewHeight >= Height) and not AutoSize ;
|
(scrollDown in ScrollArrows) and (FNewHeight >= Height) and not AutoSize;
|
||||||
end;
|
end;
|
||||||
{
|
{
|
||||||
procedure TJvCustomTimeLine.SetBorderStyle(Value: TBorderStyle);
|
procedure TJvCustomTimeLine.SetBorderStyle(Value: TBorderStyle);
|
||||||
@ -1302,6 +1425,15 @@ begin
|
|||||||
Invalidate;
|
Invalidate;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{$IF LCL_FullVersion >= 2000000}
|
||||||
|
procedure TJvCustomTimeLine.SetImagesWidth(Value: Integer);
|
||||||
|
begin
|
||||||
|
if FImagesWidth = Value then Exit;
|
||||||
|
FImagesWidth := Value;
|
||||||
|
Invalidate;
|
||||||
|
end;
|
||||||
|
{$IFEND}
|
||||||
|
|
||||||
procedure TJvCustomTimeLine.SetSelectedItem(Value: TJvTimeItem);
|
procedure TJvCustomTimeLine.SetSelectedItem(Value: TJvTimeItem);
|
||||||
begin
|
begin
|
||||||
if FSelectedItem <> Value then
|
if FSelectedItem <> Value then
|
||||||
@ -2000,6 +2132,11 @@ end;
|
|||||||
procedure TJvCustomTimeLine.DrawItem(Item: TJvTimeItem; ACanvas: TCanvas; var R: TRect);
|
procedure TJvCustomTimeLine.DrawItem(Item: TJvTimeItem; ACanvas: TCanvas; var R: TRect);
|
||||||
var
|
var
|
||||||
ts: TTextStyle;
|
ts: TTextStyle;
|
||||||
|
{$IF LCL_FullVersion >= 2000000}
|
||||||
|
imgList: TScaledImageListResolution;
|
||||||
|
{$ELSE}
|
||||||
|
imgList: TCustomImageList;
|
||||||
|
{$IFEND}
|
||||||
begin
|
begin
|
||||||
if Assigned(FOnDrawItem) and (FStyle in [tlOwnerDrawVariable, tlOwnerDrawFixed]) then
|
if Assigned(FOnDrawItem) and (FStyle in [tlOwnerDrawVariable, tlOwnerDrawFixed]) then
|
||||||
FOnDrawItem(Self, ACanvas, Item, R)
|
FOnDrawItem(Self, ACanvas, Item, R)
|
||||||
@ -2010,16 +2147,23 @@ begin
|
|||||||
|
|
||||||
if Assigned(FImages) and (Item.ImageIndex > -1) then
|
if Assigned(FImages) and (Item.ImageIndex > -1) then
|
||||||
begin
|
begin
|
||||||
|
{$IF LCL_FullVersion >= 2000000}
|
||||||
|
imgList := FImages.ResolutionForPPI[FImagesWidth, Font.PixelsPerInch, GetCanvasScaleFactor];
|
||||||
|
{$ELSE}
|
||||||
|
imgList := FImages;
|
||||||
|
{$IFEND}
|
||||||
if FUpdate = 0 then
|
if FUpdate = 0 then
|
||||||
begin
|
begin
|
||||||
ACanvas.Brush.Color := Color;
|
ACanvas.Brush.Color := Color;
|
||||||
ACanvas.FillRect(Rect(R.Left + Item.ImageOffset,
|
ACanvas.FillRect(Rect(
|
||||||
R.Top, R.Left + Item.ImageOffset + FImages.Width,
|
R.Left + Item.ImageOffset,
|
||||||
R.Top + FImages.Height));
|
R.Top, R.Left + Item.ImageOffset + imgList.Width,
|
||||||
with FImages do
|
R.Top + imgList.Height
|
||||||
Draw(ACanvas, R.Left + Item.ImageOffset, R.Top, Item.ImageIndex, Item.Enabled);
|
));
|
||||||
|
with imgList do
|
||||||
|
Draw(ACanvas, R.Left + Item.ImageOffset, R.Top, Item.ImageIndex, Item.Enabled);
|
||||||
end;
|
end;
|
||||||
Inc(R.Top, FImages.Height + 4); { adjust top to make room for text drawing }
|
Inc(R.Top, imgList.Height + 4); { adjust top to make room for text drawing }
|
||||||
end;
|
end;
|
||||||
|
|
||||||
if FUpdate = 0 then
|
if FUpdate = 0 then
|
||||||
@ -2624,6 +2768,21 @@ begin
|
|||||||
Result := False;
|
Result := False;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TJvCustomTimeLine.IsStoredTopOffset: Boolean;
|
||||||
|
begin
|
||||||
|
Result := FTopOffset <> Scale96ToFont(DEFAULT_TOP_OFFSET);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvCustomTimeLine.IsStoredYearFont: Boolean;
|
||||||
|
begin
|
||||||
|
Result := true;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvCustomTimeLine.IsStoredYearWidth: Boolean;
|
||||||
|
begin
|
||||||
|
Result := FYearWidth <> Scale96ToFont(DEFAULT_YEAR_WIDTH);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TJvCustomTimeLine.SetHorzSupport(const Value: Boolean);
|
procedure TJvCustomTimeLine.SetHorzSupport(const Value: Boolean);
|
||||||
begin
|
begin
|
||||||
if FHorzSupport <> Value then
|
if FHorzSupport <> Value then
|
||||||
|
Reference in New Issue
Block a user