using System.ComponentModel; namespace FastReport.Dialog { /// /// Base class for controls that may contain child controls. /// public partial class ParentControl : DialogControl, IParent { #region Fields private DialogComponentCollection controls; #endregion #region Properties /// /// Gets the collection of child controls. /// [Browsable(false)] public DialogComponentCollection Controls { get { return controls; } } #endregion #region IParent /// public virtual void GetChildObjects(ObjectCollection list) { foreach (DialogComponentBase c in controls) { list.Add(c); } } /// public virtual bool CanContain(Base child) { return (child is DialogComponentBase); } /// public virtual void AddChild(Base child) { if (child is DialogComponentBase) controls.Add(child as DialogComponentBase); } /// public virtual void RemoveChild(Base child) { if (child is DialogComponentBase) controls.Remove(child as DialogComponentBase); } /// public virtual int GetChildOrder(Base child) { return controls.IndexOf(child as DialogComponentBase); } /// public virtual void SetChildOrder(Base child, int order) { int oldOrder = child.ZOrder; if (oldOrder != -1 && order != -1 && oldOrder != order) { if (order > controls.Count) order = controls.Count; if (oldOrder <= order) order--; controls.Remove(child as DialogComponentBase); controls.Insert(order, child as DialogComponentBase); } } /// public virtual void UpdateLayout(float dx, float dy) { // do nothing } #endregion /// /// Initializes a new instance of the ParentControl class with default settings. /// public ParentControl() { controls = new DialogComponentCollection(this); } } }