GridTimePickerEditor popup clock size

2 posts, 0 answers
  1. Szymon
    Szymon avatar
    6 posts
    Member since:
    Sep 2013

    Posted 17 Oct 2013 Link to this post

    Hi!

    I would like to resize my gridtimepicker clock. Main issue is that by default its size hides minutes to choose. I have to resize the clock manually every time to show these options which is irritating. Default view in attachment. How can I solve this problem?

    And in addition. How to change color of the hand of the clock? Eg. in Style Builder?

    Thanks in advance,
    Szymon.
  2. Dess | Tech Support Engineer, Sr.
    Admin
    Dess | Tech Support Engineer, Sr.  avatar
    3945 posts

    Posted 22 Oct 2013 Link to this post

    Hello Szymon,

    Thank you for contacting Telerik Support.

    Time picker popup default size is a known issue, which is already logged in our Public Issue Tracking System - PITS. You can track its progress, subscribe for status changes and add your vote/comment to it on the following link - PITS issue.

    Currently, the possible workaround I can propose is to adjust manually PopupForm.Height of the RadTimePickerElement:
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
     
            List<MyObject> list = new List<MyObject>()
            {
                new MyObject(1,"sample name 1", DateTime.Now.AddHours(2).TimeOfDay),
                new MyObject(2,"sample name 2", DateTime.Now.AddHours(4).TimeOfDay),
                new MyObject(3,"sample name 3", DateTime.Now.TimeOfDay)
            };
            this.radGridView1.DataSource = list;
            this.radGridView1.EditorRequired += radGridView1_EditorRequired;
            this.radGridView1.CellEditorInitialized += radGridView1_CellEditorInitialized;
        }
     
        private void radGridView1_CellEditorInitialized(object sender, GridViewCellEventArgs e)
        {
            TimeEditor timeEditor = e.ActiveEditor as TimeEditor;
            if (timeEditor != null)
            {
                RadTimePickerElement editor = (RadTimePickerElement)timeEditor.EditorElement;
                editor.PopupForm.Height = 350;           
            }
        }
     
        private void radGridView1_EditorRequired(object sender, Telerik.WinControls.UI.EditorRequiredEventArgs e)
        {
            GridViewEditManager manager = sender as GridViewEditManager;
            if (manager != null && manager.GridViewElement.CurrentColumn.Name == "Time")
            {
                e.EditorType = typeof(TimeEditor);
            }
        }
    }
     
    public class MyObject
    {
        public int ID { get; set; }
     
        public string Name { get; set; }
     
        public TimeSpan Time { get; set; }
     
        public MyObject(int iD, string name, TimeSpan time)
        {
            this.ID = iD;
            this.Name = name;
            this.Time = time;
        }
    }
     
    public class TimeEditor : BaseGridEditor
    {
        public override object Value
        {
            get
            {
                RadTimePickerElement editor = (RadTimePickerElement)this.EditorElement;
                var dateValue = editor.Value as DateTime?;
                if (dateValue.HasValue)
                {
                    return new TimeSpan(dateValue.Value.Hour, dateValue.Value.Minute, dateValue.Value.Second);
                }
     
                return TimeSpan.MinValue;
            }
            set
            {
                RadTimePickerElement editor = (RadTimePickerElement)this.EditorElement;
                if (value != null && value != DBNull.Value && value is TimeSpan)
                {
                    var timeSpan = (TimeSpan)value;
                    editor.Value = new DateTime(DateTime.Now.Year, DateTime.Now.Month,
                        DateTime.Now.Day, timeSpan.Hours, timeSpan.Minutes, timeSpan.Seconds);
                }
            }
        }
     
        public override void BeginEdit()
        {
            ((RadTimePickerElement)this.EditorElement).Culture = new System.Globalization.CultureInfo("en-GB");
            base.BeginEdit();
            ((RadTimePickerElement)this.EditorElement).ValueChanged += TimeEditor_ValueChanged;
            this.EditorElement.Focus();
        }
     
        private void TimeEditor_ValueChanged(object sender, EventArgs e)
        {
            OnValueChanged();
        }
     
        public override bool EndEdit()
        {
            ((RadTimePickerElement)this.EditorElement).ValueChanged -= TimeEditor_ValueChanged;
            return base.EndEdit();
        }
     
        protected override RadElement CreateEditorElement()
        {
            return new RadTimePickerElement();
        }
    }

    As to the question about the hands of clock, you can change the default image with an appropriate one using VisualStyleBuilder (please have a look at the attached picture "Arrows.png").

    I hope this information helps. Should you have further questions, I would be glad to help.

    Regards,
    Desislava
    Telerik
    TRY TELERIK'S NEWEST PRODUCT - EQATEC APPLICATION ANALYTICS for WINFORMS.
    Learn what features your users use (or don't use) in your application. Know your audience. Target it better. Develop wisely.
    Sign up for Free application insights >>
Back to Top