Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Использование DevExpress (часть 4)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

BlackVetal



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using DevExpress.Data.Filtering;
using DevExpress.Xpo;
using XPO_OMLib;
using XPO_OMLib.XPO;
using XPO_Sbit2010;
using SbitLib;
 
 
namespace SbitMain
{
    /// <summary>
    /// Класс описывает форму резервирования вагонов под суточные задания отгрузки
    /// </summary>
    public partial class XtraFormСуточноеЗаданиеВагоны : XtraFormOMBase
    {
        #region Поля
 
        private CurrencyManager _CurrencyManager_СуточноеЗадание;
        private CurrencyManager _CurrencyManager_Вагоны;
 
        private СуточноеЗадание_СуточноеЗадание _Current_СуточноеЗадание;
        private ТранспортДвижение_ЖурналВагонов _Current_Вагон;
 
 
        private ТранспортДвижение_ЖурналВагонов _вагон_Поиск = null;
 
        #endregion
 
 
        #region Конструкторы
 
        /// <summary>
        /// Конструктор
        /// </summary>
        public XtraFormСуточноеЗаданиеВагоны()
        {
            InitializeComponent();
 
        }
 
        #endregion
 
 
        #region Методы
 
        /// <summary>
        /// Метод делает выборку прибытия вагонов за период, переданный в параметрах
        /// </summary>
        /// <param name="начало"></param>
        /// <param name="конец"></param>
        private void Get_ПрибытиеВагонов(DateTime начало, DateTime конец)
        {
            xpCollection_ПрибытиеВагонов.Criteria = new BetweenOperator("ДатаВремяПрибытия", начало.Date, конец.Date.AddDays(1).AddSeconds(-1));
        }
 
 
        /// <summary>
        /// Метод инициализирует некоторые компоненты формы.
        /// В частности происходит привязка к менеджерам текущих позиций и обработка
        /// изменения текущей позиции  при первоначальной загрузке.
        /// </summary>
        private void Init()
        {
            _CurrencyManager_СуточноеЗадание = this.BindingContext[xpCollection_СуточноеЗадание] as CurrencyManager;
            _CurrencyManager_СуточноеЗадание.CurrentChanged += new EventHandler(CurrencyManager_СуточноеЗадание_CurrentChanged);
 
            _CurrencyManager_Вагоны = this.BindingContext[xpCollection_ПрибытиеВагонов] as CurrencyManager;
            _CurrencyManager_Вагоны.CurrentChanged += new EventHandler(CurrencyManager_Вагоны_CurrentChanged);
 
 
            if (_CurrencyManager_СуточноеЗадание.Position >= 0)
            {
                _Current_СуточноеЗадание = _CurrencyManager_СуточноеЗадание.Current as СуточноеЗадание_СуточноеЗадание;
                IXPO_OMObject iXPO_OMObject = _Current_СуточноеЗадание as IXPO_OMObject;
                iXPO_OMObject.Changed += Current_СуточноеЗадание_Changed;
            }
 
 
            if (_CurrencyManager_Вагоны.Position >= 0)
            {
                _Current_Вагон = _CurrencyManager_Вагоны.Current as ТранспортДвижение_ЖурналВагонов;
                IXPO_OMObject iXPO_OMObject = _Current_Вагон as IXPO_OMObject;
                iXPO_OMObject.Changed += Current_Вагоны_Changed;
            }
        }
 
 
        #endregion
 
 
        #region События
       
        /// <summary>
        /// Метод при загрузке форме инициализирует некоторые элементы формы
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void XtraFormСуточноеЗаданиеВагоны_Load(object sender, EventArgs e)
        {
            Init();
            // Присваиваем по умолчанию сегодняшнею дату для выбора суточного задания
            dateEdit_СуточноеЗадание.EditValue = DateTime.Today;
            // Присваиваем период выбора прибытия вагона за неделю
            dateEdit_НачалоПрибытия.EditValue = DateTime.Today.AddDays(-7);
            dateEdit_КонецПрибытия.EditValue = DateTime.Today;
        }
 
        /// <summary>
        /// При изменении даты данного элемента выбираем Суточные задания на новую дату
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void dateEdit_СуточноеЗадание_EditValueChanged(object sender, EventArgs e)
        {
            // устанавливаем период выбора суточных заданий выбранный день
            DateTime begin = (DateTime)dateEdit_СуточноеЗадание.EditValue;
            DateTime end = (DateTime)dateEdit_СуточноеЗадание.EditValue;
            // устанавливаем критерий выбора для суточных заданий
            xpCollection_СуточноеЗадание.LoadingEnabled = true;
            xpCollection_СуточноеЗадание.Criteria = new BetweenOperator("Дата", begin.Date, end.Date.AddDays(1).AddMinutes(-1));
        }
 
