Dimitar Karamfilov
Team Member

FIX. RichTextEditorRibbonBar - the InsertMergeFiled is not populated if it is alredy clicked before setting the mail merge data source.

To reproduce:
- Click the InsertMergeFiled button before setting the data source.
- Set the data source.
- Click the button again.
- There are no items in it.


Workaround:
Friend Class MyRichTextEditorRibbonBar
Inherits RichTextEditorRibbonBar



Protected Overrides Sub dropDownButtonInsertMergeField_DropDownOpening(sender As Object, e As CancelEventArgs)
MyBase.dropDownButtonInsertMergeField_DropDownOpening(sender, e)
If Me.dropDownButtonInsertMergeField.Items.Count = 0 Then
Me.dropDownButtonInsertMergeField.Items.Add(New RadItem)
End If
End Sub

End Class

Bug Report by Dimitar Karamfilov Status: In Development Comments: 0 Category: RadRichTextEditor Scheduled for: Not Scheduled Last update: 2017-01-19T14:12:09 by Dimitar Karamfilov
0
Desislava Yordanova
Team Member

FIX. RichTextEditorRibbonBar - incorrect SelectedValue/SelectedIndex in RadDropDownListElement on a custom tab after a table is inserted

To reproduce: please refer to the attached gif file

Add a custom tab in the ribbon UI and a RadDropDownListElement bound to a list of strings. The first item is selected by default. Insert a table by using the ribbon UI and try to get programmatically the RadDropDownListElement.SelectedValue/Index. It is null/-1 although the text is correct.

Workaround:

public class CustomRichTextEditorRibbonBar : RichTextEditorRibbonBar
{
protected override void CreateChildItems(RadElement parent)
{
base.CreateChildItems(parent);
FieldInfo fi = typeof(RadRibbonBar).GetField("ribbonBarElement", BindingFlags.Instance | BindingFlags.NonPublic);
RadRibbonBarElement ribbonBarElement = fi.GetValue(this) as RadRibbonBarElement;

ribbonBarElement = new CustomRadRibbonBarElement();
fi.SetValue(this, ribbonBarElement);
this.RootElement.Children.Add(ribbonBarElement);

ribbonBarElement.CommandTabSelecting +=
delegate (object sender, CommandTabSelectingEventArgs args) { OnCommandTabSelecting(args); };
ribbonBarElement.CommandTabSelected +=
delegate (object sender, CommandTabEventArgs args) { OnCommandTabSelected(args); };

ribbonBarElement.ExpandedStateChanged += delegate (object sender, EventArgs args)
{
this.OnRibbonBarExpandedStateChanged(args);
};


}
}

public class CustomRadRibbonBarElement : RadRibbonBarElement
{

protected override float GetMaximumTabContentHeight()
{
return 104;
}
}
Bug Report by Desislava Yordanova Status: Approved Comments: 0 Attachments: 1 Category: RadRichTextEditor Scheduled for: Not Scheduled Last update: 2017-01-19T14:09:36 by Peter Petrov
0
Dimitar Karamfilov
Team Member

FIX. RadGridView - the current row cannot be changed in the UserAddedRow event handler when the grid is not bound.

To reproduce use the attached project.

Workaround:
Private Sub gvData_UserAddedRow(sender As Object, e As Telerik.WinControls.UI.GridViewRowEventArgs) Handles gvData.UserAddedRow
Dim pi = GetType(GridViewNewRowInfo).GetProperty("MoveToLastRow", Reflection.BindingFlags.Instance Or Reflection.BindingFlags.NonPublic)
pi.SetValue(Me.gvData.MasterView.TableAddNewRow, True, Nothing)
End Sub
Bug Report by Dimitar Karamfilov Status: New Comments: 0 Attachments: 1 Category: RadGridView Scheduled for: Not Scheduled Last update: 2017-01-19T13:54:53 by Dimitar Karamfilov
0
Desislava Yordanova
Team Member

FIX. RadGridView - SpreadExport does not respect the AM/PM time part with custom date format

To reproduce:

