Перейти к содержанию

Создание диалоговых окон

Создание диалоговых окон

Простое диалоговое окно

Для создания простого диалогового окна нужно воспользоваться стандартным классом TessaDialog.

Класс имеет следующие стандартные возможности отображения:

  • Confirm - Отображает пользователю вопрос в виде окна с сообщением и кнопками “Да” и “Нет”.

  • ConfirmWithCancel - Отображает пользователю вопрос в виде окна с сообщением и кнопками “Да”, “Нет” и “Отмена”.

  • ShowError - Отображает пользователю окно с сообщением об ошибке.

  • ShowException - Отображает исключение в окне сообщений.

  • ShowMessage - Отображает пользователю окно с сообщением.

  • ShowNotEmpty - Отображает результат валидации в окне сообщений.

Рассмотрим пример создания модального диалогового окна ConfirmWithCancel с получением и обработкой результата:

using Tessa.UI;

...

SomeMethod() { bool? dialogResult = TessaDialog.ConfirmWithCancel( "Отображаемое пользователю сообщение", "Заголовок отображаемого диалогового окна");

if (!dialogResult.HasValue) { //Пользователь выбрал "Отмена" //Отменяем действие }

else if (dialogResult.Value) { //Пользователь выбрал "Да" //Производим все необходимые действия }

else { //Пользователь выбрал "Нет" //Производим все необходимые действия } }

...

Диалоговое окно на основе вкладки карточки

Кроме простых диалоговых окон можно создавать диалоговые окна на основе интерфейса вкладки карточки. Для этого можно создать в системе специальную карточку, привязанную к виртуальным секциям, создать в ней вкладку и использовать эту вкладку как интерфейс диалогового окна. В платформе для таких целей используется карточка “Dialogs”.

Рассмотрим пример создания такого диалогового окна:

using Tessa.UI;

...

SomeMethod() { // Получаем вкладку CardType dialogType; CardTypeNamedForm dialogForm; if (!cardMetadata.CardTypes.TryGetValue("CardName", out dialogType) || (dialogForm = dialogType.Forms.FirstOrDefault(x => x.Name == "TabAlias")) == null) { return; }

CardNewRequest request = new CardNewRequest { CardTypeID = dialogType.ID }; CardNewResponse response = cardRepository.New(request); if (!CheckResponseAndSetID(response)) { return; }

// Создаём модель окна ICardModel windowCardModel = createCardModelFunc( response.Card, response.SectionRows, x => dialogManager.ShowRow(x));

// Секция с данными, которая будет использоваться внутри окна, и которую нужно потом получить снаружи. var section = windowCardModel.Card.Sections["SomeSection"];

// Показываем диалог uiHost.ShowFormDialog( LocalizationManager.Localize(dialogForm.TabCaption), dialogForm, windowCardModel, form => { }, new UIButton( "$UI_Common_OK", () => { // Обработка результатов при нажатии кнопки "OK" ... return true; }, isDefault: true, isEnabledFunc: () => true), new UIButton("$UI_Common_Cancel", isCancel: true)); }

Note

Более подробный пример можно посмотреть в расширениях Tessa.Extensions.Default.Client.Tiles.AcquaintanceTileExtension.

Back to top