Beispiel #1
0
        /// <summary>
        /// Конструктор - основной (с параметрами)
        /// </summary>
        /// <param name="year">Номер года</param>
        /// <param name="month">Номер месяца</param>
        /// <param name="day">Номер дня в месяце</param>
        /// <param name="hour">Номер часа в сутках</param>
        /// <param name="objLeading">Объект от значений которого зависит значения создаваемого объекта</param>
        public HDateTimePicker(DateTime dtValue, HDateTimePicker objLeading)
            : base(12, 1)
        {
            _value = new DateTime[] { DateTime.MinValue, dtValue };

            m_arSelectIndexChangedHandlers = new EventHandler[(int)INDEX_CONTROL.COUNT] {
                cbxDay_onSelectedIndexChanged
                , cbxMonth_onSelectedIndexChanged
                , cbxYear_onSelectedIndexChanged
                , cbxHour_onSelectedIndexChanged
            };

            InitializeComponents();

            Mode = MODE.UNKNOWN;

            m_objLeading = objLeading;

            if (!(m_objLeading == null))
            {
                m_objLeading.ValueChanged += new EventHandler(leading_ValueChanged);

                m_tsLeading = _value[(int)INDEX_VALUE.CURRENT] - m_objLeading.Value;
            }
            else
            {
                ;
            }
        }
Beispiel #2
0
        /// <summary>
        /// Обработчик события - изменения значения в "ведущем" календаре
        /// </summary>
        /// <param name="obj">Объект, инициировавший событие</param>
        /// <param name="ev">Аргумент события</param>
        private void leading_ValueChanged(object obj, EventArgs ev)
        {
            HDateTimePicker objLeading = obj as HDateTimePicker;
            ComboBox        cbxYear    = null
            , cbxMonth    = null
            , cbxDay      = null
            , cbxHour     = null;
            int iDiffYear = -1;

            //??? учитывать значение в "ведущем" календаре
            iDiffYear = objLeading.Value.Year - Value.Year;
            Value     = objLeading.Value + m_tsLeading;

            cbxYear  = Controls.Find(INDEX_CONTROL.YEAR.ToString(), true)[0] as ComboBox;
            cbxMonth = Controls.Find(INDEX_CONTROL.MONTH.ToString(), true)[0] as ComboBox;
            cbxDay   = Controls.Find(INDEX_CONTROL.DAY.ToString(), true)[0] as ComboBox;
            cbxHour  = Controls.Find(INDEX_CONTROL.HOUR.ToString(), true)[0] as ComboBox;

            cbxYear.SelectedIndexChanged  -= cbxYear_onSelectedIndexChanged;
            cbxMonth.SelectedIndexChanged -= cbxMonth_onSelectedIndexChanged;
            cbxDay.SelectedIndexChanged   -= cbxDay_onSelectedIndexChanged;
            cbxHour.SelectedIndexChanged  -= cbxHour_onSelectedIndexChanged;

            cbxYear.SelectedIndex += iDiffYear;
            cbxMonth.SelectedIndex = Value.Month - 1;
            cbxDay.SelectedIndex   = Value.Day - 1;
            cbxHour.SelectedIndex  = Value.Hour - 1;

            cbxYear.SelectedIndexChanged  += new EventHandler(cbxYear_onSelectedIndexChanged);
            cbxMonth.SelectedIndexChanged += new EventHandler(cbxMonth_onSelectedIndexChanged);
            cbxDay.SelectedIndexChanged   += new EventHandler(cbxDay_onSelectedIndexChanged);
            cbxHour.SelectedIndexChanged  += new EventHandler(cbxHour_onSelectedIndexChanged);

            ValueChanged(this, EventArgs.Empty);
        }