        /// <summary>
        /// При изменении даты начала периода выбора прибытия вагонов выбираем данные с новыми параметрами.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void dateEdit_НачалоПрибытия_EditValueChanged(object sender, EventArgs e)
        {
            DateTime начало = (DateTime)dateEdit_НачалоПрибытия.EditValue;
            DateTime конец = DateTime.Today;
             
            if(dateEdit_КонецПрибытия.EditValue!=null)
                конец = (DateTime)dateEdit_КонецПрибытия.EditValue;
 
            if (начало > конец)
                конец = начало;
 
            Get_ПрибытиеВагонов(начало, конец);
        }
 
        /// <summary>
        /// При изменении даты конца периода выбора прибытия вагонов выбираем данные с новыми параметрами.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void dateEdit_КонецПрибытия_EditValueChanged(object sender, EventArgs e)
        {
            DateTime начало = DateTime.Today;
 
            if (dateEdit_НачалоПрибытия.EditValue != null)
                начало = (DateTime)dateEdit_НачалоПрибытия.EditValue;
             
            DateTime конец = (DateTime)dateEdit_КонецПрибытия.EditValue;
 
            if (начало > конец)
                начало = конец;
 
            xpCollection_ПрибытиеВагонов.LoadingEnabled = true;
 
            Get_ПрибытиеВагонов(начало, конец);
        }
 
