Инструменты пользователя

Инструменты сайта


developers:tutorial:sheets

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
developers:tutorial:sheets [2022/08/30 12:41]
proxor
developers:tutorial:sheets [2023/07/31 08:41] (текущий)
yulia
Строка 17: Строка 17:
 Если пользовательские настройки требуется сохранить,​ то так же следует перекрыть методы [[developers:​references:​topomatic.tables.sheets.templatesheet.loadfromstg|LoadFromStg()]] и [[developers:​references:​topomatic.tables.sheets.templatesheet.savetostg|SaveToStg()]]. Подробнее о процессах сохранение и загрузки можно узнать в разделе руководства Создание и сохранение модели. Если пользовательские настройки требуется сохранить,​ то так же следует перекрыть методы [[developers:​references:​topomatic.tables.sheets.templatesheet.loadfromstg|LoadFromStg()]] и [[developers:​references:​topomatic.tables.sheets.templatesheet.savetostg|SaveToStg()]]. Подробнее о процессах сохранение и загрузки можно узнать в разделе руководства Создание и сохранение модели.
  
-Шаблон ведомости представляет из себя [[https://support.microsoft.com/ru-ru/office/​xml-%D0%B4%D0%BB%D1%8F-%D0%BD%D0%B0%D1%87%D0%B8%D0%BD%D0%B0%D1%8E%D1%89%D0%B8%D1%85-a87d234d-4c2e-4409-9cbc-45e4eb857d44|XML-файл]] определяющий внешний вид ведомости и расположение ячеек заголовков и данных. Корневой каталог шаблонов ведомостей расположен по пути "​c:​\ProgramData\Topomatic\Robur <​Тип_продукта>​\16.0\Sht\"​ (в зависимости от вашего типа [[https://​new.topomatic.ru/​products/​|продукта]] программного комплекса [[https://​new.topomatic.ru/​|Топоматик Робур]],​ имя каталога будет разным). Далее шаблон располагается в подпапках,​ соответствующих типу ведомости. Например,​ ведомости подобъектов будут располагаться в каталоге Alg и т.д. Структура шаблона ведомости описана в разделе руководства [[road:​commons_tasks:​creating_and-editing_templates:​start|Создание и редактирование шаблонов выходных ведомостей]]. ​+Шаблон ведомости представляет из себя [[https://ru.wikipedia.org/wiki/XML|XML-файл]] определяющий внешний вид ведомости и расположение ячеек заголовков и данных. Корневой каталог шаблонов ведомостей расположен по пути "**c:​\ProgramData\Topomatic\Robur <​Тип_продукта>​\16.0\Sht\**" (в зависимости от вашего типа [[https://​new.topomatic.ru/​products/​|продукта]] программного комплекса [[https://​new.topomatic.ru/​|Топоматик Робур]],​ имя каталога будет разным). Далее шаблон располагается в подпапках,​ соответствующих типу ведомости. Например,​ ведомости подобъектов будут располагаться в каталоге Alg и т.д. Структура шаблона ведомости описана в разделе руководства [[road:​commons_tasks:​archive_sections:​creating_and-editing_templates:​start|Создание и редактирование шаблонов выходных ведомостей]]. ​
 ----- -----
 ==== Подготовка модуля ==== ==== Подготовка модуля ====
Строка 27: Строка 27:
   * [[developers:​references:​topomatic.alg|Topomatic.Alg.dll]] - базовые классы подобъектов   * [[developers:​references:​topomatic.alg|Topomatic.Alg.dll]] - базовые классы подобъектов
   * [[developers:​references:​topomatic.alg.model|Topomatic.Alg.Model.dll]] - базовые классы моделей подобъектов   * [[developers:​references:​topomatic.alg.model|Topomatic.Alg.Model.dll]] - базовые классы моделей подобъектов
-  * [[developers:​references:​topomatic.alg.runtime|Topomatic.Alg.Runtime.dll]] - возможность использования ​статического ​класса ​AlgCoreTools, ​для ​доступа к необходимым константам +  * [[developers:​references:​topomatic.alg.runtime|Topomatic.Alg.Runtime]] - возможность использования класса ​[[developers:​references:​topomatic.alg.runtime.serviceclasses.activealignmentreciver|ActiveAlignmentReciver]] ​для ​получения модели ​активного подобъекта 
-  * [[developers:​references:​topomatic.alg.tables|Topomatic.Alg.Tables.dll]] - возможность использования TemplateStationingSheet,​ подкласса TemplateSheet,​ содержащего указатель на пикетаж базового пути+  * [[developers:​references:​topomatic.alg.tables|Topomatic.Alg.Tables.dll]] - возможность использования ​[[developers:​references:​topomatic.alg.runtime.sheet.templatestationingsheet|TemplateStationingSheet]], подкласса ​[[developers:​references:​topomatic.tables.sheets.templatesheet|TemplateSheet]], содержащего указатель на пикетаж базового пути
   * [[developers:​references:​topomatic.cad.foundation|Topomatic.Cad.Foundation.dll]] - базовые математические типы и операции   * [[developers:​references:​topomatic.cad.foundation|Topomatic.Cad.Foundation.dll]] - базовые математические типы и операции
   * [[developers:​references:​topomatic.componentmodel|Topomatic.ComponentModel.dll]] - классы атрибутов   * [[developers:​references:​topomatic.componentmodel|Topomatic.ComponentModel.dll]] - классы атрибутов
Строка 70: Строка 70:
 Для возможности использования пользовательского фрейма настроек в мастере создания ведомостей,​ класс ведомости должен содержать уникальный объект-ключ (Moniker). Объект-ключ это пустой объект класса [[https://​docs.microsoft.com/​en-us/​dotnet/​api/​system.object?​view=net-6.0|Object]]. Этот объект должен создаваться при инициализации экземпляра класса ведомости и возвращаться вместе с объектами-ключами базового класса при вызове метода [[developers:​references:​topomatic.tables.sheets.templatesheet.getmonikers|GetMonikers()]]. Объект-ключ служит в качестве идентификатора нашего экземпляра класса ведомости и служит для определения типа пользовательского фрейма,​ соответствующего типу нашей ведомости. Пользовательский фрейм получается с помощью метода [[developers:​references:​topomatic.tables.sheets.templatesheet.getframe|GetFrame()]] принимающий объект-ключ в качестве аргумента. Для возможности использования пользовательского фрейма настроек в мастере создания ведомостей,​ класс ведомости должен содержать уникальный объект-ключ (Moniker). Объект-ключ это пустой объект класса [[https://​docs.microsoft.com/​en-us/​dotnet/​api/​system.object?​view=net-6.0|Object]]. Этот объект должен создаваться при инициализации экземпляра класса ведомости и возвращаться вместе с объектами-ключами базового класса при вызове метода [[developers:​references:​topomatic.tables.sheets.templatesheet.getmonikers|GetMonikers()]]. Объект-ключ служит в качестве идентификатора нашего экземпляра класса ведомости и служит для определения типа пользовательского фрейма,​ соответствующего типу нашей ведомости. Пользовательский фрейм получается с помощью метода [[developers:​references:​topomatic.tables.sheets.templatesheet.getframe|GetFrame()]] принимающий объект-ключ в качестве аргумента.
  
-Методы [[developers:​references:​topomatic.tables.sheets.templatesheet.loadfromstg|LoadFromStg()]] и [[developers:​references:​topomatic.tables.sheets.templatesheet.savetostg|SaveToStg()]] содержат инструкции записи и чтения данных ведомости,​ а так же состояния пользовательских настроек. В текущем примере наша ведомость содержит только одно пользовательское свойство **UserSetting**. Оно не будет использоваться в расчётах и описано в справочных целях. Свойство **UserSetting** является типом [[https://​docs.microsoft.com/​en-us/​dotnet/​csharp/​language-reference/​builtin-types/​bool|bool]],​ поэтому для чтения и записи значения воспользуемся методом [[developers:​references:​topomatic.stg.stgcollection.getboolean_system.string_system.boolean|GetBoolean()]] класса [[developers:​references:​topomatic.stg.stgnode|StgNode]].+Методы [[developers:​references:​topomatic.tables.sheets.templatesheet.loadfromstg|LoadFromStg()]] и [[developers:​references:​topomatic.tables.sheets.templatesheet.savetostg|SaveToStg()]] содержат инструкции записи и чтения данных ведомости,​ а так же состояния пользовательских настроек. В текущем примере наша ведомость содержит только одно пользовательское свойство **UserSetting**. Оно не будет использоваться в расчётах и описано в справочных целях. Свойство **UserSetting** является типом [[https://​docs.microsoft.com/​en-us/​dotnet/​csharp/​language-reference/​builtin-types/​bool|bool]],​ поэтому для чтения и записи значения воспользуемся методами [[developers:​references:​topomatic.stg.stgcollection.getboolean_system.string_system.boolean|GetBoolean()]] и [[developers:​references:​topomatic.stg.stgcollection.addboolean_system.string_system.boolean|AddBoolean()]] класса [[developers:​references:​topomatic.stg.stgnode|StgNode]].
  
 Добавьте в программу новые классы со следующим содержанием:​ Добавьте в программу новые классы со следующим содержанием:​
Строка 213: Строка 213:
         {         {
             base.SaveToStg(node);​             base.SaveToStg(node);​
-            node.GetBoolean("​UserSetting",​ UserSetting);​+            node.AddBoolean("​UserSetting",​ UserSetting);​
         }         }
  
Строка 222: Строка 222:
  
 === Класс пользовательского фрейма === === Класс пользовательского фрейма ===
-Создадим класс пользовательского фрейма (TutorialSheetFrame) наследник от UserSheetWizardFrame. В нашем примере пользовательский фрейм будет содержать только один CheckBox. Добавим его в режиме конструктора Windows Forms. У нашего фрейма необходимо перекрыть методы OnInitialize() и OnFinallize(),​ где мы будем читать и изменять состояние нашей ведомости соответственно. Так же можно перекрыть свойство Title, используемое мастером создания ведомости для формирования заголовка окна мастера.+Создадим класс пользовательского фрейма (**TutorialSheetFrame**) наследник от [[developers:​references:​topomatic.tables.export.usersheetwizardframe|UserSheetWizardFrame]]. В нашем примере пользовательский фрейм будет содержать только один ​[[https://​docs.microsoft.com/​en-us/​dotnet/​api/​system.windows.forms.checkbox?​view=windowsdesktop-6.0|CheckBox]]. Добавим его в режиме ​[[https://​docs.microsoft.com/​ru-ru/​visualstudio/​designers/​windows-forms-designer-overview?​view=vs-2022|конструктора Windows Forms]]. У нашего фрейма необходимо перекрыть методы ​[[developers:​references:​topomatic.tables.export.usersheetwizardframe.oninitialize|OnInitialize()]] и [[developers:​references:​topomatic.tables.export.usersheetwizardframe.onfinalize|OnFinallize()]], где мы будем читать и изменять состояние нашей ведомости соответственно. Так же можно перекрыть свойство ​[[developers:​references:​topomatic.tables.export.usersheetwizardframe.title|Title]], используемое мастером создания ведомости для формирования заголовка окна мастера.
  
 Добавьте в программу новый класс со следующим содержанием:​ Добавьте в программу новый класс со следующим содержанием:​
Строка 267: Строка 267:
  
 === Шаблон ведомости === === Шаблон ведомости ===
-Создайте новый текстовый файл TutorialSheet.xml и расположите его в каталоге "​c:​\ProgramData\Topomatic\Robur <​Тип_продукта>​\16.0\Sht\Alg\TutorialSheet\"​. Заполните его следующим образом:​+Создайте новый текстовый файл ​**TutorialSheet.xml** и расположите его в каталоге "**c:​\ProgramData\Topomatic\Robur <​Тип_продукта>​\16.0\Sht\Alg\TutorialSheet\**". Заполните его следующим образом:​
 <code xml> <code xml>
 <?xml version="​1.0"​ encoding="​utf-8"?>​ <?xml version="​1.0"​ encoding="​utf-8"?>​
Строка 358: Строка 358:
 Для создания пользовательской ведомости следует объявить две команды. Первая команда создаёт экземпляр класса ведомости и определяет его состояние. Вторая команда будет вызывать первую и для возвращённого экземпляра класса ведомости вызовет мастер создания ведомости. Для создания пользовательской ведомости следует объявить две команды. Первая команда создаёт экземпляр класса ведомости и определяет его состояние. Вторая команда будет вызывать первую и для возвращённого экземпляра класса ведомости вызовет мастер создания ведомости.
  
-В теле программного модуля объявите команды,​ и декорируйте её атрибутом ​«cmd». Команда ​«generate_tutorial_sheet» ​создаст экземпляр класса ведомости,​ а команда ​«tutorial_sheet» ​вызовет для него мастер создания ведомости.+В теле программного модуля объявите команды,​ и декорируйте её атрибутом ​«**cmd**». Команда ​«**generate_tutorial_sheet**» ​создаст экземпляр класса ведомости,​ а команда ​«**tutorial_sheet**» ​вызовет для него мастер создания ведомости.
  
 <code csharp> <code csharp>
Строка 433: Строка 433:
 </​code>​ </​code>​
  
-Результатом запуска проекта будет появление в главном меню пункта ​«Tutorial», с подпунктами,​ которые будут работать в соответствии с описанными выше алгоритмами.+Результатом запуска проекта будет появление в главном меню пункта ​«**Tutorial**», с подпунктами,​ которые будут работать в соответствии с описанными выше алгоритмами.
  
 {{ :​developers:​tutorial:​sheets:​tutsheetsmaster.png?​nolink |}} {{ :​developers:​tutorial:​sheets:​tutsheetsmaster.png?​nolink |}}
developers/tutorial/sheets.1661863309.txt.gz · Последние изменения: 2022/08/30 12:41 — proxor