public class Item
{
public int Id { get; set; }

public string Name { get; set; }

public DateTime Date { get; set; }

public Item(int id, string name, DateTime date)
{
this.Id = id;
this.Name = name;
this.Date = date;
}
}
public Form1()
{
InitializeComponent();
List<Item> items = new List<Item>();
for (int i = 0; i < 10; i++)
{
items.Add(new Item(i,"Item" + i,DateTime.Now.AddHours(i)));
}
this.radGridView1.DataSource = items;
this.radGridView1.AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill;
}

private void Form1_Load(object sender, EventArgs e)
{
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-GB");
this.radGridView1.Columns["Date"].ExcelExportFormatString = "M/d/yyyy h:mm tt";
this.radGridView1.Columns["Date"].ExcelExportType = DisplayFormatType.Custom;

GridViewSpreadExport spreadExporter = new GridViewSpreadExport(this.radGridView1);
spreadExporter.ExportVisualSettings = true;
SpreadExportRenderer exportRenderer = new SpreadExportRenderer();
string fileName = @"..\..\exportedFile" + DateTime.Now.ToLongTimeString().Replace(":", "_") + ".xlsx";
spreadExporter.RunExport(fileName, exportRenderer);
Process.Start(fileName);
}

Bug Report by Desislava Yordanova Status: Declined Comments: 1 Category: RadGridView Scheduled for: Not Scheduled Last update: 2017-01-19T13:09:16 by Ivan Petrov
0
Desislava Yordanova
Team Member

FIX. RadScheduler - when only one resource is displayed in Timeline view there is incorrect gap below the horizontal scrollbar

Please refer to the attached sample project and gif file.

Workaround: this.radScheduler1.ElementProvider = new CustomSchedulerElementProvider(this.radScheduler1);

public class CustomSchedulerElementProvider : SchedulerElementProvider
{
public CustomSchedulerElementProvider(RadScheduler scheduler) : base(scheduler)
{
}

protected override T CreateElement<T>(SchedulerView view, object context)
{
if (typeof(T) == typeof(TimelineGroupingByResourcesElement))
{
return new CustomTimelineGroupingByResourcesElement(this.Scheduler,view)as T;
}

return base.CreateElement<T>(view, context);
}
}