        /// <summary>
        /// При нажатии  кнопки данный метод ставит вагон в резерв
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void itemButtonEdit_КнопкаРезервирования_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
        {
            DevExpress.XtraGrid.Views.Grid.GridView _view_Задание = gridControl_СуточноеЗадание.MainView as DevExpress.XtraGrid.Views.Grid.GridView;
            DevExpress.XtraGrid.Views.Grid.GridView _view_Вагон = gridControl_Вагоны.MainView as DevExpress.XtraGrid.Views.Grid.GridView;
            ТранспортДвижение_ЖурналВагонов прибытиеВагона = (ТранспортДвижение_ЖурналВагонов)_view_Вагон.GetFocusedRow();
            СуточноеЗадание_СуточноеЗадание задание = null;
            ТранспортДвижение_СуточноеЗадание_ПрибытиеВагонов резерв = null;
 
            if (прибытиеВагона.ДатаУбытия != DateTime.MinValue)
            {
                MessageBox.Show("Данный вагон уже убыл со станции!", "Внимание!!!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
 
            if (e.Button.Kind == DevExpress.XtraEditors.Controls.ButtonPredefines.Plus)
            {
                задание = (СуточноеЗадание_СуточноеЗадание)_view_Задание.GetFocusedRow();
                резерв = xpCollection_ПрибытиеВагонов.Session.FindObject<ТранспортДвижение_СуточноеЗадание_ПрибытиеВагонов>(
                    new GroupOperator(GroupOperatorType.And, new CriteriaOperator[] {new BinaryOperator("Oid_СуточноеЗадание", задание.Oid),
                    new BinaryOperator("Oid_Вагона", прибытиеВагона.Oid)}));
 
                if (резерв == null)
                {
                    резерв = new ТранспортДвижение_СуточноеЗадание_ПрибытиеВагонов(прибытиеВагона.Session);
                    резерв.Oid_Вагона = прибытиеВагона;
                    резерв.Oid_СуточноеЗадание = задание;
                    резерв.ДатаВремяСоздания = DateTime.Now;
                    резерв.Save();
                    прибытиеВагона.Резерв.Add(резерв);
                    прибытиеВагона.ДатаРезерва = задание.Дата;
                    прибытиеВагона.Save();
                    задание.Резерв.Add(резерв);
                    задание.Save();
                }
            }
            else if(e.Button.Kind == DevExpress.XtraEditors.Controls.ButtonPredefines.Minus)
            {
                резерв = xpCollection_ПрибытиеВагонов.Session.FindObject<ТранспортДвижение_СуточноеЗадание_ПрибытиеВагонов>(
                      new BinaryOperator("Oid_Вагона", прибытиеВагона.Oid));
                if (резерв != null)
                {
                    задание = резерв.Oid_СуточноеЗадание;
                    прибытиеВагона.Резерв.Remove(резерв);
                    прибытиеВагона.ДатаРезерва = DateTime.MinValue;
                    прибытиеВагона.Save();
                    задание.Резерв.Remove(резерв);
                    задание.Save();
                }
            }
        }
 
        /// <summary>
        /// Выделяем желтым строки вагонов поставленные в резерв тукщему суточному заданию.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void view_Вагоны_RowStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e)
        {
            DevExpress.XtraGrid.Views.Grid.GridView _view_Задание = gridControl_СуточноеЗадание.MainView as DevExpress.XtraGrid.Views.Grid.GridView;
            DevExpress.XtraGrid.Views.Grid.GridView _view_вагоны = gridControl_Вагоны.MainView as DevExpress.XtraGrid.Views.Grid.GridView;
            СуточноеЗадание_СуточноеЗадание задание = (СуточноеЗадание_СуточноеЗадание)_view_Задание.GetFocusedRow();
            ТранспортДвижение_ЖурналВагонов вагон = (ТранспортДвижение_ЖурналВагонов)_view_вагоны.GetRow(e.RowHandle);
            if (_вагон_Поиск != null)
            {
                try
                {
                    if (вагон == _вагон_Поиск)
                    {
                        _view_вагоны.Appearance.OddRow.BackColor = Color.Red;
                        _view_вагоны.Appearance.EvenRow.BackColor = Color.Red;
                    }
                    else
                    {
                        _view_вагоны.Appearance.OddRow.BackColor = Color.AliceBlue;
                        _view_вагоны.Appearance.EvenRow.BackColor = Color.MintCream;
                    }
                }
                catch
                {
                    _view_вагоны.Appearance.OddRow.BackColor = Color.AliceBlue;
                    _view_вагоны.Appearance.EvenRow.BackColor = Color.MintCream;
                }
            }
            else
            {
                try
                {
                    if (задание.Резерв.BaseIndexOf(вагон.Резерв[0]) >= 0)
                    {
                        _view_вагоны.Appearance.OddRow.BackColor = Color.Yellow;
                        _view_вагоны.Appearance.EvenRow.BackColor = Color.Yellow;
                    }
                    else
                    {
                        _view_вагоны.Appearance.OddRow.BackColor = Color.AliceBlue;
                        _view_вагоны.Appearance.EvenRow.BackColor = Color.MintCream;
                    }
                }
                catch
                {
                    _view_вагоны.Appearance.OddRow.BackColor = Color.AliceBlue;
                    _view_вагоны.Appearance.EvenRow.BackColor = Color.MintCream;
                }
            }
 
        }
 
 
        #region CurrencyManager
 
 
        /// <summary>
        /// Обработчик события изменения текущей позиции суточного задания отгрузки - привязываем и отвязываем
        /// обработку события изменения строки при изменения позиции
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void CurrencyManager_СуточноеЗадание_CurrentChanged(object sender, EventArgs e)
        {
            if (_Current_СуточноеЗадание != null)
            {
                IXPO_OMObject iXPO_OMObject = _Current_СуточноеЗадание as IXPO_OMObject;
                iXPO_OMObject.Changed -= Current_СуточноеЗадание_Changed;
                _Current_СуточноеЗадание = null;
            }
 
            if (_CurrencyManager_СуточноеЗадание.Position >= 0)
            {
                _Current_СуточноеЗадание = _CurrencyManager_СуточноеЗадание.Current as СуточноеЗадание_СуточноеЗадание;
                IXPO_OMObject iXPO_OMObject = _Current_СуточноеЗадание as IXPO_OMObject;
                iXPO_OMObject.Changed += Current_СуточноеЗадание_Changed;
            }
            gridControl_Вагоны.RefreshDataSource();
        }
 
         /// <summary>
        /// Обработчик события изменения текущей позиции вагона - привязываем и отвязываем
        /// обработку события изменения строки при изменения позиции
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void CurrencyManager_Вагоны_CurrentChanged(object sender, EventArgs e)
        {
            if (_Current_Вагон != null)
            {
                IXPO_OMObject iXPO_OMObject = _Current_Вагон as IXPO_OMObject;
                iXPO_OMObject.Changed -= Current_Вагоны_Changed;
                _Current_Вагон = null;
            }
 
            if (_CurrencyManager_Вагоны.Position >= 0)
            {
                _Current_Вагон = _CurrencyManager_Вагоны.Current as ТранспортДвижение_ЖурналВагонов;
                IXPO_OMObject iXPO_OMObject = _Current_Вагон as IXPO_OMObject;
                iXPO_OMObject.Changed += Current_Вагоны_Changed;
            }
        }
         
        /// <summary>
        ///  
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Current_СуточноеЗадание_Changed(object sender, ObjectChangeEventArgs e)
        {
            gridControl_Вагоны.Refresh();
        }
 
        /// <summary>
        ///  
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Current_Вагоны_Changed(object sender, ObjectChangeEventArgs e)
        {
            ////Отгрузка_ЖДНакладнаяПродукция d;
            //if (layoutControlGroup_Уборка.Visible)
            //{
            //    switch (e.PropertyName)
            //    {
            //        case @"ПлатаЗаПростойДок":
            //            //advBandedGridView_Уборка.SetFocusedRowCellValue(colПлатаЗаПростойДок,
            //            //    (decimal)advBandedGridView_Уборка.GetFocusedRowCellValue(colПлатаЗаПростойДок) - (decimal)e.OldValue + (decimal)e.NewValue);
            //            advBandedGridView_Уборка.RefreshData();
            //            advBandedGridView_Уборка.RefreshRowCell(advBandedGridView_Уборка.FocusedRowHandle, colПлатаЗаПростойДок);
 
            //            advBandedGridView_Уборка.RefreshRowCell(advBandedGridView_Уборка.FocusedRowHandle, colСтоимость1);
            //            break;
            //        case @"ПлатаЗаПростойФакт":
            //            advBandedGridView_Уборка.RefreshData();
            //            advBandedGridView_Уборка.RefreshRowCell(advBandedGridView_Уборка.FocusedRowHandle, colПлатаЗаПростойФакт);
            //            break;
            //        case @"Штраф":
            //            advBandedGridView_Уборка.RefreshRowCell(advBandedGridView_Уборка.FocusedRowHandle, colШтраф2);
            //            advBandedGridView_Уборка.RefreshRowCell(advBandedGridView_Уборка.FocusedRowHandle, colСтоимость1);
            //            break;
            //        case @"ПлатаЗаХранение":
            //            advBandedGridView_Уборка.RefreshRowCell(advBandedGridView_Уборка.FocusedRowHandle, colПлатаЗаХранение2);
            //            advBandedGridView_Уборка.RefreshRowCell(advBandedGridView_Уборка.FocusedRowHandle, colСтоимость1);
            //            break;
            //        case @"ТипДокумента":
            //            advBandedGridView_Уборка.RefreshRowCell(advBandedGridView_Уборка.FocusedRowHandle, colПростойДок);
            //            break;
            //    }
            //}
        }
 
        #endregion
 
 
        /// <summary>
        /// Метод осуществляет поиск вагона по введеному номеру в textedit
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void simpleButton_SeachVagon_Click(object sender, EventArgs e)
        {
            SortingCollection _sortingCollection = new SortingCollection();
             
            _sortingCollection.Add(new SortProperty("ДатаВремяПрибытия", DevExpress.Xpo.DB.SortingDirection.Descending));
            xpCollection_ПоискВагона.Sorting = _sortingCollection;
            _вагон_Поиск = xpCollection_ПоискВагона.Session.FindObject<ТранспортДвижение_ЖурналВагонов>
                        (new BinaryOperator("НомерВагона", textEdit_SeachVagon.Text.Trim()));
           
            if (_вагон_Поиск != null)
            {
                //if (_вагон_Поиск.ДатаВремяПрибытия < (DateTime)dateEdit_НачалоПрибытия.EditValue)
                    dateEdit_НачалоПрибытия.EditValue = _вагон_Поиск.ДатаВремяПрибытия.Date;
                //if (_вагон_Поиск.ДатаВремяПрибытия > (DateTime)dateEdit_КонецПрибытия.EditValue)
                   dateEdit_КонецПрибытия.EditValue = _вагон_Поиск.ДатаВремяПрибытия.Date;
            }
            else
            {
                MessageBox.Show("Поиск не дал результатов. Попробуйте с новыми данными.", "Предупреждение!", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            gridControl_Вагоны.MainView.RefreshData();
        }
 
 
        /// <summary>
        /// Метод очищает строку поиска вагона и внутреннюю переменную _вагон_Поиск
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void simpleButton_Clear_SeachVagon_Click(object sender, EventArgs e)
        {
            textEdit_SeachVagon.Text = "";
            _вагон_Поиск = null;
            gridControl_Вагоны.MainView.RefreshData();
        }
 
        #endregion
 
 
    }
}

Всего записей: 1094 | Зарегистр. 13-11-2005 | Отправлено: 06:48 01-07-2010
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Использование DevExpress (часть 4)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru