Интерфейс пользователя

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

Основные требования, которым должен соответствовать пользовательский интерфейс программы:

Размещение кнопок
Где только возможно, я стараюсь разместить кнопки управления в верхнюю часть окна, то есть в панель инструментов окна, (хотя сам toolbar я, обычно, не использую).  Все кнопки стандартного размера 16 х 16, с пиктограммами и установленными атрибутами TIP и MESAGE, разъясняющими их назначение.   Текст на кнопке оставляю только если она выполняет какое-либо редкое и нестандартное действие.  Практика показывает, что размещение кнопок в самом окне понятней и удобней, чем в общем toolbar-е всего приложения.  К тому же, такое размещение кнопок укорачивает путь, который должен проделать курсор пользователя на экране при нажатии на кнопки.  Конечно, "стандартные" кнопки размещаются в одних и тех же местах во всех окнах.   В формах ввода я размещаю кнопки "Ок" и "Cancel" размером 24 х 16 в нижнем правом углу экрана.  Это бросается в глаза и пользователь сразу понимает, что в этом окне надо вводить данные.  Для каждой из "стандартных" кнопок (или группы кнопок) имеются control-шаблоны, при помощи которых и достигается их стандартизация.  Смотрите, например, шаблоны Button_Copy, Button Help, MoveRec, TListButtons, DFilter, HistList ...

Цвета окон
Я применяю "обои" (фоновые картинки) для окон нескольких типов.  Это делает их непохожими на уныло-серые похожие друг на друга окна большинства Windows-приложений.   Для окон, предназначенных для разных целей имеются разные "обои".  Имеются "обои" для таблиц справочников, для таблиц в режиме выбора записи (с активной кнопкой "Select"), для форм справочников,  для форм в режиме удаления записи, для Документов, для Ведомостей Документов и т.п.   Это, по моему, увеличивает степень интуитивной понятности назначения окон.  Поддержка "обоев" окон реализована в виде шаблона WallPaper.

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


Кнопка Cancel в форме
Пока в форме не изменено ни одно поле, кнопка ?Cancel имеет атрибуты ICON('Close.ico') и TIP('Выход').   После того как было изменено хотя бы одно поле, кнопка ?Cancel изменяет свой вид: ICON('Cancel.ico') и TIP('Отменить').  Этот эффект реализован в виде следующих строк в шаблоне RedBox:

#AT (%PrepareAlerts)
  if LocalRequest = ChangeRecord
    ?Cancel{prop:Icon} = '~Close.ico'
    ?Cancel{prop:Tip} = 'Выход'
  elsif LocalRequest = DeleteRecord
    THIS{prop:Wallpaper} = g:FormDel
    THIS{prop:TILED} = '1'
  .
#ENDAT
#! --- 'Accept Loop, After CASE FIELD() handling'
#AT (%AcceptLoopAfterFieldHandling)
  if ~THIS{prop:AcceptAll} and event()=EVENT:Accepted
    if Sav::%PrimaryFilePrefix:Record <> %PrimaryFilePrefix:Record
      ?Ok{prop:Disable} = ''
      ?Cancel{prop:Icon} = '~Cancel.ico'
      ?Cancel{prop:Tip} = 'Отменить'
    .
  .
#ENDAT

 

Hosted by uCoz