Пользовательский интерфейс. Обмен опытом.

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Пользовательский интерфейс. Обмен опытом.

Сообщение WAYFARER » 23.01.2010 15:51:58

Так сложились обстоятельства, что мне в данный момент приходится думать об этом, в этот раз я решил подойти к этому вопросу очень критично, и, как оказалось, моего опыта и знаний недостаточно.
Думаю каждый разработчик сталкивался с проблемой проектирования GUI.
Вот и мне хотелось бы получше понять концепцию построения пользовательских интерфейсов.
Я понимаю, что для эффективного взаимодействия пользователя с программой интерфейс должен прост, интуитивно понятен, и в то же время привлекателен, иначе, как оказывается в большинстве случаев, какой бы функциональной программа не была, особого успеха она иметь не будет. Так как все таки должен выглядеть хороший программный продукт? Как должны выглядеть окна программы(SDI, MDI и прочее), элементы управления, как правильно сгруппировать и расположить эти самые элементы и т.д. и т.п. Собственно это целая наука.
Я предлагаю в данной теме устроить этакий небольшой "семинар" на тему "Пользовательский интерфейс", где люди смогут обменяться опытом, поделиться мыслями, соображениями, мнениями, ссылками, статьями, какими либо примерами, cкриншотами...
Думается, если данная тема двинется, то каждый её участник сможет почерпнуть что то новое и полезное для себя.
Аватара пользователя
WAYFARER
энтузиаст
 
Сообщения: 537
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Re: Пользовательский интерфейс. Обмен опытом.

Сообщение скалогрыз » 23.01.2010 19:23:28

Очень важная вещь в интерфейсе, это время реакции! Весьмя раздражают "забелённые окна", ожидающие обработки сообщения WM_PAINT (или её аналогов)

Посему, всех призываю отказываться от Application.ProcessMessages, а использовать TThread + TTimer, где по событию таймера опрашивается состояние потока.
Код: Выделить всё
  TWorkThread = class(TThread)
  public
    procedure CancelWork;
    property Progress : Single read GetProgress; // все свойства обёрнуты в CriticalSection
    property Comment  : String read GetString;
    property WantUser: Boolean read GetWantUser;
    property WorkDone: Boolean read GetWorkDone;
  end;

  TForm1 = class(TForm)
    Timer1: TTimer;
    WorkThread : TWorkThread;
  ....

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if not Assigned(WorkThread) then Exit;
  Label1.Caption:=WorkThread.Comment;
  ProgressBar1.Position:=Round(ProgressBar1.Max*WorkThread.Progress);
  if WorkThread.WantUser then begin
    if MessageDlg(...) = mrCancel then begin
      WorkThread.CancelWork;
      Timer1.Enabled:=false;
    end;
  end;
  if Workthread.WorkDone then
    Timer1.Enabled:=false;
end;     


Это конечно, не так "весело", с точки зрения разработчика. Всех же пугали, о том, что многопоточность это страшно?! Но в итоге из программы получается просто конфетка!
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Пользовательский интерфейс. Обмен опытом.

Сообщение Climber » 23.01.2010 19:31:03

WAYFARER писал(а):Вот и мне хотелось бы получше понять концепцию построения пользовательских интерфейсов.

Почитайте эту книгу. Просто маст хэв для разработчика, который не хочет оставаться в прошлом веке.

Добавлено спустя 2 минуты 24 секунды:
P. S. books.ru - сайт издательства. Можно заказать и забрать в подвальчике на Беговой, самый дешевый вариант в Москве. Только, боюсь, все уже раскупили.
Climber
постоялец
 
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Re: Пользовательский интерфейс. Обмен опытом.

Сообщение Odyssey » 23.01.2010 22:14:35

Я бы добавил ещё ".ру/Ководство" А. Лебедева. Оно относится скорее к веб-дизайну и поэтому не вся информация оттуда будет полезной, но то что всё же окажется полезным -- довольно интересно читается и хорошо запоминается.
Odyssey
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.11.2007 17:32:24

Re: Пользовательский интерфейс. Обмен опытом.

Сообщение coyot.rush » 24.01.2010 15:54:05

скалогрыз 23.01.2010 19:23:28
Очень важная вещь в интерфейсе, это время реакции! Весьмя раздражают "забелённые окна", ожидающие обработки сообщения WM_PAINT (или её аналогов)

Согласен. От себя добавлю что ноходяться умники пишушие гуи на питоне. причем весь код кидают в обрабочики событий и прога "подвешиваеться". Обидно что так пишут в Fedor'e Mandiva и т.д . Плюс несовместимомть разный версий интерпритатора :(
Помоему,имхо, после обучения азам паскаля нужно учить потоки.

Лучшей IDE создания гуи считаю MSE. Например somewidget.face.fade.colorcount, настраиваем цвета (вроде cl_dkcyan,cl_gray) градиен (gd_up) . Красота :D
Аватара пользователя
coyot.rush
постоялец
 
Сообщения: 309
Зарегистрирован: 14.08.2009 08:59:48

Re: Пользовательский интерфейс. Обмен опытом.

Сообщение WAYFARER » 24.01.2010 16:20:50

Коротенькая, но, на мой взгляд, очень интересная статья
Реализм в дизайне пользовательских интерфейсов
Аватара пользователя
WAYFARER
энтузиаст
 
