From 98f71b5615f38d0c7b1bfd9d85c176c71615f9a6 Mon Sep 17 00:00:00 2001 From: Davide Gironi Date: Tue, 2 Apr 2024 18:37:33 +0200 Subject: [PATCH] add setting for max size and fixed filter button image size, updated version --- AdvancedDataGridView/AdvancedDataGridView.cs | 44 ++++++++++++++++-- .../AdvancedDataGridView.csproj | Bin 4246 -> 4246 bytes AdvancedDataGridView/ColumnHeaderCell.cs | 21 +++++++-- .../AdvancedDataGridViewSample.csproj | Bin 3988 -> 3988 bytes _DevTools/AutoBuilder.config.ps1 | 2 +- 5 files changed, 59 insertions(+), 8 deletions(-) diff --git a/AdvancedDataGridView/AdvancedDataGridView.cs b/AdvancedDataGridView/AdvancedDataGridView.cs index 549df7b..0a7fd1d 100644 --- a/AdvancedDataGridView/AdvancedDataGridView.cs +++ b/AdvancedDataGridView/AdvancedDataGridView.cs @@ -179,7 +179,6 @@ public enum TranslationKey #endregion - #region class properties and fields private List _sortOrderList = new List(); @@ -196,6 +195,10 @@ public enum TranslationKey private FilterBuilerMode _filterBuilerMode = FilterBuilerMode.And; + internal int _maxFilterButtonImageHeight = ColumnHeaderCell.FilterButtonImageDefaultSize; + + internal int _maxAllCellHeight = ColumnHeaderCell.FilterButtonImageDefaultSize; + #endregion @@ -428,7 +431,7 @@ public void EnableFilterAndSort(DataGridViewColumn column) else { column.SortMode = DataGridViewColumnSortMode.Programmatic; - cell = new ColumnHeaderCell(column.HeaderCell, true); + cell = new ColumnHeaderCell(this, column.HeaderCell, true); cell.SortChanged += new ColumnHeaderCellEventHandler(Cell_SortChanged); cell.FilterChanged += new ColumnHeaderCellEventHandler(Cell_FilterChanged); cell.FilterPopup += new ColumnHeaderCellEventHandler(Cell_FilterPopup); @@ -1253,6 +1256,41 @@ public void ShowMenuStrip(DataGridViewColumn column) } } + /// + /// Get or Set the max filter button image height + /// + public int MaxFilterButtonImageHeight + { + get + { + return _maxFilterButtonImageHeight; + } + set + { + _maxFilterButtonImageHeight = value > ColumnHeaderCell.FilterButtonImageDefaultSize ? value : ColumnHeaderCell.FilterButtonImageDefaultSize; + } + } + + #endregion + + + #region internal Cell methods + + /// + /// Get or Set the max filter button image height of all cells + /// + internal int MaxAllCellHeight + { + get + { + return _maxAllCellHeight; + } + set + { + _maxAllCellHeight = value > ColumnHeaderCell.FilterButtonImageDefaultSize ? value : ColumnHeaderCell.FilterButtonImageDefaultSize; + } + } + #endregion @@ -1283,7 +1321,7 @@ private IEnumerable FilterableCells protected override void OnColumnAdded(DataGridViewColumnEventArgs e) { e.Column.SortMode = DataGridViewColumnSortMode.Programmatic; - ColumnHeaderCell cell = new ColumnHeaderCell(e.Column.HeaderCell, FilterAndSortEnabled); + ColumnHeaderCell cell = new ColumnHeaderCell(this, e.Column.HeaderCell, FilterAndSortEnabled); cell.SortChanged += new ColumnHeaderCellEventHandler(Cell_SortChanged); cell.FilterChanged += new ColumnHeaderCellEventHandler(Cell_FilterChanged); cell.FilterPopup += new ColumnHeaderCellEventHandler(Cell_FilterPopup); diff --git a/AdvancedDataGridView/AdvancedDataGridView.csproj b/AdvancedDataGridView/AdvancedDataGridView.csproj index 622c74b95474f555d64622a730dbe6ce3b5aecef..48a50e81249358a1d384b7ffa88879e6d6dcb7bb 100644 GIT binary patch delta 96 zcmbQHI8AXw01LMfg8_pPgC2t+gYo2O7Jq&uK7$Q|{^VK~#mNOMe3M_WsGz77XAMQ+ TGx7*e4qz1ksolJS^&J-gaD5W+ delta 96 zcmbQHI8AXw01LMPgCT<%gC3AHnjFpI&yU1suwl@jT+5<3xqyXl@(UIf6t&{4p(uPt S9^uIWtO6jln^&;D;{pJ3EfV+u diff --git a/AdvancedDataGridView/ColumnHeaderCell.cs b/AdvancedDataGridView/ColumnHeaderCell.cs index b534266..05dfdda 100644 --- a/AdvancedDataGridView/ColumnHeaderCell.cs +++ b/AdvancedDataGridView/ColumnHeaderCell.cs @@ -34,13 +34,20 @@ internal class ColumnHeaderCell : DataGridViewColumnHeaderCell /// private const bool FilterDateAndTimeDefaultEnabled = false; + /// + /// Default filter button image width and height + /// + public const int FilterButtonImageDefaultSize = 23; + #endregion #region class properties and fields + private readonly AdvancedDataGridView dataGridView; + private Image _filterImage = Properties.Resources.ColumnHeader_UnFiltered; - private Size _filterButtonImageSize = new Size(16, 16); + private Size _filterButtonImageSize = new Size(FilterButtonImageDefaultSize, FilterButtonImageDefaultSize); private bool _filterButtonPressed = false; private bool _filterButtonOver = false; private Rectangle _filterButtonOffsetBounds = Rectangle.Empty; @@ -61,11 +68,14 @@ internal class ColumnHeaderCell : DataGridViewColumnHeaderCell /// /// ColumnHeaderCell constructor /// + /// /// /// - public ColumnHeaderCell(DataGridViewColumnHeaderCell oldCell, bool filterEnabled) + public ColumnHeaderCell(AdvancedDataGridView dataGridView, DataGridViewColumnHeaderCell oldCell, bool filterEnabled) : base() { + this.dataGridView = dataGridView; + Tag = oldCell.Tag; ErrorText = oldCell.ErrorText; ToolTipText = oldCell.ToolTipText; @@ -75,7 +85,10 @@ public ColumnHeaderCell(DataGridViewColumnHeaderCell oldCell, bool filterEnabled Style = oldCell.Style; _filterEnabled = filterEnabled; - _filterButtonImageSize = new Size((int)Math.Round(oldCell.Size.Height * 0.8), (int)Math.Round(oldCell.Size.Height * 0.8)); + if (oldCell.Size.Height > dataGridView.MaxAllCellHeight) + dataGridView.MaxAllCellHeight = oldCell.Size.Height; + int filterButtonImageHeight = dataGridView.MaxFilterButtonImageHeight < dataGridView.MaxAllCellHeight ? dataGridView.MaxFilterButtonImageHeight : dataGridView.MaxAllCellHeight; + _filterButtonImageSize = new Size((int)Math.Round(filterButtonImageHeight * 0.8), (int)Math.Round(filterButtonImageHeight * 0.8)); ColumnHeaderCell oldCellt = oldCell as ColumnHeaderCell; if (oldCellt != null && oldCellt.MenuStrip != null) @@ -217,7 +230,7 @@ public void SortDESC() /// public override object Clone() { - return new ColumnHeaderCell(this, FilterAndSortEnabled); + return new ColumnHeaderCell(dataGridView, this, FilterAndSortEnabled); } /// diff --git a/AdvancedDataGridViewSample/AdvancedDataGridViewSample.csproj b/AdvancedDataGridViewSample/AdvancedDataGridViewSample.csproj index bb373c260e06618797d3e375cf1a62455c0ac676..cca72bca1ed71c229c02a7fd152a08b63f762258 100644 GIT binary patch delta 80 zcmbOtKSh262P?l3g8_pPgC2t+gE4~*gZ|`3R{6b%7 diff --git a/_DevTools/AutoBuilder.config.ps1 b/_DevTools/AutoBuilder.config.ps1 index 121f9f1..e82fc50 100644 --- a/_DevTools/AutoBuilder.config.ps1 +++ b/_DevTools/AutoBuilder.config.ps1 @@ -6,7 +6,7 @@ $solutionName = "AdvancedDataGridView" $versionMajor = "1" $versionMinor = "2" $versionBuild = GetVersionBuild -$versionRevision = "12" +$versionRevision = "13" #build version number $version = GetVersion $versionMajor $versionMinor $versionBuild $versionRevision