Метод showMessageBox()

Метод showMessageBox() объекта dialog асинхронно отображает диалоговое окно с сообщением и одной или несколькими кнопками. Формат метода:

const { dialog } = require('electron');
Promise<Объект> = dialog.showMessageBox([<Ссылка на окно>, ]<Опции>)

Если в первом параметре указана ссылка на родительское окно, то диалоговое окно будет модальным. Во втором параметре указывается объект со следующими опциями:

  • message — текст сообщения;
  • detail — дополнительные сведения (отображается под текстом сообщения);
  • title — текст заголовка окна;
  • buttons — массив строк с названиями кнопок;
  • defaultId — индекс кнопки из массива buttons, выбранной по умолчанию;
  • cancelId — индекс кнопки из массива buttons, выбираемой при нажатии клавиши <Esc>;
  • type — тип диалогового окна в виде строки. Можно указать значения none, info, error, warning и question;
  • noLink — если указано значение true, то кнопки не будут преобразовываться в ссылки (значение по умолчанию: false);
  • icon — задает значок;
  • checkboxLabel — если указано значение, то будет отображен флажок с указанным текстом;
  • checkboxChecked — если указано значение true, то флажок будет установлен, а если false — то сброшен;
  • normalizeAccessKeys — если указано значение true, то символ & перед буквой в названии кнопки, задающий клавишу быстрого доступа совместно с клавишей <Alt>, будет нормализован в зависимости от платформы (значение по умолчанию: false).

Метод showMessageBox() возвращает объект Promise, содержащий объект с двумя свойствами:

  • response — индекс кнопки из массива buttons, нажатой пользователем;
  • checkboxChecked — значение true, если флажок установлен, и false — если сброшен.

Пример отображения окна внутри обработчика события:

ipcMain.on('event-show-dialog_info', async (e) => {
   let result = await dialog.showMessageBox(win, {
      message: 'Текст сообщения',
      detail: 'Дополнительные сведения',
      title: 'Заголовок окна',
      buttons: ['OK', 'Отмена'],
      defaultId: 0,
      cancelId: 1,
      type: 'info',
      noLink: true,
      checkboxLabel: 'checkboxLabel',
      checkboxChecked: true,
      normalizeAccessKeys: false
   });
   console.log(result); // { response: 1, checkboxChecked: true }
});

Результат показан на рис. 4.3.

Рис. 4.3. Окно с типом info

Можно также воспользоваться методом showMessageBoxSync() объекта dialog, который выполняет операцию синхронно, блокируя процесс. Формат метода:

const { dialog } = require('electron');
<Индекс кнопки> = dialog.showMessageBoxSync([<Ссылка на окно>, ]<Опции>)

Все параметры аналогичны одноименным параметрам метода showMessageBox(). Метод showMessageBoxSync() возвращает индекс кнопки из массива buttons, нажатой пользователем. Пример отображения окна внутри обработчика события:

ipcMain.on('event-show-dialog_error', (e) => {
   let result = dialog.showMessageBoxSync(win, {
      message: 'Текст сообщения',
      detail: 'Дополнительные сведения',
      title: 'Заголовок окна',
      buttons: ['OK', 'Отмена'],
      defaultId: 0,
      cancelId: 1,
      type: 'error',
      noLink: true,
      normalizeAccessKeys: false
   });
   console.log(result); // 0 или 1
});

Результат показан на рис. 4.4.

Рис. 4.4. Окно с типом error

Учебник по Electron js
Учебник по Electron js в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов