Example #1
0
        public ExcelCheckBox(ExcelInterop.Range range, ExcelCheckBoxDefinition definition)
        {
            OwnerRange        = range;
            OwnerRange.Value2 = null;
            ExcelInterop.Worksheet  worksheet  = null;
            ExcelInterop.OLEObjects oleObjects = null;
            ExcelInterop.OLEObject  oleObject  = null;
            try
            {
                worksheet = OwnerRange.Worksheet;
                Name      = $"ExcelCB{Interlocked.Increment(ref cpt)}";

                oleObjects = worksheet.OLEObjects();
                oleObject  = oleObjects.Add("Forms.CheckBox.1",
                                            Type.Missing,
                                            true,
                                            false,
                                            Type.Missing,
                                            Type.Missing,
                                            Type.Missing,
                                            OwnerRange.Left + 3,
                                            OwnerRange.Top + 1,
                                            12,
                                            12);
                oleObject.Name      = Name;
                oleObject.Placement = ExcelInterop.XlPlacement.xlMove;
                CheckBox            = worksheet.GetType().InvokeMember(Name, BindingFlags.Default | BindingFlags.GetProperty, null, worksheet, null) as ExcelForms.CheckBox;

                CheckBox.SpecialEffect = ExcelForms.fmButtonEffect.fmButtonEffectSunken;
                CheckBox.TripleState   = false;

                CheckBox.Caption              = string.Empty;
                CheckBox.BackColor            = (int)OwnerRange.Interior.Color;
                CheckBox.BackStyle            = ExcelForms.fmBackStyle.fmBackStyleTransparent;
                oleObject.Interior.ColorIndex = -4142;
                CheckBox.AutoSize             = false;

                oleObject = null;
            }
            finally
            {
                if (oleObject != null)
                {
                    ExcelApplication.ReleaseComObject(oleObject);
                }
                if (oleObjects != null)
                {
                    ExcelApplication.ReleaseComObject(oleObjects);
                }
                if (worksheet != null)
                {
                    ExcelApplication.ReleaseComObject(worksheet);
                }

                oleObject  = null;
                oleObjects = null;
                worksheet  = null;
            }
        }
        private ExcelBindingDefinitionCheckBox(BindingDefinitionDescription definitionDescription, ExcelTemplateDefinition templateDefinition, ExcelCheckBoxDefinition definition)
            : base(definitionDescription)
        {
            TemplateDefinition = templateDefinition;
            Definition         = definition;
            if (!string.IsNullOrEmpty(definition.Value))
            {
                ValueBindingDefinition = BindingDefinitionFactory.CreateInstances(templateDefinition, DefinitionDescription);
                if (!ValueBindingDefinition.BindingType.Equals(typeof(bool)))
                {
                    throw new EtkException("A 'CheckBox' must be bound with RetrieveContextualMethodInfo boolean value");
                }

                CanNotify = ValueBindingDefinition.CanNotify;
            }
        }
        public static ExcelBindingDefinitionCheckBox CreateInstance(ExcelTemplateDefinition templateDefinition, string definition)
        {
            ExcelBindingDefinitionCheckBox ret = null;

            if (!string.IsNullOrEmpty(definition))
            {
                try
                {
                    ExcelCheckBoxDefinition      excelButtonDefinition = definition.Deserialize <ExcelCheckBoxDefinition>();
                    BindingDefinitionDescription definitionDescription = BindingDefinitionDescription.CreateBindingDescription(templateDefinition, excelButtonDefinition.Value, excelButtonDefinition.Value);
                    ret = new ExcelBindingDefinitionCheckBox(definitionDescription, templateDefinition, excelButtonDefinition);
                }
                catch (Exception ex)
                {
                    string message = $"Cannot retrieve the checkbox dataAccessor '{definition.EmptyIfNull()}'. {ex.Message}";
                    throw new EtkException(message);
                }
            }
            return(ret);
        }