Beispiel #3
0
        /// <summary>
        /// Обработчик события - изменения значения в "ведущем" календаре
        /// </summary>
        /// <param name="obj">Объект, инициировавший событие</param>
        /// <param name="ev">Аргумент события</param>
        private void leading_ValueChanged(object obj, EventArgs ev)
        {
            HDateTimePicker objLeading = obj as HDateTimePicker;
            ComboBox        cbxYear    = null
            , cbxMonth      = null
            , cbxDay        = null
            , cbxHour       = null;
            int iDiffYear   = -1
            , cntDayInMonth = -1;

            INDEX_CONTROL indx = (ev as EventDatePartArgs).m_index;

            //??? учитывать значение в "ведущем" календаре
            iDiffYear = objLeading.Value.Year - _value[(int)INDEX_VALUE.CURRENT].Year;
            _value[(int)INDEX_VALUE.PREVIOUS] = _value[(int)INDEX_VALUE.CURRENT];
            cbxYearMapping(indx);
            _value[(int)INDEX_VALUE.CURRENT] = objLeading.Value + m_tsLeading;
            //??? учитывать значение в "ведущем" календаре

            iDiffYear -= objLeading.Value.Year - _value[(int)INDEX_VALUE.CURRENT].Year;

            cbxYear  = Controls.Find(INDEX_CONTROL.YEAR.ToString(), true)[0] as ComboBox;
            cbxMonth = Controls.Find(INDEX_CONTROL.MONTH.ToString(), true)[0] as ComboBox;
            cbxDay   = Controls.Find(INDEX_CONTROL.DAY.ToString(), true)[0] as ComboBox;
            cbxHour  = Controls.Find(INDEX_CONTROL.HOUR.ToString(), true)[0] as ComboBox;

            cbxYear.SelectedIndexChanged  -= m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.YEAR];
            cbxMonth.SelectedIndexChanged -= m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.MONTH];
            cbxDay.SelectedIndexChanged   -= m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.DAY];
            cbxHour.SelectedIndexChanged  -= m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.HOUR];

            try
            {
                cbxYear.SelectedIndex += iDiffYear;
                cbxMonth.SelectedIndex = _value[(int)INDEX_VALUE.CURRENT].Month - 1;
                cntDayInMonth          = DateTime.DaysInMonth(_value[(int)INDEX_VALUE.CURRENT].Year, _value[(int)INDEX_VALUE.CURRENT].Month);
                //if ((ev as EventDatePartArgs).m_index == INDEX_CONTROL.MONTH)
                cbxDayMapping(cntDayInMonth, false);
                //else
                //    cbxDay.SelectedIndex = _value[(int)INDEX_VALUE.CURRENT].Day - 1;
                cbxHour.SelectedIndex = _value[(int)INDEX_VALUE.CURRENT].Hour; // == 0 ? _value[(int)INDEX_VALUE.CURRENT].Hour : _value[(int)INDEX_VALUE.CURRENT].Hour - 1;
            }
            catch (Exception e)
            {
                Logging.Logg().Exception(e, @"HDateTimePicker::leading_ValueChanged (INDEX_CONTROL=" + (ev as EventDatePartArgs).m_index + @") - ...", Logging.INDEX_MESSAGE.NOT_SET);
            }

            cbxYear.SelectedIndexChanged  += m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.YEAR];
            cbxMonth.SelectedIndexChanged += m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.MONTH];
            cbxDay.SelectedIndexChanged   += m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.DAY];
            cbxHour.SelectedIndexChanged  += m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.HOUR];

            ValueChanged(this, EventArgs.Empty);
        }
            ///// <summary>
            ///// Обработчик события - изменение дата/время начала периода
            ///// </summary>
            ///// <param name="obj">Составной объект - календарь</param>
            ///// <param name="ev">Аргумент события</param>
            //private void hdtpBegin_onValueChanged(object obj, EventArgs ev)
            //{
            //    m_dtRange.Set((obj as HDateTimePicker).Value, m_dtRange.End);

            //    DateTimeRangeValue_Changed(this, EventArgs.Empty);
            //}

            /// <summary>
            /// Обработчик события - изменение дата/время окончания периода
            /// </summary>
            /// <param name="obj">Составной объект - календарь</param>
            /// <param name="ev">Аргумент события</param>
            protected void hdtpEnd_onValueChanged(object obj, EventArgs ev)
            {
                HDateTimePicker hdtpEnd = obj as HDateTimePicker;

                //m_dtRange.Set(hdtpEnd.LeadingValue, hdtpEnd.Value);

                if (!(DateTimeRangeValue_Changed == null))
                {
                    DateTimeRangeValue_Changed(hdtpEnd.LeadingValue, hdtpEnd.Value);
                }
                else
                {
                    ;
                }
            }
            ///// <summary>
            ///// Обработчик события - изменение дата/время начала периода
            ///// </summary>
            ///// <param name="obj">Составной объект - календарь</param>
            ///// <param name="ev">Аргумент события</param>
            //private void hdtpBegin_onValueChanged(object obj, EventArgs ev)
            //{
            //    m_dtRange.Set((obj as HDateTimePicker).Value, m_dtRange.End);

            //    DateTimeRangeValue_Changed(this, EventArgs.Empty);
            //}
            /// <summary>
            /// Обработчик события - изменение дата/время окончания периода
            /// </summary>
            /// <param name="obj">Составной объект - календарь</param>
            /// <param name="ev">Аргумент события</param>
            private void hdtpEnd_onValueChanged(object obj, EventArgs ev)
            {
                HDateTimePicker hdtpEnd = obj as HDateTimePicker;

                m_dtRange.Set(hdtpEnd.LeadingValue, hdtpEnd.Value);

                if (!(DateTimeRangeValue_Changed == null))
                {
                    DateTimeRangeValue_Changed(this, EventArgs.Empty);
                }
                else
                {
                    ;
                }
            }
            public PanelManagementTaskTepCalculate()
                : base(8, 21)
            {
                InitializeComponents();

                HDateTimePicker hdtpEnd = Controls.Find(INDEX_CONTROL_BASE.HDTP_END.ToString(), true)[0] as HDateTimePicker;

                m_dtRange = new DateTimeRange((Controls.Find(INDEX_CONTROL_BASE.HDTP_BEGIN.ToString(), true)[0] as HDateTimePicker).Value
                                              , hdtpEnd.Value);
                ////Назначить обработчик события - изменение дата/время начала периода
                //hdtpBegin.ValueChanged += new EventHandler(hdtpBegin_onValueChanged);
                //Назначить обработчик события - изменение дата/время окончания периода
                // при этом отменить обработку события - изменение дата/время начала периода
                // т.к. при изменении дата/время начала периода изменяется и дата/время окончания периода
                hdtpEnd.ValueChanged += new EventHandler(hdtpEnd_onValueChanged);
            }