Сообщения: 537
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Re: Пользовательский интерфейс. Обмен опытом.

Сообщение скалогрыз » 24.01.2010 16:33:13

Лично я предпочитаю надпись иконке :)

Конечно, требуется перевод, и зачастую больше места, но тем неменее, смысл более ясный.
Если есть на кнопке иконка (без надписи), то лучше добавить к ней Hint.
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Пользовательский интерфейс. Обмен опытом.

Сообщение dunin » 24.01.2010 17:38:20

WAYFARER писал(а):...Так как все таки должен выглядеть хороший программный продукт? Как должны выглядеть окна программы(SDI, MDI и прочее), элементы управления, как правильно сгруппировать и расположить эти самые элементы и т.д. и т.п. ...

Вопрос, конечно, интересный. По мне, так ответ на поставленный вопрос должен начинать искаться с ответа на другой: а для чего программный продукт? К примеру никому не придет в голову делать вэб браузер или текстовый редактор с SDI интерфейсом. Равно как и среда разработки с MDI тоже будет (ИМХО) не особо удобна... Как-то так...

А по поводу иконок и кнопок, меня лично бесят две вещи: когда меню работает как кнопка и когда кнопка как меню. Например в меню написано "выход". Нажимаем в надежде, что выпадет подменю и там можно будет нажать, что требуется, а в место этого хлоп - программа закрылась. Или жмем на кнопку, но вместо результата выпадает еще "подкнопка", или как ее там назвать...

Мне думается, что хороший интерфейс обязательно должен обладать одним свойством - работать с программой можно без мыши, или наоборот - без клавиатуры. Т.е. или так или так или вместе.
Аватара пользователя
dunin
энтузиаст
 
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и

Re: Пользовательский интерфейс. Обмен опытом.

Сообщение FedeX » 24.01.2010 23:22:53

Ещё люблю, когда используют AutoHint статус бара. Ненавижу ждать по пол часа пока над какой-нибудь кнопкой появиться подсказка.
И ещё люблю, когда в приложении не используют fixed-size форм. Толи у меня клаустрафобия, но не люблю их :roll: Люблю растягивать окна как сам считаю нужным, и ожидаю, что элементы интерфейса сами подстрояться под новый размер.
И ещё... Не люблю модальные формы, точнее когда их много и особенно когда одна модальная форма вызывает другую - стараюсь проэктировать интерфейс так, чтобы таких ситуаций не возникало.
А потоки люблю..) только в примере скалогрыза, не помешало-бы добавить критических секций ..
Аватара пользователя
FedeX
постоялец
 
Сообщения: 422
Зарегистрирован: 27.03.2006 09:25:34
Откуда: украина, житомир

Re: Пользовательский интерфейс. Обмен опытом.

Сообщение AbakAngelSoft » 25.01.2010 17:21:36

Очень рекомендую Алан Купер "Психбольница в руках пациентов" и Джоэла Спольски "Руководство по UI дизайну для программистов".
А модальность должна быть вымарана из приличного приложения в любом ее виде!
Аватара пользователя
AbakAngelSoft
постоялец
 
Сообщения: 273
Зарегистрирован: 06.08.2008 19:28:26
Откуда: Краснодар

Re: Пользовательский интерфейс. Обмен опытом.

Сообщение скалогрыз » 25.01.2010 17:38:58

AbakAngelSoft писал(а):А модальность должна быть вымарана из приличного приложения в любом ее виде!

даже Open/Save диалоги? :(
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Пользовательский интерфейс. Обмен опытом.

Сообщение FedeX » 25.01.2010 18:34:36

Ну полностью модальность пока не вымараеш, но подумать о том как её минимизировать перед проектированием не помешает :wink:
Аватара пользователя
FedeX
постоялец
 
Сообщения: 422
Зарегистрирован: 27.03.2006 09:25:34
Откуда: украина, житомир

Re: Пользовательский интерфейс. Обмен опытом.

Сообщение AbakAngelSoft » 25.01.2010 18:47:51

скалогрыз писал(а):даже Open/Save диалоги?

В идеале - да.
Но модальность проявляется не только и не столько в модальных окнах. Часто весь интерфейс приложения настолько "модален", что у пользователя через пять минут работы целиком переполняется оперативная память.
Аватара пользователя
AbakAngelSoft
постоялец
 
Сообщения: 273
Зарегистрирован: 06.08.2008 19:28:26
Откуда: Краснодар

Re: Пользовательский интерфейс. Обмен опытом.

Сообщение qivi » 25.01.2010 18:53:20

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

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

3.:
А потоки люблю..) только в примере скалогрыза, не помешало-бы добавить критических секций ..


А что за критические секции? Как с ними будет выглядеть код?
Аватара пользователя
qivi
энтузиаст
 
Сообщения: 703
Зарегистрирован: 19.01.2009 13:45:54
Откуда: Россия

Re: Пользовательский интерфейс. Обмен опытом.

Сообщение Padre_Mortius » 25.01.2010 18:54:46

AbakAngelSoft писал(а):Часто весь интерфейс приложения настолько "модален", что у пользователя через пять минут работы целиком переполняется оперативная память.

ИМХО это уже проблемы освобождения ресурсов. В памяти должны быть загружены только те формы, с которыми пользователь работает
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12

Рейтинг@Mail.ru