public class CustomTimelineGroupingByResourcesElement : TimelineGroupingByResourcesElement
{
public CustomTimelineGroupingByResourcesElement(RadScheduler scheduler, SchedulerView view) : base(scheduler, view)
{
}

protected override SizeF ArrangeOverride(SizeF finalSize)
{
RectangleF contentRect = new RectangleF(PointF.Empty, finalSize);
int vScrollOffset = this.View.AllowResourcesScrolling ? this.ResourceScrollBarThickness : 0;

if (this.VScrollBar != null && this.VScrollBar.Maximum < this.VScrollBar.LargeChange)
{
vScrollOffset = 0;
}

IList<SchedulerTimelineViewElement> timelineElements = this.GetChildViewElements();
IList<LightVisualElement> viewSeparators = this.GetViewSeparators();

List<RectangleF> resourcesBounds = new List<RectangleF>();
List<RectangleF> separatorsBounds = new List<RectangleF>();

int scrollBarOffset = 0;

if (timelineElements.Count > 0)
{
if (timelineElements[timelineElements.Count - 1].NavigationElement.Visibility == ElementVisibility.Visible)
{
scrollBarOffset = 17;
}
}

int headerHeight = 0;
if (timelineElements.Count > 0 && timelineElements[0].Header.Visibility != ElementVisibility.Collapsed)
{
headerHeight = timelineElements[0].ViewHeaderHeight + timelineElements[0].ColumnHeaderHeight;
}
FieldInfo fi = typeof(TimelineGroupingByResourcesElement).GetField("leftCell", BindingFlags.Instance | BindingFlags.NonPublic);
SchedulerCellElement leftCell = fi.GetValue(this) as SchedulerCellElement;
FieldInfo fi2 = typeof(TimelineGroupingByResourcesElement).GetField("bottomCell", BindingFlags.Instance | BindingFlags.NonPublic);
SchedulerCellElement bottomCell = fi2.GetValue(this) as SchedulerCellElement;
if (leftCell != null)
{
RectangleF arrangeRectangle = new RectangleF(0, 0, ResourceHeaderWidth, headerHeight);
if (this.RightToLeft)
{
arrangeRectangle = LayoutUtils.RTLTranslateNonRelative(arrangeRectangle, contentRect);
}

leftCell.Arrange(arrangeRectangle);
}

if (bottomCell != null)
{
RectangleF arrangeRectangle = new RectangleF(0, finalSize.Height - scrollBarOffset, ResourceHeaderWidth, scrollBarOffset);
if (this.RightToLeft)
{
arrangeRectangle = LayoutUtils.RTLTranslateNonRelative(arrangeRectangle, contentRect);
}

bottomCell.Arrange(arrangeRectangle);
}

float separatorsWidth = this.View.GroupSeparatorWidth * (this.View.ResourcesPerView - 1);
float resourcesHeight = finalSize.Height - separatorsWidth - headerHeight ;
float y = 0;

for (int i = 0; i < timelineElements.Count; i++)
{
SchedulerTimelineViewElement timelineElement = timelineElements[i];
LightVisualElement separator = i < viewSeparators.Count ? viewSeparators[i] : null;

if (timelineElement != null)
{
float calculatedHeight = this.GetResourceSize(i, resourcesHeight);
RectangleF arrangeRect = new RectangleF(this.ResourceHeaderWidth, y,
finalSize.Width - this.ResourceHeaderWidth - vScrollOffset, calculatedHeight);

if (i == 0)
{
arrangeRect.Height += headerHeight;
}
else if (i == timelineElements.Count - 1)
{
arrangeRect.Height = finalSize.Height - arrangeRect.Top - 1;
}

if (this.RightToLeft)
{
arrangeRect = LayoutUtils.RTLTranslateNonRelative(arrangeRect, contentRect);
}

timelineElement.Arrange(arrangeRect);

y += arrangeRect.Height;

if (i == 0)
{
arrangeRect.Height -= headerHeight;
}
else
{
arrangeRect.Y -= headerHeight;
}

resourcesBounds.Add(arrangeRect);
}

if (separator != null)
{
float calculatedHeight = this.View.GroupSeparatorWidth;
RectangleF arrangeRect = new RectangleF(this.ResourceHeaderWidth, y,
finalSize.Width - this.ResourceHeaderWidth - vScrollOffset, calculatedHeight);
if (this.RightToLeft)
{
arrangeRect = LayoutUtils.RTLTranslateNonRelative(arrangeRect, contentRect);
}

separator.Arrange(arrangeRect);
arrangeRect.Y -= headerHeight;
separatorsBounds.Add(arrangeRect);
y += calculatedHeight;
}
}

if (this.ResourcesHeader != null)
{
RectangleF arrangeRectangle = new RectangleF(0, headerHeight,
this.ResourceHeaderWidth, finalSize.Height - scrollBarOffset - headerHeight);
if (this.RightToLeft)
{
arrangeRectangle = LayoutUtils.RTLTranslateNonRelative(arrangeRectangle, contentRect);
}
this.ResourcesHeader.SetResourcesLayoutInfo(resourcesBounds, separatorsBounds);
this.ResourcesHeader.Arrange(arrangeRectangle);
}

if (this.View.AllowResourcesScrolling)
{
RectangleF scrollbarRect = new RectangleF(finalSize.Width - vScrollOffset,
0, vScrollOffset, finalSize.Height - scrollBarOffset);
if (this.RightToLeft)
{
scrollbarRect = LayoutUtils.RTLTranslateNonRelative(scrollbarRect, contentRect);
}

this.VScrollBar.Arrange(scrollbarRect);
}
else
{
this.VScrollBar.Arrange(RectangleF.Empty);
}

return finalSize;
}
}
Bug Report by Desislava Yordanova Status: In Development Comments: 0 Attachments: 2 Category: RadScheduler Scheduled for: R1 2017 SP1 Last update: 2017-01-19T12:31:06 by Desislava Yordanova
0
Hristo Merdjanov
Team Member