Beispiel #7
0
        /// <summary>
        /// Обработчик события - изменения значения в "ведущем" календаре
        /// </summary>
        /// <param name="obj">Объект, инициировавший событие</param>
        /// <param name="ev">Аргумент события</param>
        private void leading_ValueChanged(object obj, EventArgs ev)
        {
            HDateTimePicker objLeading = obj as HDateTimePicker;
            ComboBox        cbxYear    = null
            , cbxMonth    = null
            , cbxDay      = null
            , cbxHour     = null;
            int iDiffYear = -1;

            //??? учитывать значение в "ведущем" календаре
            iDiffYear = objLeading.Value.Year - _value[(int)INDEX_VALUE.CURRENT].Year;
            _value[(int)INDEX_VALUE.PREVIOUS] = _value[(int)INDEX_VALUE.CURRENT];
            _value[(int)INDEX_VALUE.CURRENT]  = objLeading.Value + m_tsLeading;

            cbxYear  = Controls.Find(INDEX_CONTROL.YEAR.ToString(), true)[0] as ComboBox;
            cbxMonth = Controls.Find(INDEX_CONTROL.MONTH.ToString(), true)[0] as ComboBox;
            cbxDay   = Controls.Find(INDEX_CONTROL.DAY.ToString(), true)[0] as ComboBox;
            cbxHour  = Controls.Find(INDEX_CONTROL.HOUR.ToString(), true)[0] as ComboBox;

            cbxYear.SelectedIndexChanged  -= m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.YEAR];
            cbxMonth.SelectedIndexChanged -= m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.MONTH];
            cbxDay.SelectedIndexChanged   -= m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.DAY];
            cbxHour.SelectedIndexChanged  -= m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.HOUR];

            cbxYear.SelectedIndex += iDiffYear;
            cbxMonth.SelectedIndex = _value[(int)INDEX_VALUE.CURRENT].Month - 1;
            cbxDay.Items.Clear();
            for (int i = 0; i < DateTime.DaysInMonth(_value[(int)INDEX_VALUE.CURRENT].Year, _value[(int)INDEX_VALUE.CURRENT].Month); i++)
            {
                cbxDay.Items.Add(i + 1);
            }
            cbxDay.SelectedIndex  = _value[(int)INDEX_VALUE.CURRENT].Day - 1;
            cbxHour.SelectedIndex = _value[(int)INDEX_VALUE.CURRENT].Hour; // == 0 ? _value[(int)INDEX_VALUE.CURRENT].Hour : _value[(int)INDEX_VALUE.CURRENT].Hour - 1;

            cbxYear.SelectedIndexChanged  += m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.YEAR];
            cbxMonth.SelectedIndexChanged += m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.MONTH];
            cbxDay.SelectedIndexChanged   += m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.DAY];
            cbxHour.SelectedIndexChanged  += m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.HOUR];

            ValueChanged(this, EventArgs.Empty);
        }
