GridControlColumnsEditorForm.cs 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Windows.Forms;
  4. using FastReport.Utils;
  5. using FastReport.Dialog;
  6. using FastReport.Data;
  7. namespace FastReport.Forms
  8. {
  9. internal partial class GridControlColumnsEditorForm : BaseDialogForm
  10. {
  11. private GridControl grid;
  12. private GridControl saveGrid;
  13. private Timer timer;
  14. public GridControl Grid
  15. {
  16. get { return grid; }
  17. set
  18. {
  19. grid = value;
  20. saveGrid = new GridControl();
  21. saveGrid.Assign(value);
  22. PopulateColumns();
  23. btnAddAll.Enabled = grid.DataSource != null;
  24. }
  25. }
  26. private GridControlColumnCollection Columns
  27. {
  28. get { return grid.Columns; }
  29. }
  30. private GridControlColumn CurrentColumn
  31. {
  32. get
  33. {
  34. if (lvColumns.SelectedItems.Count == 0)
  35. return null;
  36. return lvColumns.SelectedItems[0].Tag as GridControlColumn;
  37. }
  38. }
  39. private void PopulateColumns()
  40. {
  41. lvColumns.Items.Clear();
  42. foreach (GridControlColumn c in Columns)
  43. {
  44. ListViewItem li = lvColumns.Items.Add(c.HeaderText, 113);
  45. li.Tag = c;
  46. }
  47. if (lvColumns.Items.Count > 0)
  48. lvColumns.Items[0].Selected = true;
  49. UpdateControls();
  50. lvColumns.Focus();
  51. }
  52. private void UpdateControls()
  53. {
  54. bool enabled = CurrentColumn != null;
  55. btnRemove.Enabled = enabled;
  56. btnUp.Enabled = enabled;
  57. btnDown.Enabled = enabled;
  58. gbProperties.Enabled = enabled;
  59. List<object> selectedObjects = new List<object>();
  60. foreach (ListViewItem li in lvColumns.SelectedItems)
  61. {
  62. selectedObjects.Add(li.Tag);
  63. }
  64. frPropertyGrid1.SelectedObjects = selectedObjects.ToArray();
  65. }
  66. private void btnAdd_Click(object sender, EventArgs e)
  67. {
  68. GridControlColumn column = new GridControlColumn();
  69. column.HeaderText = "Column";
  70. Columns.Add(column);
  71. ListViewItem li = lvColumns.Items.Add(column.HeaderText, 113);
  72. li.Tag = column;
  73. li.BeginEdit();
  74. UpdateControls();
  75. }
  76. private void btnRemove_Click(object sender, EventArgs e)
  77. {
  78. while (lvColumns.SelectedItems.Count > 0)
  79. {
  80. GridControlColumn c = lvColumns.SelectedItems[0].Tag as GridControlColumn;
  81. Columns.Remove(c);
  82. lvColumns.Items.Remove(lvColumns.SelectedItems[0]);
  83. }
  84. }
  85. private void btnAddAll_Click(object sender, EventArgs e)
  86. {
  87. grid.Columns.Clear();
  88. foreach (Column column in grid.DataSource.Columns)
  89. {
  90. GridControlColumn gridColumn = new GridControlColumn();
  91. gridColumn.HeaderText = column.Alias;
  92. gridColumn.DataColumn = grid.DataSource.Alias + "." + column.Alias;
  93. grid.Columns.Add(gridColumn);
  94. }
  95. PopulateColumns();
  96. }
  97. private void btnUp_Click(object sender, EventArgs e)
  98. {
  99. if (lvColumns.SelectedItems.Count != 1)
  100. return;
  101. int index = lvColumns.SelectedIndices[0];
  102. if (index > 0)
  103. {
  104. ListViewItem li = lvColumns.SelectedItems[0];
  105. lvColumns.Items.Remove(li);
  106. lvColumns.Items.Insert(index - 1, li);
  107. GridControlColumn c = Columns[index];
  108. Columns.Remove(c);
  109. Columns.Insert(index - 1, c);
  110. grid.Assign(grid);
  111. }
  112. }
  113. private void btnDown_Click(object sender, EventArgs e)
  114. {
  115. if (lvColumns.SelectedItems.Count != 1)
  116. return;
  117. int index = lvColumns.SelectedIndices[0];
  118. if (index < lvColumns.Items.Count - 1)
  119. {
  120. ListViewItem li = lvColumns.SelectedItems[0];
  121. lvColumns.Items.Remove(li);
  122. lvColumns.Items.Insert(index + 1, li);
  123. GridControlColumn c = Columns[index];
  124. Columns.Remove(c);
  125. Columns.Insert(index + 1, c);
  126. grid.Assign(grid);
  127. }
  128. }
  129. private void lvColumns_SelectedIndexChanged(object sender, EventArgs e)
  130. {
  131. timer.Start();
  132. }
  133. private void FTimer_Tick(object sender, EventArgs e)
  134. {
  135. UpdateControls();
  136. timer.Stop();
  137. }
  138. private void lvColumns_AfterLabelEdit(object sender, LabelEditEventArgs e)
  139. {
  140. if (e.Label == null)
  141. return;
  142. if (e.Label == "")
  143. {
  144. e.CancelEdit = true;
  145. return;
  146. }
  147. GridControlColumn c = lvColumns.Items[e.Item].Tag as GridControlColumn;
  148. c.HeaderText = e.Label;
  149. UpdateControls();
  150. }
  151. private void frPropertyGrid1_PropertyValueChanged(object s, PropertyValueChangedEventArgs e)
  152. {
  153. List<object> selectedObjects = new List<object>();
  154. selectedObjects.AddRange(frPropertyGrid1.SelectedObjects);
  155. foreach (ListViewItem li in lvColumns.Items)
  156. {
  157. GridControlColumn column = li.Tag as GridControlColumn;
  158. if (selectedObjects.Contains(column))
  159. li.Text = column.HeaderText;
  160. }
  161. }
  162. private void GridControlColumnsEditorForm_FormClosed(object sender, FormClosedEventArgs e)
  163. {
  164. if (DialogResult != DialogResult.OK)
  165. {
  166. grid.Clear();
  167. grid.Assign(saveGrid);
  168. }
  169. timer.Dispose();
  170. }
  171. public override void Localize()
  172. {
  173. base.Localize();
  174. MyRes res = new MyRes("Forms,GridControlColumnsEditor");
  175. Text = res.Get("");
  176. gbColumns.Text = res.Get("Columns");
  177. gbProperties.Text = res.Get("Properties");
  178. btnAdd.Text = res.Get("Add");
  179. btnRemove.Text = res.Get("Remove");
  180. btnAddAll.Text = res.Get("AddAll");
  181. }
  182. public override void UpdateDpiDependencies()
  183. {
  184. base.UpdateDpiDependencies();
  185. btnUp.Image = GetImage(208);
  186. btnDown.Image = GetImage(209);
  187. lvColumns.SmallImageList = GetImages();
  188. }
  189. public GridControlColumnsEditorForm()
  190. {
  191. InitializeComponent();
  192. Localize();
  193. timer = new Timer();
  194. timer.Interval = 50;
  195. timer.Tick += new EventHandler(FTimer_Tick);
  196. UIUtils.CheckRTL(this);
  197. UpdateDpiDependencies();
  198. }
  199. }
  200. }