/// <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; } } }
/// <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; }
/// <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(); }
/// <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(); }