Beispiel #8
0
        /// <summary>
        /// Конструктор - основной (с параметрами)
        /// </summary>
        /// <param name="year">Номер года</param>
        /// <param name="month">Номер месяца</param>
        /// <param name="day">Номер дня в месяце</param>
        /// <param name="hour">Номер часа в сутках</param>
        /// <param name="objLeading">Объект от значений которого зависит значения создаваемого объекта</param>
        public HDateTimePicker(int year, int month, int day, int hour, HDateTimePicker objLeading)
            : base(12, 1)
        {
            Value = new DateTime(year, month, day, hour, 0, 0);

            InitializeComponents();

            Mode = MODE.UNKNOWN;

            m_objLeading = objLeading;
            if (!(m_objLeading == null))
            {
                m_objLeading.ValueChanged += new EventHandler(leading_ValueChanged);

                m_tsLeading = Value - m_objLeading.Value;
            }
            else
            {
                ;
            }
        }
            private void InitializeComponents()
            {
                Control  ctrl  = null;
                DateTime today = DateTime.Today;

                SuspendLayout();

                initializeLayoutStyle();

                ctrl      = new ComboBox();
                ctrl.Name = INDEX_CONTROL_BASE.CBX_PERIOD.ToString();
                ctrl.Dock = DockStyle.Bottom;
                (ctrl as ComboBox).DropDownStyle = ComboBoxStyle.DropDownList;
                //??? точное размещенеие в коде целевого класса
                this.Controls.Add(ctrl); //??? добавлять для возможности последующего поиска

                ctrl      = new ComboBox();
                ctrl.Name = INDEX_CONTROL_BASE.CBX_TIMEZONE.ToString();
                ctrl.Dock = DockStyle.Bottom;
                (ctrl as ComboBox).DropDownStyle = ComboBoxStyle.DropDownList;
                //??? точное (столбец, строка) размещенеие в коде целевого класса
                this.Controls.Add(ctrl); //??? добавлять для возможности последующего поиска (без указания столбца, строки)

                ctrl        = new HDateTimePicker(today.Year, today.Month, today.Day, 0, null);
                ctrl.Name   = INDEX_CONTROL_BASE.HDTP_BEGIN.ToString();
                ctrl.Anchor = (AnchorStyles)(AnchorStyles.Left | AnchorStyles.Right);
                //??? точное (столбец, строка) размещенеие в коде целевого класса
                this.Controls.Add(ctrl); //??? добавлять для возможности последующего поиска (без указания столбца, строки)

                ctrl        = new HDateTimePicker(today.Year, today.Month, today.Day, 1, Controls.Find(INDEX_CONTROL_BASE.HDTP_BEGIN.ToString(), true)[0] as HDateTimePicker);
                ctrl.Name   = INDEX_CONTROL_BASE.HDTP_END.ToString();
                ctrl.Anchor = (AnchorStyles)(AnchorStyles.Left | AnchorStyles.Right);
                //??? точное (столбец, строка) размещенеие в коде целевого класса
                this.Controls.Add(ctrl); //??? добавлять для возможности последующего поиска (без указания столбца, строки)

                ResumeLayout(false);
                PerformLayout();
            }
            public void SetPeriod(ID_PERIOD idPeriod)
            {
                HDateTimePicker hdtpBegin = Controls.Find(INDEX_CONTROL_BASE.HDTP_BEGIN.ToString(), true)[0] as HDateTimePicker
                , hdtpEnd = Controls.Find(INDEX_CONTROL_BASE.HDTP_END.ToString(), true)[0] as HDateTimePicker;

                //Выполнить запрос на получение значений для заполнения 'DataGridView'
                switch (idPeriod)
                {
                case ID_PERIOD.HOUR:
                    hdtpBegin.Value = new DateTime(DateTime.Now.Year
                                                   , DateTime.Now.Month
                                                   , DateTime.Now.Day
                                                   , DateTime.Now.Hour
                                                   , 0
                                                   , 0).AddHours(-1);
                    hdtpEnd.Value    = hdtpBegin.Value.AddHours(1);
                    hdtpBegin.Mode   =
                        hdtpEnd.Mode =
                            HDateTimePicker.MODE.HOUR;
                    break;

                //case ID_PERIOD.SHIFTS:
                //    hdtpBegin.Mode = HDateTimePicker.MODE.HOUR;
                //    hdtpEnd.Mode = HDateTimePicker.MODE.HOUR;
                //    break;
                case ID_PERIOD.DAY:
                    hdtpBegin.Value = new DateTime(DateTime.Now.Year
                                                   , DateTime.Now.Month
                                                   , DateTime.Now.Day
                                                   , 0
                                                   , 0
                                                   , 0).AddDays(-1);
                    hdtpEnd.Value    = hdtpBegin.Value.AddDays(1);
                    hdtpBegin.Mode   =
                        hdtpEnd.Mode =
                            HDateTimePicker.MODE.DAY;
                    break;

                case ID_PERIOD.MONTH:
                    hdtpBegin.Value = new DateTime(DateTime.Now.Year
                                                   , DateTime.Now.Month
                                                   , 1
                                                   , 0
                                                   , 0
                                                   , 0).AddMonths(-1);
                    hdtpEnd.Value    = hdtpBegin.Value.AddMonths(1);
                    hdtpBegin.Mode   =
                        hdtpEnd.Mode =
                            HDateTimePicker.MODE.MONTH;
                    break;

                case ID_PERIOD.YEAR:
                    hdtpBegin.Value = new DateTime(DateTime.Now.Year
                                                   , 1
                                                   , 1
                                                   , 0
                                                   , 0
                                                   , 0).AddYears(-1);
                    hdtpEnd.Value    = hdtpBegin.Value.AddYears(1);
                    hdtpBegin.Mode   =
                        hdtpEnd.Mode =
                            HDateTimePicker.MODE.YEAR;
                    break;

                default:
                    break;
                }
            }
Beispiel #11
0
            private void setModeDatetimeRange()
            {
                ID_PERIOD idPeriod = IdPeriod;

                HDateTimePicker hdtpBegin = findControl(INDEX_CONTROL_BASE.HDTP_BEGIN.ToString()) as HDateTimePicker
                , hdtpEnd = findControl(INDEX_CONTROL_BASE.HDTP_END.ToString()) as HDateTimePicker;

                //Выполнить запрос на получение значений для заполнения 'DataGridView'
                switch (idPeriod)
                {
                case ID_PERIOD.HOUR:
                    hdtpBegin.Value = new DateTime(DateTime.Now.Year
                                                   , DateTime.Now.Month
                                                   , DateTime.Now.Day
                                                   , DateTime.Now.Hour
                                                   , 0
                                                   , 0).AddHours(-1);
                    hdtpEnd.Value    = hdtpBegin.Value.AddHours(1);
                    hdtpBegin.Mode   =
                        hdtpEnd.Mode =
                            HDateTimePicker.MODE.HOUR;
                    break;

                //case ID_PERIOD.SHIFTS:
                //    hdtpBegin.Mode = HDateTimePicker.MODE.HOUR;
                //    hdtpEnd.Mode = HDateTimePicker.MODE.HOUR;
                //    break;
                case ID_PERIOD.DAY:
                    hdtpBegin.Value = new DateTime(DateTime.Now.Year
                                                   , DateTime.Now.Month
                                                   , DateTime.Now.Day
                                                   , 0
                                                   , 0
                                                   , 0).AddDays(-1);
                    hdtpEnd.Value    = hdtpBegin.Value.AddDays(1);
                    hdtpBegin.Mode   =
                        hdtpEnd.Mode =
                            HDateTimePicker.MODE.DAY;
                    break;

                case ID_PERIOD.MONTH:
                    hdtpBegin.Value = new DateTime(DateTime.Now.Year
                                                   , DateTime.Now.Month
                                                   , 1
                                                   , 0
                                                   , 0
                                                   , 0) /*.AddMonths(-1)*/;
                    hdtpEnd.Value    = hdtpBegin.Value.AddMonths(1);
                    hdtpBegin.Mode   =
                        hdtpEnd.Mode =
                            HDateTimePicker.MODE.MONTH;
                    break;

                case ID_PERIOD.YEAR:
                    hdtpBegin.Value = new DateTime(DateTime.Now.Year
                                                   , 1
                                                   , 1
                                                   , 0
                                                   , 0
                                                   , 0).AddYears(0);
                    hdtpEnd.Value    = hdtpBegin.Value.AddYears(1);
                    hdtpBegin.Mode   =
                        hdtpEnd.Mode =
                            HDateTimePicker.MODE.YEAR;
                    break;

                default:
                    break;
                }
            }
