Добавление пользовательского Usercontrol

отредактировано 13:34 Раздел: FastReport .NET
Доброе время суток!
На данный момент нашей компанией рассматривается возможность использования FastReport .NET.
В связи с этим возник следующий вопрос:
На диалоговой форме нужно использовать собственые контролы, если возможность в FastReport .NET регистрации и добавления в ToolBox собственных UserControl?

Комментарии

  • отредактировано 13:34
    Здравствуйте,

    Такая возможность есть, хотя в документации и не описана (редко кто интересуется).
  • отредактировано 13:34
    А можно получить хоть какую-нибудь информацию по этой возможности?
  • отредактировано 13:34
    Контролы FR - это классы-наследники FastReport.Dialog.DialogControl. Контрол FR содержит внутри контрол WinForms, т.е. фактически является оберткой. Ваша задача в самом простом случае - "вытащить" свойства контрола WinForms, а также написать код для их сериализации. Вот пример - реализация PictureBox:
      public class PictureBoxControl : DialogControl
      {
        private PictureBox FPictureBox;
    
        /// <summary>
        /// Gets an internal [b]PictureBox[/b].
        /// </summary>
        [Browsable(false)]
        public PictureBox PictureBox
        {
          get { return FPictureBox; }
        }
    
        /// <summary>
        /// Indicates the border style for the control.
        /// Wraps the <see cref="System.Windows.Forms.PictureBox.BorderStyle"/> property.
        /// </summary>
        [DefaultValue(BorderStyle.None)]
        [Category("Appearance")]
        public BorderStyle BorderStyle
        {
          get { return PictureBox.BorderStyle; }
          set { PictureBox.BorderStyle = value; }
        }
    
        /// <summary>
        /// Gets or sets the image that the PictureBox displays.
        /// Wraps the <see cref="System.Windows.Forms.PictureBox.Image"/> property.
        /// </summary>
        [Category("Appearance")]
        public Image Image
        {
          get { return PictureBox.Image; }
          set { PictureBox.Image = value; }
        }
    
        /// <summary>
        /// Indicates how the image is displayed. 
        /// Wraps the <see cref="System.Windows.Forms.PictureBox.SizeMode"/> property.
        /// </summary>
        [DefaultValue(PictureBoxSizeMode.Normal)]
        [Category("Behavior")]
        public PictureBoxSizeMode SizeMode
        {
          get { return PictureBox.SizeMode; }
          set { PictureBox.SizeMode = value; }
        }
    
        public override void Serialize(FRWriter writer)
        {
          PictureBoxControl c = writer.DiffObject as PictureBoxControl;
          base.Serialize(writer);
    
          if (BorderStyle != c.BorderStyle)
            writer.WriteValue("BorderStyle", BorderStyle);
          if (!writer.AreEqual(Image, c.Image))
            writer.WriteValue("Image", Image);
          if (SizeMode != c.SizeMode)
            writer.WriteValue("SizeMode", SizeMode);
        }
    
        public PictureBoxControl()
        {
          FPictureBox = new PictureBox();
          Control = FPictureBox;
        }
      }
    
  • отредактировано 13:34
    Спасибо. Буду пробовать. Но попутно еще вопрос, а каким образом FastReport - у сказать, чтоб он использовал именно мой UserControl? Как зарегистрить мой контрол? Он же должен как-то попасть в коллекцию контролов toolbox.
    Возможно у Вас загрузка FastReport производится из FastReport.xml и именно в этом файле мне надо прописывать свой контрол?
  • отредактировано 13:34
    Регистрация выполняется так:

    RegisteredObjects.Add(typeof(MyDialogControl), "DialogPage", myDialogControlBmp, "My Dialog Control");

    Этот код надо выполнить 1 раз при старте приложения.
  • отредактировано 13:34
    спасибо

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.