void propriedadeSugestionPickerDataIncompleta_CreateSuggestion(object sender, ref PropriedadeDocumentoGisaTemplate <DataIncompleta> prop, out bool cancel, out TipoEstado estado)
        {
            cancel = false;
            estado = TipoEstado.Novo;
            FormNewValue form = new FormNewValue();

            form.NewValueStartDay   = prop.Valor.DiaInicio;
            form.NewValueStartMonth = prop.Valor.MesInicio;
            form.NewValueStartYear  = prop.Valor.AnoInicio;
            form.ShowDateField(true);

            switch (form.ShowDialog())
            {
            case DialogResult.OK:
                prop.TipoOpcao = TipoOpcao.Trocada;
                if (prop.EstadoRelacaoPorOpcao.ContainsKey(TipoOpcao.Original))
                {
                    prop.EstadoRelacaoPorOpcao[prop.TipoOpcao] = TipoEstado.Editar;
                }
                else
                {
                    prop.EstadoRelacaoPorOpcao[prop.TipoOpcao] = TipoEstado.Novo;
                }
                prop.Valor = new DataIncompleta(form.NewValueStartYear, form.NewValueStartMonth, form.NewValueStartDay, form.NewValueEndYear, form.NewValueEndMonth, form.NewValueEndDay);
                break;

            case DialogResult.Cancel:
                cancel = true;
                break;
            }
        }
        void propriedadeSugestionPickerString_CreateSuggestion(object sender, ref PropriedadeDocumentoGisaTemplate <string> prop, out bool cancel, out TipoEstado estado)
        {
            cancel = false;
            estado = TipoEstado.Novo;
            FormNewValue form = new FormNewValue();

            form.NewValueString = prop.Valor;
            form.ShowDateField(false);

            switch (form.ShowDialog())
            {
            case DialogResult.OK:
                prop.TipoOpcao = TipoOpcao.Trocada;
                prop.EstadoRelacaoPorOpcao[prop.TipoOpcao] = TipoEstado.Novo;
                prop.Valor = form.NewValueString;
                break;

            case DialogResult.Cancel:
                cancel = true;
                break;
            }
        }
        void propriedadeSuggestionPickerString_CreateSuggestion(object sender, ref PropriedadeDocumentoGisaTemplate<string> prop, out bool cancel, out TipoEstado estado)
        {
            estado = TipoEstado.Novo;
            cancel = false;
            FormNewValue form = new FormNewValue();
            form.NewValueString = prop.Valor;
            form.ShowDateField(false);

            switch (form.ShowDialog())
            {
                case DialogResult.OK:
                    prop.TipoOpcao = TipoOpcao.Trocada;
                    prop.EstadoRelacaoPorOpcao[prop.TipoOpcao] = TipoEstado.Novo;
                    prop.Valor = form.NewValueString;
                    break;
                case DialogResult.Cancel:
                    cancel = true;
                    break;
            }
        }
        void propriedadeSuggestionPickerDataIncompleta_CreateSuggestion(object sender, ref PropriedadeDocumentoGisaTemplate<DataIncompleta> prop, out bool cancel, out TipoEstado estado)
        {
            estado = TipoEstado.Novo;
            cancel = false;
            FormNewValue form = new FormNewValue();
            if (prop.TipoOpcao != TipoOpcao.Ignorar)
            {
                form.NewValueStartDay = prop.Valor.DiaInicio;
                form.NewValueStartMonth = prop.Valor.MesInicio;
                form.NewValueStartYear = prop.Valor.AnoInicio;
                form.NewValueEndDay = prop.Valor.DiaFim;
                form.NewValueEndMonth = prop.Valor.MesFim;
                form.NewValueEndYear = prop.Valor.AnoFim;
            }
            form.ShowDateField(true);

            switch (form.ShowDialog())
            {
                case DialogResult.OK:
                    prop.TipoOpcao = TipoOpcao.Trocada;
                    prop.Valor = new DataIncompleta(form.NewValueStartYear, form.NewValueStartMonth, form.NewValueStartDay, form.NewValueEndYear, form.NewValueEndMonth, form.NewValueEndDay);
                    if (prop.EstadoRelacaoPorOpcao.ContainsKey(TipoOpcao.Original))
                        prop.EstadoRelacaoPorOpcao[prop.TipoOpcao] = TipoEstado.Editar;
                    else
                        prop.EstadoRelacaoPorOpcao[prop.TipoOpcao] = TipoEstado.Novo;
                    prop.EstadoRelacaoPorOpcao[prop.TipoOpcao] = estado;
                    break;
                case DialogResult.Cancel:
                    cancel = true;
                    break;
            }
        }