Beispiel #12
0
            ///// <summary>
            ///// Обработчик события - изменение дата/время начала периода
            ///// </summary>
            ///// <param name="obj">Составной объект - календарь</param>
            ///// <param name="ev">Аргумент события</param>
            //private void hdtpBegin_onValueChanged(object obj, EventArgs ev)
            //{
            //    m_dtRange.Set((obj as HDateTimePicker).Value, m_dtRange.End);

            //    DateTimeRangeValue_Changed(this, EventArgs.Empty);
            //}

            /// <summary>
            /// Обработчик события - изменение дата/время окончания периода
            /// </summary>
            /// <param name="obj">Составной объект - календарь</param>
            /// <param name="ev">Аргумент события</param>
            private void hdtpEnd_onValueChanged(object obj, EventArgs ev)
            {
                HDateTimePicker hdtpEnd = obj as HDateTimePicker;

                DateTimeRangeValue_Changed?.Invoke(hdtpEnd.LeadingValue, hdtpEnd.Value);
            }
Beispiel #13
0
            /// <summary>
            /// Инициализация элементов управления объекта (создание, размещение)
            /// </summary>
            private void InitializeComponents()
            {
                Control ctrl   = null;
                int     posRow = -1;

                SuspendLayout();

                initializeLayoutStyle();

                //CellBorderStyle = TableLayoutPanelCellBorderStyle.Single;

                //Базовый период отображения данных
                //Базовый период отображения данных - Подпись
                if ((TimeControlPlacement & ModeTimeControlPlacement.Labels) == ModeTimeControlPlacement.Labels)
                {
                    ctrl = new System.Windows.Forms.Label();
                    //ctrl.Dock = DockStyle.Bottom;
                    ctrl.Anchor = (AnchorStyles)(AnchorStyles.Left | AnchorStyles.Bottom);
                    (ctrl as System.Windows.Forms.Label).Text = @"Период расчета";
                    this.Controls.Add(ctrl, 0, posRow         = posRow + 1); //posRow = posRow + 1
                    SetColumnSpan(ctrl, this.ColumnCount / 2);
                }
                else
                {
                    ;
                }
                //Базовый период отображения данных - Значение
                ctrl      = new ComboBox();
                ctrl.Name = INDEX_CONTROL_BASE.CBX_PERIOD.ToString();
                ctrl.Dock = DockStyle.Bottom;
                (ctrl as ComboBox).DropDownStyle = ComboBoxStyle.DropDownList;
                //??? точное размещенеие в коде целевого класса
                this.Controls.Add(ctrl, 0, posRow = posRow + 1); //??? добавлять для возможности последующего поиска
                SetColumnSpan(ctrl, this.ColumnCount / 2);
                //Часовой пояс
                //Часовой пояс - Подпись
                if ((TimeControlPlacement & ModeTimeControlPlacement.Labels) == ModeTimeControlPlacement.Labels)
                {
                    posRow = -1;

                    ctrl = new System.Windows.Forms.Label();
                    //ctrl.Dock = DockStyle.Bottom;
                    ctrl.Anchor = (AnchorStyles)(AnchorStyles.Left | AnchorStyles.Bottom);
                    (ctrl as System.Windows.Forms.Label).Text = @"Часовой пояс";
                    this.Controls.Add(ctrl
                                      , (TimeControlPlacement & ModeTimeControlPlacement.Queue) == ModeTimeControlPlacement.Queue ? 0 : ColumnCount / 2
                                      , posRow = posRow + 1); //
                    SetColumnSpan(ctrl, this.ColumnCount / 2);
                }
                else
                {
                    ;
                }
                //Часовой пояс - Значение
                ctrl      = new ComboBox();
                ctrl.Name = INDEX_CONTROL_BASE.CBX_TIMEZONE.ToString();
                ctrl.Dock = DockStyle.Bottom;
                (ctrl as ComboBox).DropDownStyle = ComboBoxStyle.DropDownList;
                //??? точное (столбец, строка) размещенеие в коде целевого класса
                this.Controls.Add(ctrl
                                  , (TimeControlPlacement & ModeTimeControlPlacement.Queue) == ModeTimeControlPlacement.Queue ? 0 : ColumnCount / 2
                                  , posRow = posRow + 1); //??? добавлять для возможности последующего поиска (без указания столбца, строки)
                SetColumnSpan(ctrl, this.ColumnCount / 2);

                //Дата/время начала периода расчета
                //Дата/время начала периода расчета - подпись
                ctrl      = new System.Windows.Forms.Label();
                ctrl.Dock = DockStyle.Bottom;
                (ctrl as System.Windows.Forms.Label).Text = @"Дата/время начала периода расчета";
                this.Controls.Add(ctrl, 0, posRow         = posRow + 1); //posRow = posRow + 1
                SetColumnSpan(ctrl, this.ColumnCount);
                //Дата/время начала периода расчета - значения
                ctrl      = new HDateTimePicker(s_dtDefault, null);
                ctrl.Name = INDEX_CONTROL_BASE.HDTP_BEGIN.ToString();
                ctrl.Dock = DockStyle.Top;
                //ctrl.Anchor = (AnchorStyles)(AnchorStyles.Left | AnchorStyles.Right);
                //??? точное (столбец, строка) размещенеие в коде целевого класса
                this.Controls.Add(ctrl, 0, posRow = posRow + 1); //posRow = posRow + 1 //??? добавлять для возможности последующего поиска (без указания столбца, строки)
                SetColumnSpan(ctrl, this.ColumnCount);
                //Дата/время  окончания периода расчета
                //Дата/время  окончания периода расчета - подпись
                ctrl      = new System.Windows.Forms.Label();
                ctrl.Dock = DockStyle.Bottom;
                (ctrl as System.Windows.Forms.Label).Text = @"Дата/время  окончания периода расчета:";
                this.Controls.Add(ctrl, 0, posRow         = posRow + 1); //posRow = posRow + 1
                SetColumnSpan(ctrl, this.ColumnCount);
                //Дата/время  окончания периода расчета - значения
                ctrl      = new HDateTimePicker(s_dtDefault.AddHours(1), Controls.Find(INDEX_CONTROL_BASE.HDTP_BEGIN.ToString(), true)[0] as HDateTimePicker);
                ctrl.Name = INDEX_CONTROL_BASE.HDTP_END.ToString();
                ctrl.Dock = DockStyle.Top;
                //ctrl.Anchor = (AnchorStyles)(AnchorStyles.Left | AnchorStyles.Right);
                //??? точное (столбец, строка) размещенеие в коде целевого класса
                this.Controls.Add(ctrl, 0, posRow = posRow + 1); //posRow = posRow + 1 //??? добавлять для возможности последующего поиска (без указания столбца, строки)
                SetColumnSpan(ctrl, this.ColumnCount); SetRowSpan(ctrl, 1);

                ResumeLayout(false);
                PerformLayout();
            }
