Sign in Join
Wiki copytemporary

DateControls Package for Lazarus: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: DateControls Package for Lazarus

OldNewLine
1+> **Note:** These controls are now obsolete. The controls in [[DateTimeCtrls Package]] have improved functionality and completely cover the functionality of these!
2+
3+## Author
4+
5+
6+Zoran Vučenović
7+
8+## Introduction
9+
10+DateControls package contains two controls:
11+
12+![](/wiki-images/1/18/TDatePicker.PNG) TDatePicker and ![](/wiki-images/e/e8/TDBDatePicker.PNG)TDBDatePicker
13+
14+**These controls are now obsolete. The controls in [[DateTimeCtrls Package]] have improved functionality and completely cover the functionality of these!**
15+
16+Delphi's VCL has a control named [TDateTimePicker](http://docwiki.embarcadero.com/VCL/en/ComCtrls.TDateTimePicker), which I find very useful for editing dates. LCL, however, does not have this control. Instead, for editing dates LCL has a control named [TDateEdit](http://lazarus-ccr.sourceforge.net/docs/lcl/editbtn/tdateedit.html), but I prefer the VCL's TDateTimePicker.
17+
18+Therefore, I tried to create a cross-platform Lazarus control which would resemble VCL's TDateTimePicker as much as possible.
19+
20+The TDatePicker control does not use [native Win control](http://msdn.microsoft.com/en-us/library/system.windows.forms.datetimepicker.aspx). It descends from LCL-s TCustomControl to be cross-platform. It has been written and initially tested on Windows XP with Win widgetset, but then tested on Ubuntu Linux 9.10 with gtk2 widgetset, where additional adjustments had been made.
21+
22+Thanks to Željko Rikalo, its tested on qt and adjusted to be fully functional to qt users.
23+
24+Note that the TDatePicker control does not descend from TEdit, so it does not have unnecessary caret. The VCL's control doesn't have caret either.
25+
26+Unlike VCL's control, this control has no time editing feature. It can be used for date editing only. That's why it is named TDatePicker, not TDateTimePicker.
27+
28+## Downloading and installing
29+
30+Lazarus package DateControls.lpk can be downloaded [from here](http://datepicker.000space.com), packed in zip format.
31+
32+After downloaded, unzip the package.
33+
34+To install the package in Lazarus IDE follow these steps:
35+
36+1. Open the package in Package Editor (in Lazarus' main menu click *Package*, then *Open package file...* locate the file *datecontrols.lpk* and click *Open*).
37+2. Compile the package (click *Compile* in Package Editor's tool bar).
38+3. Install the package in the IDE (click *Install* – you will be asked if you want to rebuild Lazarus, click *Yes*. Wait until Lazarus rebuilds and restarts itself. The new tab *DateControls* appears on the component palette with TDatePicker and TDBDatePicker controls.
39+
40+## TDatePicker ![](/wiki-images/1/18/TDatePicker.PNG)
41+
42+### properties
43+
44+I'll explain some properties of TDatePicker control:
45+
46+#### TheDate: TDateTime
47+
48+
49+The date displayed on the control. This property is named TheDate, not Date, to avoid name conflict with [Date function](http://lazarus-ccr.sourceforge.net/docs/rtl/sysutils/date.html).
50+
51+#### MinDate: TDateTime
52+
53+
54+The minimal date user can enter.
55+
56+#### MaxDate: TDateTime
57+
58+
59+The maximal date user can enter.
60+
61+#### NullInputAllowed: Boolean
62+
63+
64+When True, the user can set the date to NullDate constant by pressing N key.
65+
66+#### CenturyFrom: Word
67+
68+
69+When user enters the year in two-digit format, then the CenturyFrom property is used to determine which century the year belongs to. The default is 1941, which means that when two digit years is entered, it falls in interval 1941 – 2040. Note that MinDate and MaxDate properties can also have influence on the decision – for example, if the CenturyFrom is set to 1941 and MaxDate to 31. 12. 2010, if user enters year 23, it will be set to 1923, because it can’t be 2033, due to MaxDate limit.
70+
71+#### ShowCalendar: Boolean
72+
73+
74+When set to True, there is a button on the right side of the control. When user clicks the button, [the calendar control](http://lazarus-ccr.sourceforge.net/docs/lcl/calendar/tcalendar.html) is shown, allowing the user to pick the date.
75+
76+<figure>
77+<img src="ShowCalendar.PNG" title="ShowCalendar.PNG" />
78+<figcaption>ShowCalendar.PNG</figcaption>
79+</figure>
80+
81+#### ShowCheckBox: Boolean
82+
83+
84+When set, there is a check box on the left side of the control. When unchecked, the display appears grayed and user interaction with the date is not possible. (The control is still enabled, though, only in sense that the check box remains enabled).
85+
86+<figure>
87+<img src="ShowCheckBox.PNG" title="ShowCheckBox.PNG" />
88+<figcaption>ShowCheckBox.PNG</figcaption>
89+</figure>
90+
91+#### Checked: Boolean
92+
93+
94+If ShowCheckBox is set to True, this property determines whether the check box is checked or not. If ShowCheckBox is False, this property has no purpose and is automatically set to True.
95+
96+#### DateDisplayOrder: TDateDisplayOrder
97+
98+
99+**type** TDateDisplayOrder = (ddoDMY, ddoMDY, ddoYMD, ddoTryDefault);
100+
101+
102+Defines the order for displaying day, month and year part of the date. When ddoTryDefault is set, then the controls tries to determine the order from [ShortDateFormat global variable](http://lazarus-ccr.sourceforge.net/docs/rtl/sysutils/shortdateformat.html).
103+
104+This is similar to DateEdit's [DateOrder](http://lazarus-ccr.sourceforge.net/docs/lcl/editbtn/tdateedit.dateorder.html) property.
105+
106+#### TheDateSeparator: UTF8String
107+
108+
109+Defines the string used to separate date, month and year date parts. Setting this property automatically sets the UseDefaultDateSeparator property to False. This property is named TheDateSeparator, not DateSeparator, to avoid name conflict with [DateSeparator global variable](http://lazarus-ccr.sourceforge.net/docs/rtl/sysutils/dateseparator.html).
110+
111+#### UseDefaultDateSeparator: Boolean
112+
113+
114+When UseDefaultDateSeparator is set to True, TheDateSeparator property is set to [DateSeparator global variable](http://lazarus-ccr.sourceforge.net/docs/rtl/sysutils/dateseparator.html).
115+
116+#### TrailingSeparator: Boolean
117+
118+
119+When set to True, then TheDateSeparator is shown once more, after the last date part. This property exists because in some languages the correct format is 31. 1. 2010. including the last point, after the year.
120+
121+#### LeadingZeros: Boolean
122+
123+
124+Determines whether the date parts are displayed with or without leading zeros.
125+
126+#### TextForNullDate: UTF8String
127+
128+
129+Text which appears when the null date is set and control does not have focus. When control is focused, the text changes to defined format, but displaying zeros, which is appropriate to user input. User can set the date to NullDate by pressing N key, provided NullInputAllowed property is True.
130+
131+## TDBDatePicker ![](/wiki-images/1/18/TDatePicker.PNG)
132+
133+
134+TDBDatePicker is a data-aware version of TDatePicker, with nice way of handling null database values.
135+
136+### Handling of null values
137+
138+#### Displaying null values
139+
140+
141+When the underlying DB field has null value, then:
142+
143+
144+
145+If the control is not focused, then it displays the text defined in TextForNullDate property. The default is "NULL".
146+
147+
148+
149+When the control gets focus, the text changes to defined format, but displaying zeros (for example "00/00/0000"), which is appropriate to user input.
150+
151+#### Setting the field value to null
152+
153+
154+
155+If NullInputAllowed property is True, the user can set the date to null, by pressing N key.
156+
157+## See also
158+
159+- [[DateTimeCtrls Package]] Please use this package instead as DateControls is obsolete.
160+
161+---
162+*From the Free Pascal wiki, page "DateControls Package for Lazarus", as it stood on 2020-08-08 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
163+Category: Components
164+Category: Lazarus

Back to history