FIX. RadPopupContainer - remove the Undock option of the RadPopupContainer.PanelContainer from the smart tag

How to reproduce:
1. Install Telerik Controls (version: 2016.3.1024)
2. Launch Visual studio. Create Windows application project.
3. Drop RadPopupContainer from the toolbox on to the windows form. Save the form.
4. Mouse click on the control on design canvas to select RadScrollablePanelContainer panel.
5. Now click on smart tag of RadScrollablePanelContainer panel and select "Undock in parent container" option.
6. Now separate RadScrollablePanelContainer panel by moving it to some location on the form. Save the form.
7. Try to move RadPopupContainer. Observe that it does not allow to move.
8. Click on the smart tag of RadScrollablePanelContainer panel and select "Dock in parent" option. Observe that the RadScrollablePanelContainer panel is not docked into the RadPopupContainer control.

Bug Report by Hristo Merdjanov Status: In Development Comments: 0 Attachments: 1 Category: RadPopupContainer Scheduled for: R1 2017 SP1 Last update: 2017-01-19T11:12:13 by Todor Vyagov
0
Hristo Merdjanov
Team Member

ADD. RadRichTextEditor - improve the spellchecking dialog so that one can type a custom entry to correct a misspelled word

Feature Request by Hristo Merdjanov Status: New Comments: 0 Category: RadRichTextEditor Scheduled for: Not Scheduled Last update: 2017-01-19T11:06:32 by Hristo Merdjanov
0
Hristo Merdjanov
Team Member

IMPROVE.RadPageView - setting determining the wrap mode when navigating the pages using the arrow keys

Workaround:
Public Class MyRadPageView
Inherits RadPageView

Public Overrides Property ThemeClassName As String
Get
Return GetType(RadPageView).FullName
End Get
Set(value As String)
MyBase.ThemeClassName = value
End Set
End Property

Protected Overrides Function CreateUI() As RadPageViewElement
Select Case Me.ViewMode
Case PageViewMode.Stack
Return New RadPageViewStackElement()
Case PageViewMode.Outlook
Return New RadPageViewOutlookElement()
Case PageViewMode.ExplorerBar
Return New RadPageViewExplorerBarElement()
Case PageViewMode.Backstage
Return New MyRadPageViewBackstageElement()
Case Else
Return New RadPageViewStripElement()
End Select
End Function

End Class

Public Class MyRadPageViewBackstageElement
Inherits RadPageViewBackstageElement

Protected Overrides ReadOnly Property ThemeEffectiveType() As Type
Get
Return GetType(RadPageViewBackstageElement)
End Get
End Property

Protected Overrides Function SelectNextItemCore(current As RadPageViewItem, forward As Boolean, wrap As Boolean) As Boolean
Return MyBase.SelectNextItemCore(current, forward, False)
End Function

Protected Overrides Sub ProcessKeyDown(e As KeyEventArgs)
If Me.IsNextKey(e.KeyCode) AndAlso Not Me.IsEditing Then
Me.SelectNextItem()
ElseIf Me.IsPreviousKey(e.KeyCode) AndAlso Not Me.IsEditing Then
Me.SelectPreviousItem()
ElseIf e.KeyCode = Keys.Home AndAlso Not Me.IsEditing Then
Me.Owner.SelectedPage = Nothing
Me.SetSelectedItem(Me.Items.First())
ElseIf e.KeyCode = Keys.End AndAlso Not Me.IsEditing Then
Me.Owner.SelectedPage = Nothing
Me.SetSelectedItem(Me.Items.Last())
ElseIf e.KeyCode = Keys.F2 Then
BeginEdit()
ElseIf e.KeyCode = Keys.Escape Then
CancelEdit()
ElseIf e.KeyCode = Keys.Enter AndAlso Me.IsEditing AndAlso Me.ActiveEditor.Validate() Then
EndEdit()
End If
End Sub

