DataColumnDropDown.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. using System;
  2. using System.Windows.Forms;
  3. using System.Drawing;
  4. using FastReport.Utils;
  5. using FastReport.Data;
  6. using System.ComponentModel;
  7. namespace FastReport.Controls
  8. {
  9. internal class DataColumnDropDown : ToolStripDropDown
  10. {
  11. private ToolStripControlHost host;
  12. private DataTreeView tree;
  13. public event EventHandler ColumnSelected;
  14. public Control Owner { get; set; }
  15. public DataTreeView DataTree
  16. {
  17. get { return tree; }
  18. }
  19. public DataSourceBase DataSource
  20. {
  21. get { return tree.DataSource; }
  22. set { tree.DataSource = value; }
  23. }
  24. public string Column
  25. {
  26. get { return tree.SelectedItem; }
  27. set { tree.SelectedItem = value; }
  28. }
  29. private void tree_AfterSelect(object sender, TreeViewEventArgs e)
  30. {
  31. if (tree.SelectedItemType == DataTreeSelectedItemType.None || tree.SelectedItem != "")
  32. {
  33. Close();
  34. ColumnSelected?.Invoke(this, EventArgs.Empty);
  35. }
  36. }
  37. public void CreateNodes(Report report)
  38. {
  39. tree.CreateNodes(report.Dictionary);
  40. }
  41. public void SetSize(int width, int height)
  42. {
  43. tree.Size = new Size(width - 2, height);
  44. }
  45. protected override void OnOpening(CancelEventArgs e)
  46. {
  47. base.OnOpening(e);
  48. if (Owner != null)
  49. {
  50. #if WPF
  51. if (Owner.DeviceDpi != tree.DeviceDpi)
  52. {
  53. tree.Width = tree.Width * tree.DeviceDpi / Owner.DeviceDpi;
  54. tree.Font = DrawUtils.DefaultFont;
  55. }
  56. else
  57. #endif
  58. tree.Font = Owner.Font;
  59. tree.ImageList = Owner.GetImages();
  60. }
  61. }
  62. public DataColumnDropDown()
  63. {
  64. tree = new DataTreeView();
  65. tree.Size = new Size(200, 250);
  66. tree.BorderStyle = BorderStyle.None;
  67. tree.HideSelection = false;
  68. tree.ShowEnabledOnly = true;
  69. tree.ShowNone = true;
  70. tree.ShowRelations = true;
  71. tree.ShowVariables = false;
  72. tree.ShowParameters = false;
  73. tree.Font = DrawUtils.DefaultFont;
  74. tree.AfterSelect += tree_AfterSelect;
  75. host = new ToolStripControlHost(tree);
  76. Items.Add(host);
  77. }
  78. }
  79. }