Теоретическая часть. Диалоговые окна присутствуют почти в каждой программе

Диалоговые окна присутствуют почти в каждой программе. Их необходимость

обусловлена хотя бы тем, что пользователю нужно:

  • Настроить процесс решения задачи
  • Получать сообщения и комментарии в ходе решения
  • Управлять процессом решения задачи
  • Обеспечить ввод/вывод данных

При программировании в MapBasic различают стандартные и пользовательские окна

диалогов.

К стандартным диалогам относят окна диалогов сформированные следующими

операторами:

Ask Показывает диалоговое окно с сообщением или вопросом и предлагающее подтвердить или отменить предложение
Note Показывает информационное сообщение
FileOpenDlg Вызывает диалоговое окно «Открыть файл …»
FileSaveAsDlg Вызывает диалоговое окно «Сохранить файл как …»
ProgressBar Создает диалоговое окно-индикатор выполнения процесса
Set ProgressBars Показывает или скрывает диалог-индикатор выполнения процесса
Alter MapInfoDialog Делает недоступными, прячет или присваивает значение элементу стандартного диалогового окна в MapInfo

Диалог Ask имеет две кнопки и возвращает логическое значение в зависимости от нажатой кнопки

Диалоговое окно с вопросом

if Ask("Показать информацию о стиле?", "Да", "Нет")="T" then print ss else ss="" end if

Диалог Note имеет всего одну результирующую кнопку

Окно с информационным сообщением

Note "На карте нет выбранных объектов!"

При этом, если нажать кнопку Ok на клавиатуре будет возвращено True, если Esc – False.

Функция FileOpenDlg() показывает диалоговое окно MapInfo Открыть таблицу

Диалоговое окно «Открыть файл …»

Dim fileName As String fileName = FileOpenDlg("C:\Temp","","TAB","Открыть таблицу") if len(fileName)>0 then print fileName else note "Таблица не выбрана!" end if

Важно: Функция FileOpenDlg() не открывает выбранный файл, а только возвращает полное имя файла. Если в диалоге нажата кнопка Отмена – возвращается пустая строка. Для того чтобы при старте диалога открывался текущий рабочий каталог поставьте вместо "C:\Temp" пустую строку ("").

Функция FileSaveAsDlg() работает подобно функции MapInfo Файл /Создать копию.

Также как в предыдущем операторе возвращается полное имя файла.

Оператор Alter MapInfoDialog позволяет присваивать значения элементам стандартных

диалогов MapInfo, делать недоступными или скрытыми их кнопки, флажки и т. п. Так как

идентификаторы, используемые этим оператором, зависят от версии MapInfo, поэтому,его использование не рекомендуется.

Пример использования индикатора выполнения процесса ProgressBar для обработки объектов в таблице.

Задачу: есть таблица и нужно пройти по всем строкам этой таблицы и для каждой строки выполнить некоторую работу. Эту работу определим как запись в поле ID некоторого значения.

Диалоговое окно — индикатор выполнения процесса

'Блок описаний Include "MAPBASIC.DEF" Declare sub Main Declare Sub ProgressBarDemo Declare Sub WorkingLine dim ProgressStart,ProgressEnd as integer dim dt,ProgressD as integer dim tbName as string 'Главная процедура sub Main 'Имя таблицы Points. Обязательно должно быть поле ID целого типа. tbName="Points" call ProgressBarDemo end sub Sub ProgressBarDemo ProgressStart = 1 ProgressEnd = TableInfo(tbName,TAB_INFO_NROWS) ProgressD=1 'Параметр гладкости процесса (регулируется по необходимости). dt=ProgressEnd/100+1 ProgressBar "Обработка информации..." Calling WorkingLine Range ProgressEnd If CommandInfo(CMD_INFO_STATUS) Then Note "Обработка информации закончена!" Else 'Если процесс прерван принудительно. Note "Обработка информации прервана на строке " & Str$(ProgressStart) End If end sub Sub WorkingLine Do While ProgressStart<=ProgressEnd And ProgressStart<ProgressEnd/dt*ProgressD Fetch Rec ProgressStart From tbName 'Здесь выполняется полезная работа. В данном случае просто изменяем значение поля ID. Update tbName Set ID=1000+ProgressStart Where RowID=ProgressStart ProgressStart=ProgressStart +1 Loop ProgressD=ProgressD+1 If ProgressStart>ProgressEnd Then ProgressBar=-1 Else ProgressBar=ProgressStart End If end sub

Порядок выполнения работы:

1. Изучить теорию.

2. Выполнить примеры из теоретической части

3. В отчете отобразить теоретическую часть код программ и модулей

4 Выполненную работу показать преподавателю и сдать отчет на подпись.


МИНОБРНАУКИ РОССИИ

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«Тульский государственный университет»

Кафедра геоинженерии и кадастра

  Утверждаю Декан горно-строительного факультета __________________ Р.А. Ковалев “____”_________________ 20___ г.



double arrow
Сейчас читают про: