コード例 #1
0
        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
        {
            _editorService = provider.GetService(typeof(IWindowsFormsEditorService)) as IWindowsFormsEditorService;
            if (_editorService == null)
            {
                return(base.EditValue(context, provider, value));
            }

            var report = GetReport(context);

            if (report == null)
            {
                return(base.EditValue(context, provider, value));
            }

            var listBox = new ListBoxEx
            {
                BorderStyle             = BorderStyle.None,
                PaintIndicatorSupported = true,
                ItemHeight = 20
            };

            listBox.Click          += listBox_Click;
            listBox.PaintIndicator += listBox_PaintIndicator;
            listBox.Items.Add(EditorText);

            _dbFields = new List <FieldInfo>();
            _dbFields.AddRange(report.DataSource.DataSourceInfo.ImageFields);
            foreach (var dbField in report.DataSource.DataSourceInfo.TextFields)
            {
                if (dbField.DataType == typeof(string))
                {
                    _dbFields.Add(dbField);
                }
            }
            listBox.Items.AddRange(_dbFields.Select(f => (object)f.Name).ToArray());

            var itemsToDisplay = Math.Min(MaxDisplayListBoxItems, listBox.Items.Count);

            listBox.Height = itemsToDisplay * listBox.ItemHeight;
            if (value != null)
            {
                listBox.SelectedItem = value.ToString();
            }

            _editorService.DropDownControl(listBox);

            if (listBox.SelectedIndex == 0)
            {
                value = base.EditValue(context, provider, value);
            }
            else if (listBox.SelectedIndex > 0)
            {
                var fieldName = listBox.SelectedItem.ToString();
                value = PictureHolder.FromExpression(fieldName);
            }

            _dbFields = null;
            return(value);
        }
コード例 #2
0
        public void Init(FlexDesignerHostServices services, object propOwner, string propName, object value, bool supportExpression)
        {
            _propOwner     = propOwner;
            _propName      = propName;
            _pictureHolder = value as PictureHolder ?? PictureHolder.FromObject(null, null);
            _services      = services;
            if (_services != null)
            {
                var grs = _services.GetService(typeof(IGetReportsService)) as IGetReportsService;
                if (grs != null)
                {
                    _report = grs.Report;
                }
            }

            _canExpression = supportExpression && _report != null;
            if (_services != null)
            {
                var scriptService = _services.GetScriptEditorService();
                _canEditScript = _canExpression && scriptService != null;
            }
            else
            {
                _canEditScript = false;
            }
            UpdateUI();
        }
コード例 #3
0
 public void ApplyChanges()
 {
     if (radioNone.Checked)
     {
         _pictureHolder = PictureHolder.FromObject(null, null);
     }
     else if (radioFile.Checked)
     {
         _pictureHolder = PictureHolder.FromFile(txtFile.Text, C1FlexReport.GetActualBasePath(_report));
     }
     else if (radioURL.Checked)
     {
         _pictureHolder = PictureHolder.FromUrl(txtURL.Text, C1FlexReport.GetActualBasePath(_report));
     }
     else if (radioExpression.Checked)
     {
         _pictureHolder = PictureHolder.FromExpression(cmbExpression.Expression);
     }
 }
コード例 #4
0
        private string GetPictureSourceResourceName(PictureHolder picture)
        {
            if (picture == null)
            {
                return(null);
            }

            switch (picture.Type)
            {
            case PictureHolderType.File:
                return("PictureHolderSource_File.png");

            case PictureHolderType.Url:
                return("PictureHolderSource_URL.png");

            case PictureHolderType.Expression:
                return("PictureHolderSource_Expression.png");

            case PictureHolderType.Image:
                return("PictureHolderSource_Image.png");
            }
            return(null);
        }