protected virtual int ProcessColumnsCollection(List <TableViewCellArrangeInfo> columns) { int cellSpacing = this.Layout.Owner.CellSpacing; int count = columns.Count; int num = 0; for (int index = 0; index < count; ++index) { TableViewCellArrangeInfo column = columns[index]; int columnWidth = this.Layout.GetColumnWidth(column.Column); column.SetWidth(columnWidth, true, this.Layout.Context == GridLayoutContext.Printer && !this.layout.Owner.RightToLeft); column.OffsetX = num; num += columnWidth + cellSpacing; } if (this.Layout.Owner.RightToLeft) { for (int index = 0; index < count; ++index) { TableViewCellArrangeInfo column = columns[index]; column.OffsetX = num - column.OffsetX - column.Column.Width - cellSpacing; } } if (columns == this.scrollableColumns) { num -= cellSpacing; } return(num); }
public override int CalculateColumnsWidth(SizeF availableSize) { int cellSpacing = this.Layout.Owner.CellSpacing; this.availableWidth = (int)availableSize.Width; this.nonStretchableWidth = 0; for (int index = 0; index < this.nonStretchableColumns.Count; ++index) { int columnWidth = this.Layout.GetColumnWidth(this.nonStretchableColumns[index].Column); if (index < this.nonStretchableColumns.Count - 1) { columnWidth += cellSpacing; } this.nonStretchableWidth += columnWidth; this.availableWidth -= columnWidth; } this.availableWidth -= this.stretchableColumns.Count * cellSpacing; int num1 = 0; for (int index = 0; index < this.stretchableColumns.Count; ++index) { GridViewColumn column = this.stretchableColumns[index].Column; num1 += this.Layout.GetColumnWidth(column); } int num2 = 0; for (int index = 0; index < this.stretchableColumns.Count; ++index) { TableViewCellArrangeInfo stretchableColumn = this.stretchableColumns[index]; double columnWidth = (double)this.Layout.GetColumnWidth(stretchableColumn.Column); if (stretchableColumn.ScaleFactor == 0.0 || stretchableColumn.CachedWidth != columnWidth) { stretchableColumn.ScaleFactor = columnWidth / (double)num1; } stretchableColumn.SetWidth((int)Math.Round(stretchableColumn.ScaleFactor * (double)this.availableWidth), true, this.Layout.Context == GridLayoutContext.Printer); num2 += this.Layout.GetColumnWidth(stretchableColumn.Column) + cellSpacing; } int num3 = num2 + this.nonStretchableWidth; for (int index = this.stretchableColumns.Count - 1; num3 != this.availableWidth && index >= 0; --index) { TableViewCellArrangeInfo stretchableColumn = this.stretchableColumns[index]; int columnWidth = this.Layout.GetColumnWidth(stretchableColumn.Column); if (columnWidth < stretchableColumn.Column.MaxWidth || stretchableColumn.Column.MaxWidth == 0) { int width = columnWidth - (num3 - (int)availableSize.Width); if (width >= stretchableColumn.Column.MinWidth) { int num4 = num3 + (width - columnWidth); stretchableColumn.SetWidth(width, true, this.Layout.Context == GridLayoutContext.Printer); break; } } } base.CalculateColumnsWidth(availableSize); return((int)availableSize.Width); }
public virtual void ResizeColumn(int delta) { if (this.resizedColumn == null) { return; } TableViewCellArrangeInfo arrangeInfo = this.GetArrangeInfo(this.resizedColumn); arrangeInfo?.SetWidth(arrangeInfo.ResizeStartWidth + delta, false, this.Layout.Context == GridLayoutContext.Printer); }
public override void ResizeColumn(int delta) { if (this.stretchableColumns.Count == 0) { return; } TableViewCellArrangeInfo stretchableColumn1 = this.stretchableColumns[this.stretchableColumnResizeIndex]; stretchableColumn1.ScaleFactor = 0.0; int width1 = stretchableColumn1.ClampWidth(stretchableColumn1.ResizeStartWidth + delta); if (width1 == stretchableColumn1.ResizeStartWidth) { return; } int num1; if (this.Layout.Owner.RightToLeft) { num1 = this.startOffset - delta; } else { int num2 = stretchableColumn1.OffsetX - this.nonStretchableWidth; foreach (TableViewCellArrangeInfo stretchableColumn2 in this.nonStretchableColumns) { if (stretchableColumn2.Column.IsPinned) { num2 += stretchableColumn2.Column.Width + this.Layout.Owner.CellSpacing; } } num1 = this.availableWidth - num2 - width1; } List <StretchColumnLayoutHelper.ResizeInfo> resizeInfoList = new List <StretchColumnLayoutHelper.ResizeInfo>(); int num3 = num1; int num4 = 0; for (int index = this.stretchableColumnResizeIndex + 1; index < this.stretchableColumns.Count; ++index) { TableViewCellArrangeInfo stretchableColumn2 = this.stretchableColumns[index]; int width2 = stretchableColumn2.Column.Width; int width3 = (int)Math.Round(stretchableColumn2.ResizeStartScaleFactor * (double)num1); if (width3 != width2) { if (width3 > 0 && width3 >= stretchableColumn2.Column.MinWidth) { resizeInfoList.Add(new StretchColumnLayoutHelper.ResizeInfo(stretchableColumn2, width3)); num4 += width2; } else { num3 -= width2 + this.Layout.Owner.CellSpacing; } } } if (resizeInfoList.Count > 0) { foreach (StretchColumnLayoutHelper.ResizeInfo resizeInfo in resizeInfoList) { resizeInfo.Info.ScaleFactor = 0.0; if (num3 != num1) { this.saveScaleFactors = true; if (resizeInfo.Info.TempScaleFactor == 0.0) { resizeInfo.Info.TempScaleFactor = (double)resizeInfo.Info.Column.Width / (double)num4; } resizeInfo.Width = (int)Math.Floor(resizeInfo.Info.TempScaleFactor * (double)num3); } resizeInfo.Info.SetWidth(resizeInfo.Width, true, this.Layout.Context == GridLayoutContext.Printer); } stretchableColumn1.SetWidth(width1, false, this.Layout.Context == GridLayoutContext.Printer); } if (num3 != num1) { return; } if (this.saveScaleFactors) { foreach (TableViewCellArrangeInfo viewCellArrangeInfo in this.ArrangeInfos.Values) { viewCellArrangeInfo.TempScaleFactor = 0.0; } } this.saveScaleFactors = false; }