Exemplo n.º 1
0
        /// <summary>
        /// 印刷初期化
        /// </summary>
        /// <param name="e">発生したイベント</param>
        protected override void OnBeginPrint(System.Drawing.Printing.PrintEventArgs e)
        {
            if (TimeTable == null)
            {
                return;
            }
            CachedStart = Start;
            CachedEnd   = End;
            // タイムテーブルによる設定
            header.TimeTable = TimeTable;
            header.Document  = this;
            footer.TimeTable = TimeTable;
            footer.Document  = this;
            index            = 0;
            // メンバーの一覧設定
            members.Clear();
            int z = TimeTable.Members.Size(true);

            for (int i = 0; i < z; i++)
            {
                CMember member = TimeTable.Members[i, true];
                if (member.IsAvailable(Start) || member.IsAvailable(End))
                {
                    members.Add(member);
                }
            }
            // ページの作成
            TimeSpan ONEDAY = new TimeSpan(1, 0, 0, 0);

            pages.Clear();
            bool       cont1 = true;
            DateTime   k     = Start;
            CPageIndex page  = null;

            while (cont1)
            {
                int  j     = 0;
                bool cont2 = true;
                while (cont2)
                {
                    page                  = new CPageIndex();
                    page.Document         = this;
                    page.Start            = k;
                    page.MemberStartIndex = j;
                    page.CalcPage();
                    pages.Add(page);
                    j = page.MemberEndIndex + 1;
                    if (j >= members.Count)
                    {
                        cont2 = false;
                    }
                }
                k = page.End.AddDays(1);
                if (k >= End)
                {
                    cont1 = false;
                }
            }
        }
Exemplo n.º 2
0
 /// <summary>メンバーの一覧の作成
 /// </summary>
 private void SetUpValidMembers () {
     Members.Clear();
     Member2PatternWrapper.Clear();
     if (TimeTable != null && Dates.Count > 0) {
         // 期間中有効なメンバーのみ
         int size = TimeTable.Members.Size(true);
         for (int i = 0; i < size; i++) {
             CMember member = TimeTable.Members[i, true];
             if (member.IsAvailable(StartDate, EndDate)) {
                 Members.Add(member);
                 SetUpMember2Pattern(member);
             }
         }
     }
     BodyTable.RowCount = Members.Count;
 }
Exemplo n.º 3
0
        /// <summary>メンバーの再作成
        /// </summary>
        private void RebuildMembers()
        {
            for (int i = PatternMemberView.Columns.Count - 1; i > 0; i--)
            {
                PatternMemberView.Columns.RemoveAt(i);
            }
            DsMembers.Clear();
            members.Clear();
            TblMembers.Rows.Add(CMember.NULL, CMember.NULL.Name);
            int j = 0;

            for (int i = 0; i < TimeTable.Members.Size(true); i++)
            {
                CMember member = TimeTable.Members[i, true];
                if (member.IsAvailable(sdate.Date) && !member.BuiltIn)
                {
                    members.Add(member);
                    // データセットの設定
                    TblMembers.Rows.Add(member, member.Name);
                    // 列の設定
                    DataGridViewComboBoxColumn column = new DataGridViewComboBoxColumn();
                    column.CellTemplate  = new MemberCell();
                    column.DataSource    = this.DsMembers;
                    column.DisplayMember = "TblMembers.ClmMemberName";
                    column.HeaderText    = (++j) + "番目";
                    column.Name          = "MEMBER" + i.ToString();
                    column.Resizable     = System.Windows.Forms.DataGridViewTriState.True;
                    column.SortMode      = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
                    column.ValueMember   = "TblMembers.ClmMember";
                    column.DisplayStyle  = System.Windows.Forms.DataGridViewComboBoxDisplayStyle.Nothing;
                    column.DisplayStyleForCurrentCellOnly = true;
                    PatternMemberView.Columns.Add(column);
                }
            }
            //TblMembers.Rows.Add(null, "選択無し");
            MemberPatternView.RowCount = members.Count;
            //PatternMemberView.ColumnCount = members.Count + 1;
        }
        /// <summary>メンバー列の再作成
        /// </summary>
        private void ResetMembers()
        {
            CalenderView.Enabled = false;
            TimeTableManager.ElementCollection.CMemberCollection Members = TimeTable.Members;
            // 不要な列の削除
            int workcount = 0;

            while (workcount < columns1.Count)
            {
                ShiftComboBoxColumn column = columns1[workcount];
                CMember             member = column.Member;
                if (member.TimeTable != this.TimeTable)
                {
                    // 異なるタイムテーブルのメンバー
                    CalenderView.Columns.Remove(column);
                    columns1.Remove(column);
                    columns2.Remove(member);
                }
                else
                {
                    if (member.IsAvailable(StartDate, EndDate))
                    {
                        // 有効なら無視する
                        workcount++;
                    }
                    else
                    {
                        // 無効なら削除する
                        CalenderView.Columns.Remove(column);
                        columns1.Remove(column);
                        columns2.Remove(member);
                    }
                }
            }
            for (int i = 0; i < Members.Size(true); i++)
            {
                CMember member = Members[i, true];
                if (member.IsAvailable(StartDate, EndDate))
                {
                    // 列が必要なら追加
                    ShiftComboBoxColumn column;
                    if (columns2.ContainsKey(member))
                    {
                        column = columns2[member];
                        //column.CellTemplate = new PatternCell();
                        if (column.Index != i + 2)
                        {
                            CalenderView.Columns.Remove(column);
                            columns2.Remove(member);
                            columns1.Remove(column);
                            // 列
                            column = new ShiftComboBoxColumn();
                            column.CellTemplate  = new PatternCell();
                            column.Member        = member;
                            column.DataSource    = this.DsPatternComboBox;
                            column.DisplayMember = "TblPatternComboBox.ClmPatternNameComboBox";
                            column.HeaderText    = member.Name;
                            column.Name          = "MEMBER" + member.ObjectID.ToString();
                            column.Resizable     = System.Windows.Forms.DataGridViewTriState.True;
                            column.SortMode      = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
                            column.ValueMember   = "TblPatternComboBox.ClmPatternComboBox";
                            column.DisplayStyle  = System.Windows.Forms.DataGridViewComboBoxDisplayStyle.Nothing;
                            column.DisplayStyleForCurrentCellOnly = true;
                            columns2.Add(member, column);
                            if (i < columns1.Count)
                            {
                                columns1.Insert(i, column);
                                CalenderView.Columns.Insert(i + 2, column);
                            }
                            else
                            {
                                columns1.Add(column);
                                CalenderView.Columns.Add(column);
                            }
                        }
                    }
                    else
                    {
                        column = new ShiftComboBoxColumn();
                        column.CellTemplate  = new PatternCell();
                        column.Member        = member;
                        column.DataSource    = this.DsPatternComboBox;
                        column.DisplayMember = "TblPatternComboBox.ClmPatternNameComboBox";
                        column.HeaderText    = member.Name;
                        column.Name          = "MEMBER" + member.ObjectID.ToString();
                        column.Resizable     = System.Windows.Forms.DataGridViewTriState.True;
                        column.SortMode      = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
                        column.ValueMember   = "TblPatternComboBox.ClmPatternComboBox";
                        column.DisplayStyle  = System.Windows.Forms.DataGridViewComboBoxDisplayStyle.Nothing;
                        column.DisplayStyleForCurrentCellOnly = true;
                        CalenderView.Columns.Add(column);
                        columns1.Add(column);
                        columns2.Add(member, column);
                    }
                }
                else
                {
                    // 列が不要なら削除
                    ShiftComboBoxColumn column;
                    if (columns2.ContainsKey(member))
                    {
                        column = columns2[member];
                        //CalenderView.Columns.Remove(column);
                        columns2.Remove(member);
                        columns1.Remove(column);
                    }
                }
                //*/
            }
            CalenderView.Enabled = true;
            //CalenderView.EndEdit();
        }
Exemplo n.º 5
0
        /// <summary>出力実行
        /// </summary>
        /// <param name="sender">イベント発生元</param>
        /// <param name="e">発生したイベント</param>
        private void BtnExport_Click(object sender, EventArgs e)
        {
            if (TxtOutFile.Text.Trim().Length == 0)
            {
                // ファイル名が指定されていなければ指定させる
                DialogResult dr = saveFileDialog1.ShowDialog(this);
                if (dr == DialogResult.OK)
                {
                    TxtOutFile.Text = saveFileDialog1.FileName;
                }
                else
                {
                    return;
                }
            }
            List <OutputColumnMethod> items1 = new List <OutputColumnMethod>();
            List <OutputColumnMethod> items2 = new List <OutputColumnMethod>();

            #region 列一覧の作成
            foreach (System.Data.DataRowView view in this.LstItemList.CheckedItems)
            {
                // そのあとで有効なものを追加する
                EnmCSVItem item = (EnmCSVItem)view.Row["ClmItem"];
                switch (item)
                {
                case EnmCSVItem.ItmDate:
                    items1.Add(new OutputColumnMethod(ReturnDate));
                    break;

                case EnmCSVItem.ItmRequireName:
                    items1.Add(new OutputColumnMethod(ReturnRequireName));
                    break;

                case EnmCSVItem.ItmPatternName:
                    items2.Add(new OutputColumnMethod(ReturnPatternName));
                    break;

                case EnmCSVItem.ItmPatternStart:
                    items2.Add(new OutputColumnMethod(ReturnPatternStart));
                    break;

                case EnmCSVItem.ItmPatternLength:
                    items2.Add(new OutputColumnMethod(ReturnPatternLength));
                    break;

                case EnmCSVItem.ItmPatternEnd:
                    items2.Add(new OutputColumnMethod(ReturnPatternEnd));
                    break;

                default:
                    break;
                }
            }
            #endregion
            try {
                // ファイルオープン
                System.IO.StreamWriter writer = new System.IO.StreamWriter(TxtOutFile.Text.Trim());
                string RowText = "";
                #region メンバー一覧の作成
                List <CMember> members = new List <CMember>();
                for (int i = 0; i < TimeTable.Members.Size(true); i++)
                {
                    CMember member = TimeTable.Members[i, true];
                    if (member.IsAvailable(StartDate, EndDate))
                    {
                        members.Add(member);
                    }
                }
                #endregion
                #region 見出しの作成
                for (int i = 0; i < items1.Count; i++)
                {
                    RowText += items1[i](DateTime.Now, null, true) + ",";
                }
                foreach (CMember member in members)
                {
                    for (int i = 0; i < items2.Count; i++)
                    {
                        RowText += items2[i](DateTime.Now, member, true) + ",";
                    }
                }
                writer.WriteLine(RowText);
                #endregion
                #region 各行の作成
                DateTime date = StartDate;
                while (!(date > EndDate))
                {
                    RowText = "";
                    for (int i = 0; i < items1.Count; i++)
                    {
                        RowText += items1[i](date, null, false) + ",";
                    }
                    foreach (CMember member in members)
                    {
                        for (int i = 0; i < items2.Count; i++)
                        {
                            RowText += items2[i](date, member, false) + ",";
                        }
                    }
                    writer.WriteLine(RowText);
                    // 次へ
                    date = date.AddDays(1.0);
                }
                #endregion
                // 終了
                writer.Close();
            } catch (Exception ex) {
                MessageBox.Show(this, ex.StackTrace, ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            Dispose();
        }