Обучающие курсы:

Обучение профессии "Разработчик C#" + стажировка в Mail.ru
Обучение профессии "Разработчик Python" + трудоустройство
Обучение профессии "Веб-разработчик" + стажировка в Mail.ru


Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс - подробно
Линукс - новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей





Организация удобного пользовательского интерфейса в Турбопаскале

Пользовательский интерфейс — взаимодействие пользователя с программой. Одним из важнейших требований пользовательского программирования является организация в программе интерфейса, удобного для прикладного (рядового) пользователя.
Под термином "удобный" здесь понимается совокупность таких свойств, как

-           адекватность сообщений программы ее задаче (терминология, стиль, жаргон, область значений данных и т.п.);

-           информативность, наглядность, содержательность и понятность сообщений и запросов программы;

-           завершаемость программы (недопустимость ее зацикливания даже при неверно заданных исходных данных) с сообщением об успешном или неуспешном ее окончании. Если какие-то (или все) результаты не могут быть получены, должно быть выдано сообщение об этом с указанием причин.

 

Для изучения процесса решения задачи и анализа получаемых результатов в программе должны быть предусмотрены различные приемы (промежуточные выдачи и сообщения о ходе исполнения программы, временная задержка, пошаговое исполнение, постраничная выдача и т.п.).

Информативность, содержательность и понятность сообщений и запросов программы позволяют пользователю быстрее и лучше освоить ее, а разработчику - провести исчерпывающее тестирование, а при необходимости и корректировку.

Информативными должны быть

-           сообщения об условиях решаемой задачи: формулировка, сведения об области значений исходных данных, ограничения и требования;
-           запросы значений исходных данных: сообщение их имени или назначения;
-           сообщения о полученных результатах (с указанием их имени или назначения);
-           сообщения о ходе исполнения и завершения программы (с указанием причин в случае неуспешного завершения).

Все сообщения должны быть выдержаны в такой терминологии и стиле, которые соответствуют предметной области задачи и предполагаемому кругу пользователей.

 

Основные приемы и средства организации интерфейса в текстовом режиме

Модуль Crt предоставляет ряд дополнительных средств, с помощью которых пользовательский интерфейс можно организовать более гибко, наглядно и интересно.

Размещение на экране информации в текстовом режиме
Наглядность и удобство пользовательского интерфейса во многом определяются не только содержательностью выдаваемых сообщений, но и адекватным задаче расположением их на экране дисплея.

При работе в стандартном текстовом режиме координаты экрана меняются в пределах X = 1...80, Y = 1...25 (начало координат расположено в верхнем левом углу экрана). На экране можно строить окна, каждое из которых вводит собственную систему координат. Полный экран можно рассматривать как одно из окон.

Для фиксации места расположения информации перед выдачей сообщения или перед ожидаемым вводом данных нужно установить курсор в нужной точке экрана (окна), обратившись к процедуре GoToXY(X, Y: byte). Она переместит курсор в позицию, заданную координатами (X, Y) относительно текущего окна. Если значение одного из параметров (X или У) окажется некорректным (например, превышающим размеры окна), то вызов этой процедуры будет проигнорирован.

Как бы обратными этой процедуре являются функции WhereX и WhereY, которые позволяют получить значения координат курсора (относительно текущего окна).

Используя процедуру перемещения курсора, можно организовать удобный ввод информации разного характера и вывод в разные места экрана сообщений, числовых данных, запросов и т.п.

 

Создание многооконного интерфейса

Рассмотрим сначала, как можно создать многооконный интерфейс, при котором ввод и вывод информации выполняются в различных окнах (возможно перекрывающихся), расположенных в разных местах экрана, открывающихся и закрывающихся в процессе исполнения программы.

Операция, задаваемая с помощью процедуры Window (Xl, Yl, Х2, Y2: byte), отображает на экране окно, определяемое как текущее (активное), т.е. такое, в рамках которого будут выполняться в последующем операторы ввода-вывода и ряд других процедур работы с экраном. Значения XI, Y1 задают координаты левого верхнего, а Х2, Y2 - координаты правого нижнего угла окна. Заметим, что это - абсолютные координаты, т.е. координаты полного экрана.

 

После создания окна курсор устанавливается в его начало, а дальнейшие перемещения курсора ограничиваются рамками этого окна. Окно устанавливает свою (относительную) систему координат, которую теперь можно использовать для установки курсора в произвольное место этого окна.
Часть экрана вне окна становится недоступной для перемещения в нее курсора и, тем самым, выполнения операторов ввода-вывода.

На экране могут находиться одновременно несколько окон, но в каждый момент активным является только одно.

При работе с цветным дисплеем окно (как и экран в целом) можно окрасить (задать цвет его фона), можно также задавать цвет символов (каждого или некоторой группы). Каждый выводимый на экран символ может иметь один из 16 цветов (обозначается номером от 0 до 15 или идентификатором).

Для установки цвета символов используется процедура TextColor(Color: byte). Цвет фона может задаваться одним из 8 цветов (обозначается номером от 0 до 8 или идентификатором), для его установки используется процедура TextBackGround(Color: byte). Идентификатор, который может быть задан в качестве значения параметра Color, является именем цвета (на английском языке) и представляет собой имя стандартной константы модуля Crt.

Лучше обозначать цвета именами (в силу их мнемонического смысла), но в некоторых случаях цвет приходится задавать целым числом. Числовое задание необходимо, например, при задании цвета случайным числом, а также при создании последовательности окон в цикле - если важно, чтобы они изображались разными цветами (возможно повторяющимися через некоторый интервал).

Процедура ClrScr полностью очищает экран (или текущее окно); кроме того, она закрашивает экран (или окно) текущим цветом фона и помещает курсор в левый верхний угол экрана (окна).

Так, для создания окна и ввода задаваемого в нем текста нужно выполнить типичную последовательность операторов:

Window(Xl, Yl, Х2, Y2); {создание окна}
TextBackGround(Cl); {задание цвета фона окна}
TextColor(C2); {задание цвета текста окна}
ClrScr; {очистка окна и закрашивание его текущим цветом фона}
ReadLn(S); {ввод набираемого в окне текста в переменную S}

 

Здесь XI, Y1, Х2, Y2, CI, С2 - константы или переменные с определенными значениями.

Построение некоторого набора окон естественно предполагает возможность неоднократного перехода в процессе исполнения программы из одного окна в другое. Если окон немного и их положение статично, т.е. определяется самой программой, то и положение окон, и другие их атрибуты (цвета, яркость) могут быть зафиксированы в программе в виде констант. Однако интересны также программы, в которых сам пользователь программы имеет возможность создавать некоторый набор окон и направлять в них те или иные потоки информации. В этом случае программа должна обеспечить запоминание положения и средства идентификации окон для их активизации.




 

Комментарии:


Добавить свой комментарий:


Введите значение:
 









   
 

Библиотека программиста. 2009.
Администратор: admin@programmer-lib.ru