Beispiel #14
0
        /// <summary>
        /// Обработчик события - изменения значения в "ведущем" календаре
        /// </summary>
        /// <param name="obj">Объект, инициировавший событие</param>
        /// <param name="ev">Аргумент события</param>
        private void leading_ValueChanged(object obj, EventArgs ev)
        {
            HDateTimePicker objLeading = obj as HDateTimePicker;
            ComboBox        cbxYear    = null
            , cbxMonth      = null
            , cbxDay        = null
            , cbxHour       = null;
            int iDiffYear   = -1
            , cntDayInMonth = -1;

            INDEX_CONTROL indx = (ev as EventDatePartArgs).m_index;

            if ((indx == INDEX_CONTROL.MONTH) ||
                (indx == INDEX_CONTROL.YEAR)
                )
            {
                if (_mode == MODE.MONTH)
                {
                    m_tsLeading -=
                        (TimeSpan.FromDays(DateTime.DaysInMonth(objLeading._value[(int)INDEX_VALUE.PREVIOUS].Year, objLeading._value[(int)INDEX_VALUE.PREVIOUS].Month))
                         - TimeSpan.FromDays(1));

                    m_tsLeading +=
                        (TimeSpan.FromDays(DateTime.DaysInMonth(objLeading._value[(int)INDEX_VALUE.CURRENT].Year, objLeading._value[(int)INDEX_VALUE.CURRENT].Month)));

                    m_tsLeading -= TimeSpan.FromDays(1);
                }
                else
                if (_mode == MODE.YEAR)
                {
                    m_tsLeading =
                        TimeSpan.FromDays(DateTime.IsLeapYear(objLeading._value[(int)INDEX_VALUE.CURRENT].Year) == true ? 366 : 365);
                }
                else
                {
                    ;
                }

                //??? только для MONTH
                //m_tsLeading -= TimeSpan.FromDays(1);
            }
            else
            {
                ;
            }

            //??? учитывать значение в "ведущем" календаре
            iDiffYear = objLeading.Value.Year - _value[(int)INDEX_VALUE.CURRENT].Year;
            _value[(int)INDEX_VALUE.PREVIOUS] = _value[(int)INDEX_VALUE.CURRENT];
            _value[(int)INDEX_VALUE.CURRENT]  = objLeading.Value + m_tsLeading;
            //??? учитывать значение в "ведущем" календаре
            iDiffYear -= objLeading.Value.Year - _value[(int)INDEX_VALUE.CURRENT].Year;

            cbxYear  = Controls.Find(INDEX_CONTROL.YEAR.ToString(), true)[0] as ComboBox;
            cbxMonth = Controls.Find(INDEX_CONTROL.MONTH.ToString(), true)[0] as ComboBox;
            cbxDay   = Controls.Find(INDEX_CONTROL.DAY.ToString(), true)[0] as ComboBox;
            cbxHour  = Controls.Find(INDEX_CONTROL.HOUR.ToString(), true)[0] as ComboBox;

            cbxYear.SelectedIndexChanged  -= new EventHandler(m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.YEAR]);
            cbxMonth.SelectedIndexChanged -= new EventHandler(m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.MONTH]);
            cbxDay.SelectedIndexChanged   -= new EventHandler(m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.DAY]);
            cbxHour.SelectedIndexChanged  -= new EventHandler(m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.HOUR]);

            try
            {
                cbxYear.SelectedIndex += iDiffYear;
                cbxMonth.SelectedIndex = _value[(int)INDEX_VALUE.CURRENT].Month - 1;
                cntDayInMonth          = DateTime.DaysInMonth(_value[(int)INDEX_VALUE.CURRENT].Year, _value[(int)INDEX_VALUE.CURRENT].Month);
                //if ((ev as EventDatePartArgs).m_index == INDEX_CONTROL.MONTH)
                cbxDayMapping(cntDayInMonth, false);
                //else
                //    cbxDay.SelectedIndex = _value[(int)INDEX_VALUE.CURRENT].Day - 1;
                cbxHour.SelectedIndex = _value[(int)INDEX_VALUE.CURRENT].Hour; // == 0 ? _value[(int)INDEX_VALUE.CURRENT].Hour : _value[(int)INDEX_VALUE.CURRENT].Hour - 1;
            }
            catch (Exception e)
            {
                Logging.Logg().Exception(e, @"HDateTimePicker::leading_ValueChanged (INDEX_CONTROL=" + (ev as EventDatePartArgs).m_index + @") - ...", Logging.INDEX_MESSAGE.NOT_SET);
            }

            cbxYear.SelectedIndexChanged  += new EventHandler(m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.YEAR]);
            cbxMonth.SelectedIndexChanged += new EventHandler(m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.MONTH]);
            cbxDay.SelectedIndexChanged   += new EventHandler(m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.DAY]);
            cbxHour.SelectedIndexChanged  += new EventHandler(m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.HOUR]);

            ValueChanged(this, EventArgs.Empty);
        }
