예제 #1
0
 /// <summary>МЕТОД Заполняем данные из протокола </summary>
 /// <param name="pFlowDocument">Если null, то текущий отчет, иначе в заданный FlowDocument</param>
 protected void MET_Protokol(FlowDocument pFlowDocument = null)
 {
     // Список полей
     PUB_HashPole = new Hashtable();
     // Пробегаемся по вопросам шаблона
     foreach (UserShablon _Shablon in PROP_Docum.PROP_Shablon)
     {
         eVopros           _Type = (eVopros)_Shablon.PROP_Type;
         VirtualPoleOtchet _Pole = MET_CreateUserPole(_Type);            // создаем поле, соответствующего типа
         _Pole.PROP_VarID       = _Shablon.PROP_VarId;
         _Pole.PROP_Maska       = MyMet.MET_ParseInt(_Shablon.PROP_Maska);
         _Pole.PROP_Format      = new MyFormat(_Shablon.PROP_xFormat);
         _Pole.PROP_Shablon     = _Shablon;
         _Pole.PROP_Protokol    = PROP_Docum.PROP_Protokol;
         _Pole.PROP_StrProtokol = PROP_Docum.PROP_Protokol.PROP_Protokol;
         _Pole.PROP_Name        = "Pole_" + _Pole.PROP_VarID;                             // имя поля
         PUB_HashPole.Add(_Pole.PROP_Name, _Pole);                                        // записываем элемент в очередь
         _Pole.MET_Inicial();                                                             // инициализация поля
         _Pole.PROP_Parent = (VirtualPoleOtchet)PUB_HashPole["Pole_" + _Pole.PROP_Maska]; // родительское поле, если есть
         // Добавляем форму в отчет
         if (_Pole.PROP_Parent != null && _Pole.PROP_Parent.PROP_Nested && !_Pole.PROP_Parent.PROP_HideChild)
         {
             _Pole.PROP_Parent.MET_AddElement(_Pole);
         }
         else
         {
             // Если родитель запретил печатать, то и мы запретим детям печататься
             if (_Pole.PROP_Parent != null && _Pole.PROP_Parent.PROP_HideChild)
             {
                 _Pole.PROP_HideChild = true;
                 _Pole.PROP_Hide      = true;
             }
             // Если не печатаем поле, то следующее поле
             if (_Pole.PROP_Hide)
             {
                 continue;
             }
             TextElement _Element = _Pole.MET_Print();
             if (_Element is Block)
             {
                 if (pFlowDocument != null)
                 {
                     pFlowDocument.Blocks.Add((Block)_Element);
                 }
                 else
                 {
                     Blocks.Add((Block)_Element);
                 }
                 if (_Element is Paragraph)
                 {
                     PRO_Paragraph = (Paragraph)_Element;
                 }
                 else
                 {
                     PRO_Paragraph = new Paragraph();
                 }
             }
             else
             {
                 PRO_Paragraph.Inlines.Add((Inline)_Element);
                 if (PRO_Paragraph.Parent == null)
                 {
                     if (pFlowDocument != null)
                     {
                         pFlowDocument.Blocks.Add(PRO_Paragraph);
                     }
                     else
                     {
                         Blocks.Add(PRO_Paragraph);
                     }
                 }
             }
         }
     }
 }
예제 #2
0
        /// <summary>МЕТОД Создаем объект Pole</summary>
        /// <param name="pTypePole">Номер типа поля eTypePole</param>
        protected VirtualPoleOtchet MET_CreateUserPole(eVopros pTypePole)
        {
            VirtualPoleOtchet _Pole = null;

            switch (pTypePole)
            {
            case eVopros.Number:                                                // 1. Число UserPole_Number
                _Pole = new UserPoleOtchet_Text();
                break;

            case eVopros.Real:                                                    // 2. Десятичное UserPole_Text
                _Pole = new UserPoleOtchet_Text();
                break;

            case eVopros.Date:                                                    // 3. Дата UserPole_Data
                _Pole = new UserPoleOtchet_Text();
                break;

            case eVopros.KrString:                                                // 4. Текст (короткий) UserPole_Text
                _Pole = new UserPoleOtchet_Text();
                break;

            case eVopros.List:                                                    // 5. Список UserPole_Text
                _Pole = new UserPoleOtchet_Text();
                break;

            case eVopros.LoText:                                                // 6. Текст (длинный) UserPole_Text
                _Pole = new UserPoleOtchet_Text();
                break;

            case eVopros.MultiList:                                                // 7. Код операци Список (многовыборочный) UserPole_MultyList
                _Pole = new UserPoleOtchet_Text();
                break;

            case eVopros.Text:                                                    // 8. Свободный текст (основной) UserPole_Text
                _Pole = new UserPoleOtchet_Text();
                break;

            case eVopros.Razdel:                                                // 9. Раздел UserPole_Razdel
                _Pole = new UserPoleOtchet_Razdel();
                break;

            case eVopros.Hide:                                                    // 10. Скрытое поле UserPole_Text
                _Pole = new UserPoleOtchet_Text();
                break;

            case eVopros.Time:                                                    // 11. Время UserPole_Text
                _Pole = new UserPoleOtchet_Text();
                break;

            case eVopros.Radio:                                                    // 12. Радио кнопки UserPoleRadio_Button
                _Pole = new UserPoleOtchet_Text();
                break;

            case eVopros.Image:                                                    // 13. Изображения UserPole_Image
                _Pole = new UserPoleOtchet_Image();
                break;

            case eVopros.Grid:                                                    // 14. Таблица UserPole_Grid
                _Pole = new UserPoleOtchet_Grid();
                break;

            case eVopros.Label:                                                    // 15. Метка UserPole_Label
                _Pole = new UserPoleOtchet_Label();
                break;

            case eVopros.Sprav:                                                    // 16. Справочники UserPole_Sprav
                _Pole = new UserPoleOtchet_Text();
                break;

            case eVopros.Calendar:                                                // 16. Календарь UserPole_Calendar
                _Pole = new UserPoleOtchet_Text();
                break;
            }
            _Pole.PROP_Type   = pTypePole;                                      // проставляем тип поля
            _Pole.PROP_Prefix = PROP_Prefix;                                    // префикс таблицы
            return(_Pole);
        }