End Class
Feature Request by Hristo Merdjanov Status: New Comments: 0 Attachments: 2 Category: None Scheduled for: Not Scheduled Last update: 2017-01-19T10:53:23 by Hristo Merdjanov
0
Dimitar Karamfilov
Team Member

FIX. RadGridView - the GridCheckBoxHeaderCellElement is not updated when a cell value is changed programmatically.

To reproduce:
private void radButton1_Click(object sender, EventArgs e)
{
radGridView1.Rows[0].Cells[0].Value = false;
}

private void Form1_Load(object sender, EventArgs e)
{
radGridView1.AllowSearchRow = true;
radGridView1.TableElement.SearchHighlightColor = Color.Orange;
radGridView1.AutoExpandGroups = true;

DataTable dt = new DataTable();

dt.Columns.Add("test", typeof(bool));

dt.Rows.Add(true);
dt.Rows.Add(true);
dt.Rows.Add(true);
dt.Rows.Add(true);
dt.Rows.Add(true);
dt.Rows.Add(true);
dt.Rows.Add(true);
dt.Rows.Add(true);
dt.Rows.Add(true);
dt.Rows.Add(true);
dt.Rows.Add(true);
dt.Rows.Add(true);
dt.Rows.Add(true);
dt.Rows.Add(true);
dt.Rows.Add(true);
dt.Rows.Add(true);
dt.Rows.Add(true);
dt.Rows.Add(true);
dt.Rows.Add(true);
dt.Rows.Add(true);
dt.Rows.Add(true);
dt.Rows.Add(true);
dt.Rows.Add(true);
dt.Rows.Add(true);
dt.Rows.Add(true);

radGridView1.DataSource = dt;

((Telerik.WinControls.UI.GridViewCheckBoxColumn) radGridView1.Columns[0]).EnableHeaderCheckBox = true;
((Telerik.WinControls.UI.GridViewCheckBoxColumn) radGridView1.Columns[0]).Width = radGridView1.Width - 50;

radGridView1.TableElement.Update(Telerik.WinControls.UI.GridUINotifyAction.Reset); //force header checkbox to check

radGridView1.TableElement.ScrollTo(15, 0);
}

Workaround:
private void radButton1_Click(object sender, EventArgs e)
{
radGridView1.Rows[0].Cells[0].Value = false;
radGridView1.TableElement.Update(Telerik.WinControls.UI.GridUINotifyAction.Reset); //force header checkbox to check
}
Bug Report by Dimitar Karamfilov Status: Completed Comments: 0 Category: RadGridView Scheduled for: Q2 2016 Last update: 2017-01-19T07:00:05 by Ralitsa Kumanova
0
Desislava Yordanova
Team Member

FIX. RadSplitButton - Pressed state for the SplitActionPartFill element is never respected

When you customize a theme for RadSplitButton, you are not able to change the color of the action button element when it is pressed and the drop down is not opened.

Workaround:
this.radSplitButtonElement2.ActionButton.MouseDown+=ActionButton_MouseDown;
this.radSplitButtonElement2.ActionButton.MouseUp+=ActionButton_MouseUp;

private void ActionButton_MouseUp(object sender, MouseEventArgs e)
{
this.radSplitButtonElement2.ActionButton.ButtonFillElement.ResetValue(LightVisualElement.BackColorProperty, ValueResetFlags.Local);
this.radSplitButtonElement2.ActionButton.ButtonFillElement.ResetValue(LightVisualElement.GradientStyleProperty, ValueResetFlags.Local);
}

private void ActionButton_MouseDown(object sender, MouseEventArgs e)
{
this.radSplitButtonElement2.ActionButton.ButtonFillElement.BackColor = Color.Red;
this.radSplitButtonElement2.ActionButton.ButtonFillElement.GradientStyle = GradientStyles.Solid;
}
Bug Report by Desislava Yordanova Status: New Comments: 0 Category: Drop-down and split buttons Scheduled for: Not Scheduled Last update: 2017-01-18T13:14:45 by Desislava Yordanova
0
Displaying items 1 - 10 of 5340