Beispiel #15
0
            private void InitializeComponents()
            {
                Control ctrl   = null;
                int     posRow = -1;

                SuspendLayout();

                initializeLayoutStyle();

                posRow = 0;
                //Период расчета
                ////Период расчета - подпись
                //ctrl = new System.Windows.Forms.Label();
                //ctrl.Dock = DockStyle.Bottom;
                //(ctrl as System.Windows.Forms.Label).Text = @"Период:";
                //this.Controls.Add(ctrl, 0, posRow);
                //SetColumnSpan(ctrl, 2); SetRowSpan(ctrl, 1);
                //Период расчета - значение
                ctrl      = new ComboBox();
                ctrl.Name = INDEX_CONTROL.CBX_PERIOD.ToString();
                ctrl.Dock = DockStyle.Bottom;
                (ctrl as ComboBox).DropDownStyle = ComboBoxStyle.DropDownList;
                this.Controls.Add(ctrl, 0, posRow);
                SetColumnSpan(ctrl, 4); SetRowSpan(ctrl, 1);
                //Расчет - выполнить
                ctrl      = new Button();
                ctrl.Name = INDEX_CONTROL.BUTTON_RUN.ToString();
                ctrl.Text = @"Выполнить";
                ctrl.Dock = DockStyle.Fill;
                this.Controls.Add(ctrl, 4, posRow);
                SetColumnSpan(ctrl, 4); SetRowSpan(ctrl, 1);

                //Дата/время начала периода расчета
                //Дата/время начала периода расчета - подпись
                ctrl      = new System.Windows.Forms.Label();
                ctrl.Dock = DockStyle.Bottom;
                (ctrl as System.Windows.Forms.Label).Text = @"Дата/время начала периода расчета";
                this.Controls.Add(ctrl, 0, posRow         = posRow + 1);
                SetColumnSpan(ctrl, 8); SetRowSpan(ctrl, 1);
                //Дата/время начала периода расчета - значения
                ctrl        = new HDateTimePicker(2015, 1, 1);
                ctrl.Name   = INDEX_CONTROL.HDTP_BEGIN.ToString();
                ctrl.Anchor = (AnchorStyles)(AnchorStyles.Left | AnchorStyles.Right);
                this.Controls.Add(ctrl, 0, posRow = posRow + 1);
                SetColumnSpan(ctrl, 8); SetRowSpan(ctrl, 1);
                //Дата/время  окончания периода расчета
                //Дата/время  окончания периода расчета - подпись
                ctrl      = new System.Windows.Forms.Label();
                ctrl.Dock = DockStyle.Bottom;
                (ctrl as System.Windows.Forms.Label).Text = @"Дата/время  окончания периода расчета:";
                this.Controls.Add(ctrl, 0, posRow         = posRow + 1);
                SetColumnSpan(ctrl, 8); SetRowSpan(ctrl, 1);
                //Дата/время  окончания периода расчета - значения
                ctrl        = new HDateTimePicker(2015, 1, 1, 24);
                ctrl.Name   = INDEX_CONTROL.HDTP_END.ToString();
                ctrl.Anchor = (AnchorStyles)(AnchorStyles.Left | AnchorStyles.Right);
                this.Controls.Add(ctrl, 0, posRow = posRow + 1);
                SetColumnSpan(ctrl, 8); SetRowSpan(ctrl, 1);

                //Признаки включения/исключения из расчета
                //Признаки включения/исключения из расчета - подпись
                ctrl      = new System.Windows.Forms.Label();
                ctrl.Dock = DockStyle.Bottom;
                (ctrl as System.Windows.Forms.Label).Text = @"Включить/исключить из расчета";
                this.Controls.Add(ctrl, 0, posRow         = posRow + 1);
                SetColumnSpan(ctrl, 8); SetRowSpan(ctrl, 1);
                //Признак для включения/исключения из расчета компонента
                ctrl      = new CheckedListBox();
                ctrl.Name = INDEX_CONTROL.CLBX_COMP_CALCULATED.ToString();
                ctrl.Dock = DockStyle.Fill;
                this.Controls.Add(ctrl, 0, posRow = posRow + 1);
                SetColumnSpan(ctrl, 8); SetRowSpan(ctrl, 3);
                //Признак для включения/исключения из расчета параметра
                ctrl      = new CheckedListBox();
                ctrl.Name = INDEX_CONTROL.CLBX_PARAMETER_CALCULATED.ToString();
                ctrl.Dock = DockStyle.Fill;
                this.Controls.Add(ctrl, 0, posRow = posRow + 3);
                SetColumnSpan(ctrl, 8); SetRowSpan(ctrl, 3);

                //Кнопки обновления/сохранения, импорта/экспорта
                //Кнопка - обновить
                ctrl      = new Button();
                ctrl.Name = INDEX_CONTROL.BUTTON_LOAD.ToString();
                ctrl.Text = @"Загрузить";
                ctrl.Dock = DockStyle.Fill;
                this.Controls.Add(ctrl, 0, posRow = posRow + 3);
                SetColumnSpan(ctrl, 4); SetRowSpan(ctrl, 1);
                //Кнопка - импортировать
                ctrl      = new Button();
                ctrl.Name = INDEX_CONTROL.BUTTON_IMPORT.ToString();
                ctrl.Text = @"Импорт";
                ctrl.Dock = DockStyle.Fill;
                this.Controls.Add(ctrl, 4, posRow);
                SetColumnSpan(ctrl, 4); SetRowSpan(ctrl, 1);
                //Кнопка - сохранить
                ctrl      = new Button();
                ctrl.Name = INDEX_CONTROL.BUTTON_SAVE.ToString();
                ctrl.Text = @"Сохранить";
                ctrl.Dock = DockStyle.Fill;
                this.Controls.Add(ctrl, 0, posRow = posRow + 1);
                SetColumnSpan(ctrl, 4); SetRowSpan(ctrl, 1);
                //Кнопка - экспортировать
                ctrl      = new Button();
                ctrl.Name = INDEX_CONTROL.BUTTON_EXPORT.ToString();
                ctrl.Text = @"Экспорт";
                ctrl.Dock = DockStyle.Fill;
                this.Controls.Add(ctrl, 4, posRow);
                SetColumnSpan(ctrl, 4); SetRowSpan(ctrl, 1);

                //Признаки включения/исключения для отображения
                //Признак для включения/исключения для отображения компонента
                ctrl      = new System.Windows.Forms.Label();
                ctrl.Dock = DockStyle.Bottom;
                (ctrl as System.Windows.Forms.Label).Text = @"Включить/исключить для отображения";
                this.Controls.Add(ctrl, 0, posRow         = posRow + 1);
                SetColumnSpan(ctrl, 8); SetRowSpan(ctrl, 1);
                ctrl      = new CheckedListBox();
                ctrl.Name = INDEX_CONTROL.CLBX_COMP_VISIBLED.ToString();
                ctrl.Dock = DockStyle.Fill;
                this.Controls.Add(ctrl, 0, posRow = posRow + 1);
                SetColumnSpan(ctrl, 8); SetRowSpan(ctrl, 3);
                //Признак для включения/исключения для отображения параметра
                ctrl      = new CheckedListBox();
                ctrl.Name = INDEX_CONTROL.CLBX_PARAMETER_VISIBLED.ToString();
                ctrl.Dock = DockStyle.Fill;
                this.Controls.Add(ctrl, 0, posRow = posRow + 3);
                SetColumnSpan(ctrl, 8); SetRowSpan(ctrl, 3);

                ResumeLayout(false);
                PerformLayout();
            }