Ejemplo n.º 1
0
        private void createLayoutControl()
        {
            LayoutControl      lc = this.layoutControl1; // new LayoutControl( );
            LayoutControlGroup rg = Form1.configRootGroup(lc, "DataStore Connection");
            {
                lc.Dock = System.Windows.Forms.DockStyle.Fill;

                LayoutControlItem item1 = rg.AddItem( );
                {
                    item1.Name = "lciName";
                    item1.Text = "Name";
                    Control textBox1 = item1.Control = new TextEdit( );
                    {
                        textBox1.Name = "TextBox1";
                    }
                }
                TabbedControlGroup tg = rg.AddTabbedGroup( );
                {
                    tg.Name = "tgg";
                    LayoutControlGroup lg1 = tg.AddTabPage("Connection") as LayoutControlGroup;
                    {
                        createConnectionStringLayoutControlItem(lg1);
                        createLoginIDLayoutControlItem(lg1);
                        createPasswordLayoutControlItem(lg1);
                        createConnectionPropertiesLayoutControlItem(lg1, this.bindingSource1);
                    }
                    LayoutControlGroup lg2 = tg.AddTabPage("Provider") as LayoutControlGroup;
                    {
                        createSyntaxProviderLayoutControlItem(lg2);
                        createMetadataProviderLayoutControlItem(lg2);
                    }
                    LayoutControlGroup lg3 = tg.AddTabPage("Preview") as LayoutControlGroup;
                    {
                        createSuperToolTipHeaderLayoutControlItem(lg3);
                        createSuperToolTipContentLayoutControlItems(lg3);
                        createSuperToolTipFooterLayoutControlItem(lg3);
                    }
                    LayoutControlGroup lg4 = tg.AddTabPage("Description") as LayoutControlGroup;
                    {
                        createDescriptionLayoutControlItem(lg4);
                    }
                    tg.SelectedTabPage = lg1;
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 根据对象填充属性字段
        /// </summary>
        /// <param name="groupItem">组项目</param>
        /// <param name="objType">对象类型</param>
        private void RetrieveFields(LayoutControlGroup groupItem, Type objType)
        {
            UIPublic.ShowWaitingForm();
            this.DataLayoutControl.CloseControl();
            EditControls.Clear();
            this.DataLayoutControl.Clear(true, true);

            var controller = Controller as ObjectLayoutEditController;

            if (objType == null)
            {
                return;
            }

            this.DataLayoutControl.SuspendLayout();
            TabbedControlGroup tabbledGroup = null;

            foreach (PropertyDescriptor propDesc in TypeDescriptor.GetProperties(objType))
            {
                if (!propDesc.IsBrowsable)
                {
                    continue;
                }

                BaseEditController editController = null;
                Control            editControl    = null;

                if (controller != null)
                {
                    editController = controller.GetPredefinedEditController(propDesc.PropertyType, propDesc.Name);
                }

                if (editController == null)
                {
                    if (propDesc.PropertyType.IsAddon())
                    {
                        var commonEditController = new CommonObjectEditController();
                        commonEditController.StartEditProperty(EditValue, propDesc.Name);
                        editController = commonEditController;
                    }
                    else
                    {
                        editController = EditorPublic.GetEditController(propDesc);
                    }
                }

                editControl = editController.CreateEditControl(propDesc.PropertyType);

                if (editControl.GetType().GetProperty("EditValue") == null)
                {
                    throw new Exception("编辑控件必须实现EditValue属性");
                }

                LayoutControlItem layoutControlItem = null;
                if (editControl is BaseObjectEditControl)
                {
                    if (tabbledGroup == null)
                    {
                        tabbledGroup = groupItem.AddTabbedGroup();
                    }
                    var layoutGroupItem = tabbledGroup.AddTabPage();
                    layoutGroupItem.Name = "Group_" + propDesc.Name;
                    layoutGroupItem.Text = propDesc.DisplayName;
                    layoutGroupItem.CustomizationFormText = "组_" + propDesc.DisplayName;
                    layoutGroupItem.Padding = new DevExpress.XtraLayout.Utils.Padding(0);

                    layoutControlItem = layoutGroupItem.AddItem();
                    layoutControlItem.TextLocation = DevExpress.Utils.Locations.Top;
                }
                else
                {
                    layoutControlItem = groupItem.AddItem();
                    layoutControlItem.TextLocation = DevExpress.Utils.Locations.Left;
                }
                EditControls.Add(propDesc, editControl);
                editControl.Tag  = propDesc;
                editControl.Name = propDesc.Name;

                layoutControlItem.Control = editControl;
                layoutControlItem.Name    = propDesc.Name;
                layoutControlItem.Text    = propDesc.DisplayName;
                layoutControlItem.CustomizationFormText = propDesc.DisplayName;

                if (editControl is BaseObjectEditControl)
                {
                    layoutControlItem.TextVisible = false;
                }
                else
                {
                    layoutControlItem.TextVisible = true;
                }
            }
            this.DataLayoutControl.ResumeLayout();
            this.DataLayoutControl.SetDefaultLayout();

            // 读取布局数据
            if (controller != null && controller.LayoutData.IsNotNullOrEmpty())
            {
                this.DataLayoutControl.SetLayoutData(controller.LayoutData);
            }
            UIPublic.CloseWaitingForm();
        }