X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/457e6c54a28bc20cf347ba921755d7d5b296aa2a..5c5428f9132822d5d39b02c46dd89464adff9f1f:/docs/latex/wx/calctrl.tex diff --git a/docs/latex/wx/calctrl.tex b/docs/latex/wx/calctrl.tex index de9d266b42..068282a468 100644 --- a/docs/latex/wx/calctrl.tex +++ b/docs/latex/wx/calctrl.tex @@ -6,18 +6,448 @@ %% Created: 03.01.00 %% RCS-ID: $Id$ %% Copyright: (c) Vadim Zeitlin -%% Licence: wxWindows licence +%% License: wxWindows license %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{\class{wxCalendarCtrl}}\label{wxcalendarctrl} -The calendar control allows the user to pick a date interactively. +The calendar control allows the user to pick a date interactively. For this, +it displays a window containing several parts: the control to pick the month +and the year at the top (either or both of them may be disabled) and a month +area below them which shows all the days in the month. The user can move the +current selection using the keyboard and select the date (generating +{\tt EVT\_CALENDAR} event) by pressing {\tt } or double clicking it. + +It has advanced possibilities for the customization of its display. All global +settings (such as colours and fonts used) can, of course, be changed. But +also, the display style for each day in the month can be set independently +using \helpref{wxCalendarDateAttr}{wxcalendardateattr} class. + +An item without custom attributes is drawn with the default colours and +font and without border, but setting custom attributes with +\helpref{SetAttr}{wxcalendarctrlsetattr} allows to modify its appearance. Just +create a custom attribute object and set it for the day you want to be +displayed specially (note that the control will take ownership of the pointer, +i.e. it will delete it itself). A day may be marked as being a holiday, even +if it is not recognized as one by \helpref{wxDateTime}{tdateholidays} using +\helpref{SetHoliday}{wxcalendardateattrsetholiday} method. + +As the attributes are specified for each day, they may change when the month +is changed, so you will often want to update them in +{\tt EVT\_CALENDAR\_MONTH} event handler. + +\wxheading{Derived from} + +\helpref{wxControl}{wxcontrol}\\ +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} \wxheading{Include files} -\wxheading{See also:} +\wxheading{Window styles} + +\twocolwidtha{5cm} +\begin{twocollist}\itemsep=4pt +\twocolitem{\windowstyle{wxCAL\_SUNDAY\_FIRST}}{Show Sunday as the first day in the week} +\twocolitem{\windowstyle{wxCAL\_MONDAY\_FIRST}}{Show Monday as the first day in the week} +\twocolitem{\windowstyle{wxCAL\_SHOW\_HOLIDAYS}}{Highlight holidays in the calendar} +\twocolitem{\windowstyle{wxCAL\_NO\_YEAR\_CHANGE}}{Disable the year changing} +\twocolitem{\windowstyle{wxCAL\_NO\_MONTH\_CHANGE}}{Disable the month (and, implicitly, the year) changing} +\twocolitem{\windowstyle{wxCAL\_SHOW\_SURROUNDING\_WEEKS}}{Show the neighbouring weeks in the previous and next months} +\twocolitem{\windowstyle{wxCAL\_SEQUENTIAL\_MONTH\_SELECTION}}{Use alternative, more compact, style for the month and year selection controls.} +\end{twocollist} + +The default calendar style is {\tt wxCAL\_SHOW\_HOLIDAYS}. + +\wxheading{Event table macros} + +To process input from a calendar control, use these event handler macros to +direct input to member functions that take a +\helpref{wxCalendarEvent}{wxcalendarevent} argument. + +\twocolwidtha{7cm} +\begin{twocollist}\itemsep=7pt +\twocolitem{{\bf EVT\_CALENDAR(id, func)}}{A day was double clicked in the calendar.} +\twocolitem{{\bf EVT\_CALENDAR\_SEL\_CHANGED(id, func)}}{The selected date changed.} +\twocolitem{{\bf EVT\_CALENDAR\_DAY(id, func)}}{The selected day changed.} +\twocolitem{{\bf EVT\_CALENDAR\_MONTH(id, func)}}{The selected month changed.} +\twocolitem{{\bf EVT\_CALENDAR\_YEAR(id, func)}}{The selected year changed.} +\twocolitem{{\bf EVT\_CALENDAR\_WEEKDAY\_CLICKED(id, func)}}{User clicked on the week day header} +\end{twocollist}% + +Note that changing the selected date will result in either of +{\tt EVT\_CALENDAR\_DAY}, {\tt MONTH} or {\tt YEAR} events and +{\tt EVT\_CALENDAR\_SEL\_CHANGED} one. + +\wxheading{Constants} + +The following are the possible return values for +\helpref{HitTest}{wxcalendarctrlhittest} method: + +{\small +\begin{verbatim} +enum wxCalendarHitTestResult +{ + wxCAL_HITTEST_NOWHERE, // outside of anything + wxCAL_HITTEST_HEADER, // on the header (weekdays) + wxCAL_HITTEST_DAY // on a day in the calendar +} +\end{verbatim} +} + +\wxheading{See also} + +\helpref{Calendar sample}{samplecalendar}\\ +\helpref{wxCalendarDateAttr}{wxcalendardateattr}\\ +\helpref{wxCalendarEvent}{wxcalendarevent} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxCalendarCtrl::wxCalendarCtrl}\label{wxcalendarctrlwxcalendarctrldef} + +\func{}{wxCalendarCtrl}{\void} + +Default constructor, use \helpref{Create}{wxcalendarctrlcreate} after it. + +\membersection{wxCalendarCtrl::wxCalendarCtrl}\label{wxcalendarctrlwxcalendarctrl} + +\func{}{wxCalendarCtrl}{\param{wxWindow* }{parent}, \param{wxWindowID }{id}, \param{const wxDateTime\& }{date = wxDefaultDateTime}, \param{const wxPoint\& }{pos = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize}, \param{long }{style = wxCAL\_SHOW\_HOLIDAYS}, \param{const wxString\& }{name = wxCalendarNameStr}} + +Does the same as \helpref{Create}{wxcalendarctrlcreate} method. + +\membersection{wxCalendarCtrl::Create}\label{wxcalendarctrlcreate} + +\func{bool}{Create}{\param{wxWindow* }{parent}, \param{wxWindowID }{id}, \param{const wxDateTime\& }{date = wxDefaultDateTime}, \param{const wxPoint\& }{pos = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize}, \param{long }{style = wxCAL\_SHOW\_HOLIDAYS}, \param{const wxString\& }{name = wxCalendarNameStr}} + +Creates the control. See \helpref{wxWindow}{wxwindowctor} for the meaning of +the parameters and the control overview for the possible styles. + +\membersection{wxCalendarCtrl::\destruct{wxCalendarCtrl}}\label{wxcalendarctrldtor} + +\func{}{\destruct{wxCalendarCtrl}}{\void} + +Destroys the control. + +\membersection{wxCalendarCtrl::SetDate}\label{wxcalendarctrlsetdate} + +\func{void}{SetDate}{\param{const wxDateTime\& }{date}} + +Sets the current date. + +\membersection{wxCalendarCtrl::GetDate}\label{wxcalendarctrlgetdate} + +\constfunc{const wxDateTime\&}{GetDate}{\void} + +Gets the currently selected date. + +\membersection{wxCalendarCtrl::EnableYearChange}\label{wxcalendarctrlenableyearchange} + +\func{void}{EnableYearChange}{\param{bool }{enable = true}} + +This function should be used instead of changing {\tt wxCAL\_NO\_YEAR\_CHANGE} +style bit directly. It allows or disallows the user to change the year +interactively. + +\membersection{wxCalendarCtrl::EnableMonthChange}\label{wxcalendarctrlenablemonthchange} + +\func{void}{EnableMonthChange}{\param{bool }{enable = true}} + +This function should be used instead of changing +{\tt wxCAL\_NO\_MONTH\_CHANGE} style bit. It allows or disallows the user to +change the month interactively. Note that if the month can not be changed, the +year can not be changed neither. + +\membersection{wxCalendarCtrl::EnableHolidayDisplay}\label{wxcalendarctrlenableholidaydisplay} + +\func{void}{EnableHolidayDisplay}{\param{bool }{display = true}} + +This function should be used instead of changing {\tt wxCAL\_SHOW\_HOLIDAYS} +style bit directly. It enables or disables the special highlighting of the +holidays. + +\membersection{wxCalendarCtrl::SetHeaderColours}\label{wxcalendarctrlsetheadercolours} + +\func{void}{SetHeaderColours}{\param{const wxColour\& }{colFg}, \param{const wxColour\& }{colBg}} + +Set the colours used for painting the weekdays at the top of the control. + +\membersection{wxCalendarCtrl::GetHeaderColourFg}\label{wxcalendarctrlgetheadercolourfg} + +\constfunc{const wxColour\&}{GetHeaderColourFg}{\void} + +Gets the foreground colour of the header part of the calendar window. + +\wxheading{See also} + +\helpref{SetHeaderColours}{wxcalendarctrlsetheadercolours} + +\membersection{wxCalendarCtrl::GetHeaderColourBg}\label{wxcalendarctrlgetheadercolourbg} + +\constfunc{const wxColour\&}{GetHeaderColourBg}{\void} + +Gets the background colour of the header part of the calendar window. + +\wxheading{See also} + +\helpref{SetHeaderColours}{wxcalendarctrlsetheadercolours} + +\membersection{wxCalendarCtrl::SetHighlightColours}\label{wxcalendarctrlsethighlightcolours} + +\func{void}{SetHighlightColours}{\param{const wxColour\& }{colFg}, \param{const wxColour\& }{colBg}} + +Set the colours to be used for highlighting the currently selected date. + +\membersection{wxCalendarCtrl::GetHighlightColourFg}\label{wxcalendarctrlgethighlightcolourfg} + +\constfunc{const wxColour\&}{GetHighlightColourFg}{\void} + +Gets the foreground highlight colour. + +\wxheading{See also} + +\helpref{SetHighlightColours}{wxcalendarctrlsethighlightcolours} + +\membersection{wxCalendarCtrl::GetHighlightColourBg}\label{wxcalendarctrlgethighlightcolourbg} + +\constfunc{const wxColour\&}{GetHighlightColourBg}{\void} + +Gets the background highlight colour. + +\wxheading{See also} + +\helpref{SetHighlightColours}{wxcalendarctrlsethighlightcolours} + +\membersection{wxCalendarCtrl::SetHolidayColours}\label{wxcalendarctrlsetholidaycolours} + +\func{void}{SetHolidayColours}{\param{const wxColour\& }{colFg}, \param{const wxColour\& }{colBg}} + +Sets the colours to be used for the holidays highlighting (only used if the +window style includes {\tt wxCAL\_SHOW\_HOLIDAYS} flag). + +\membersection{wxCalendarCtrl::GetHolidayColourFg}\label{wxcalendarctrlgetholidaycolourfg} + +\constfunc{const wxColour\&}{GetHolidayColourFg}{\void} + +Return the foreground colour currently used for holiday highlighting. + +\wxheading{See also} + +\helpref{SetHolidayColours}{wxcalendarctrlsetholidaycolours} + +\membersection{wxCalendarCtrl::GetHolidayColourBg}\label{wxcalendarctrlgetholidaycolourbg} + +\constfunc{const wxColour\&}{GetHolidayColourBg}{\void} + +Return the background colour currently used for holiday highlighting. + +\wxheading{See also} + +\helpref{SetHolidayColours}{wxcalendarctrlsetholidaycolours} + +\membersection{wxCalendarCtrl::GetAttr}\label{wxcalendarctrlgetattr} + +\constfunc{wxCalendarDateAttr *}{GetAttr}{\param{size\_t }{day}} + +Returns the attribute for the given date (should be in the range $1\ldots31$). + +The returned pointer may be {\tt NULL}. + +\membersection{wxCalendarCtrl::SetAttr}\label{wxcalendarctrlsetattr} + +\func{void}{SetAttr}{\param{size\_t }{day}, \param{wxCalendarDateAttr* }{attr}} + +Associates the attribute with the specified date (in the range $1\ldots31$). + +If the pointer is {\tt NULL}, the items attribute is cleared. + +\membersection{wxCalendarCtrl::SetHoliday}\label{wxcalendarctrlsetholiday} + +\func{void}{SetHoliday}{\param{size\_t }{day}} + +Marks the specified day as being a holiday in the current month. + +\membersection{wxCalendarCtrl::ResetAttr}\label{wxcalendarctrlresetattr} + +\func{void}{ResetAttr}{\param{size\_t }{day}} + +Clears any attributes associated with the given day (in the range +$1\ldots31$). + +\membersection{wxCalendarCtrl::HitTest}\label{wxcalendarctrlhittest} + +\func{wxCalendarHitTestResult}{HitTest}{\param{const wxPoint\& }{pos}, \param{wxDateTime* }{date = NULL}, \param{wxDateTime::WeekDay* }{wd = NULL}} + +Returns one of {\tt wxCAL\_HITTEST\_XXX} +\helpref{constants}{wxcalendarctrl} and fills either {\it date} or +{\it wd} pointer with the corresponding value depending on the hit test code. + +\section{\class{wxCalendarDateAttr}}\label{wxcalendardateattr} + +wxCalendarDateAttr is a custom attributes for a calendar date. The objects of +this class are used with \helpref{wxCalendarCtrl}{wxcalendarctrl}. + +\wxheading{Derived from} + +No base class + +\wxheading{Constants} + +Here are the possible kinds of borders which may be used to decorate a date: + +\begin{verbatim} +enum wxCalendarDateBorder +{ + wxCAL_BORDER_NONE, // no border (default) + wxCAL_BORDER_SQUARE, // a rectangular border + wxCAL_BORDER_ROUND // a round border +} +\end{verbatim} + +\wxheading{See also} + +\helpref{wxCalendarCtrl}{wxcalendarctrl} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxCalendarDateAttr::wxCalendarDateAttr}\label{wxcalendardateattrwxcalendardateattr} + +\func{}{wxCalendarDateAttr}{\void} + +\func{}{wxCalendarDateAttr}{\param{const wxColour\& }{colText}, \param{const wxColour\& }{colBack = wxNullColour}, \param{const wxColour\& }{colBorder = wxNullColour}, \param{const wxFont\& }{font = wxNullFont}, \param{wxCalendarDateBorder }{border = wxCAL\_BORDER\_NONE}} + +\func{}{wxCalendarDateAttr}{\param{wxCalendarDateBorder }{border}, \param{const wxColour\& }{colBorder = wxNullColour}} + +The constructors. + +\membersection{wxCalendarDateAttr::SetTextColour}\label{wxcalendardateattrsettextcolour} + +\func{void}{SetTextColour}{\param{const wxColour\& }{colText}} + +Sets the text (foreground) colour to use. + +\membersection{wxCalendarDateAttr::SetBackgroundColour}\label{wxcalendardateattrsetbackgroundcolour} + +\func{void}{SetBackgroundColour}{\param{const wxColour\& }{colBack}} + +Sets the text background colour to use. + +\membersection{wxCalendarDateAttr::SetBorderColour}\label{wxcalendardateattrsetbordercolour} + +\func{void}{SetBorderColour}{\param{const wxColour\& }{col}} + +Sets the border colour to use. + +\membersection{wxCalendarDateAttr::SetFont}\label{wxcalendardateattrsetfont} + +\func{void}{SetFont}{\param{const wxFont\& }{font}} + +Sets the font to use. + +\membersection{wxCalendarDateAttr::SetBorder}\label{wxcalendardateattrsetborder} + +\func{void}{SetBorder}{\param{wxCalendarDateBorder }{border}} + +Sets the \helpref{border kind}{wxcalendardateattr} + +\membersection{wxCalendarDateAttr::SetHoliday}\label{wxcalendardateattrsetholiday} + +\func{void}{SetHoliday}{\param{bool }{holiday}} + +Display the date with this attribute as a holiday. + +\membersection{wxCalendarDateAttr::HasTextColour}\label{wxcalendardateattrhastextcolour} + +\constfunc{bool}{HasTextColour}{\void} + +Returns {\tt true} if this item has a non default text foreground colour. + +\membersection{wxCalendarDateAttr::HasBackgroundColour}\label{wxcalendardateattrhasbackgroundcolour} + +\constfunc{bool}{HasBackgroundColour}{\void} + +Returns {\tt true} if this attribute specifies a non default text background colour. + +\membersection{wxCalendarDateAttr::HasBorderColour}\label{wxcalendardateattrhasbordercolour} + +\constfunc{bool}{HasBorderColour}{\void} + +Returns {\tt true} if this attribute specifies a non default border colour. + +\membersection{wxCalendarDateAttr::HasFont}\label{wxcalendardateattrhasfont} + +\constfunc{bool}{HasFont}{\void} + +Returns {\tt true} if this attribute specifies a non default font. + +\membersection{wxCalendarDateAttr::HasBorder}\label{wxcalendardateattrhasborder} + +\constfunc{bool}{HasBorder}{\void} + +Returns {\tt true} if this attribute specifies a non default (i.e. any) border. + +\membersection{wxCalendarDateAttr::IsHoliday}\label{wxcalendardateattrisholiday} + +\constfunc{bool}{IsHoliday}{\void} + +Returns {\tt true} if this attribute specifies that this item should be +displayed as a holiday. + +\membersection{wxCalendarDateAttr::GetTextColour}\label{wxcalendardateattrgettextcolour} + +\constfunc{const wxColour\&}{GetTextColour}{\void} + +Returns the text colour to use for the item with this attribute. + +\membersection{wxCalendarDateAttr::GetBackgroundColour}\label{wxcalendardateattrgetbackgroundcolour} + +\constfunc{const wxColour\&}{GetBackgroundColour}{\void} + +Returns the background colour to use for the item with this attribute. + +\membersection{wxCalendarDateAttr::GetBorderColour}\label{wxcalendardateattrgetbordercolour} + +\constfunc{const wxColour\&}{GetBorderColour}{\void} + +Returns the border colour to use for the item with this attribute. + +\membersection{wxCalendarDateAttr::GetFont}\label{wxcalendardateattrgetfont} + +\constfunc{const wxFont\&}{GetFont}{\void} + +Returns the font to use for the item with this attribute. + +\membersection{wxCalendarDateAttr::GetBorder}\label{wxcalendardateattrgetborder} + +\constfunc{wxCalendarDateBorder}{GetBorder}{\void} + +Returns the \helpref{border}{wxcalendardateattr} to use for the item with this attribute. + +\section{\class{wxCalendarEvent}}\label{wxcalendarevent} + +The wxCalendarEvent class is used together with +\helpref{wxCalendarCtrl}{wxcalendarctrl}. + +\wxheading{See also} + +\helpref{wxCalendarCtrl}{wxcalendarctrl} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxCalendarEvent::GetDate}{wxcalendareventgetdate} + +\constfunc{const wxDateTime\&}{GetDate}{\void} + +Returns the date. This function may be called for all event types except +{\tt EVT\_CALENDAR\_WEEKDAY\_CLICKED} one for which it doesn't make sense. + +\membersection{wxCalendarEvent::GetWeekDay}{wxcalendareventgetweekday} + +\constfunc{wxDateTime::WeekDay}{GetWeekDay}{\void} -\helpref{Calendar sample}{samplecalendar} +Returns the week day on which the user clicked in +{\tt EVT\_CALENDAR\_WEEKDAY\_CLICKED} handler. It doesn't make sense to call +this function in other handlers.