Пользовательский интерфейс. Обмен опытом.
Модератор: Модераторы
Пользовательский интерфейс. Обмен опытом.
Так сложились обстоятельства, что мне в данный момент приходится думать об этом, в этот раз я решил подойти к этому вопросу очень критично, и, как оказалось, моего опыта и знаний недостаточно.
Думаю каждый разработчик сталкивался с проблемой проектирования GUI.
Вот и мне хотелось бы получше понять концепцию построения пользовательских интерфейсов.
Я понимаю, что для эффективного взаимодействия пользователя с программой интерфейс должен прост, интуитивно понятен, и в то же время привлекателен, иначе, как оказывается в большинстве случаев, какой бы функциональной программа не была, особого успеха она иметь не будет. Так как все таки должен выглядеть хороший программный продукт? Как должны выглядеть окна программы(SDI, MDI и прочее), элементы управления, как правильно сгруппировать и расположить эти самые элементы и т.д. и т.п. Собственно это целая наука.
Я предлагаю в данной теме устроить этакий небольшой "семинар" на тему "Пользовательский интерфейс", где люди смогут обменяться опытом, поделиться мыслями, соображениями, мнениями, ссылками, статьями, какими либо примерами, cкриншотами...
Думается, если данная тема двинется, то каждый её участник сможет почерпнуть что то новое и полезное для себя.
Думаю каждый разработчик сталкивался с проблемой проектирования GUI.
Вот и мне хотелось бы получше понять концепцию построения пользовательских интерфейсов.
Я понимаю, что для эффективного взаимодействия пользователя с программой интерфейс должен прост, интуитивно понятен, и в то же время привлекателен, иначе, как оказывается в большинстве случаев, какой бы функциональной программа не была, особого успеха она иметь не будет. Так как все таки должен выглядеть хороший программный продукт? Как должны выглядеть окна программы(SDI, MDI и прочее), элементы управления, как правильно сгруппировать и расположить эти самые элементы и т.д. и т.п. Собственно это целая наука.
Я предлагаю в данной теме устроить этакий небольшой "семинар" на тему "Пользовательский интерфейс", где люди смогут обменяться опытом, поделиться мыслями, соображениями, мнениями, ссылками, статьями, какими либо примерами, cкриншотами...
Думается, если данная тема двинется, то каждый её участник сможет почерпнуть что то новое и полезное для себя.
Очень важная вещь в интерфейсе, это время реакции! Весьмя раздражают "забелённые окна", ожидающие обработки сообщения WM_PAINT (или её аналогов)
Посему, всех призываю отказываться от Application.ProcessMessages, а использовать TThread + TTimer, где по событию таймера опрашивается состояние потока.
Это конечно, не так "весело", с точки зрения разработчика. Всех же пугали, о том, что многопоточность это страшно?! Но в итоге из программы получается просто конфетка!
Посему, всех призываю отказываться от 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;
Это конечно, не так "весело", с точки зрения разработчика. Всех же пугали, о том, что многопоточность это страшно?! Но в итоге из программы получается просто конфетка!
WAYFARER писал(а):Вот и мне хотелось бы получше понять концепцию построения пользовательских интерфейсов.
Почитайте эту книгу. Просто маст хэв для разработчика, который не хочет оставаться в прошлом веке.
Добавлено спустя 2 минуты 24 секунды:
P. S. books.ru - сайт издательства. Можно заказать и забрать в подвальчике на Беговой, самый дешевый вариант в Москве. Только, боюсь, все уже раскупили.
Я бы добавил ещё ".ру/Ководство" А. Лебедева. Оно относится скорее к веб-дизайну и поэтому не вся информация оттуда будет полезной, но то что всё же окажется полезным -- довольно интересно читается и хорошо запоминается.
- coyot.rush
- постоялец
- Сообщения: 309
- Зарегистрирован: 14.08.2009 08:59:48
скалогрыз 23.01.2010 19:23:28
Очень важная вещь в интерфейсе, это время реакции! Весьмя раздражают "забелённые окна", ожидающие обработки сообщения WM_PAINT (или её аналогов)
Согласен. От себя добавлю что ноходяться умники пишушие гуи на питоне. причем весь код кидают в обрабочики событий и прога "подвешиваеться". Обидно что так пишут в Fedor'e Mandiva и т.д . Плюс несовместимомть разный версий интерпритатора
Помоему,имхо, после обучения азам паскаля нужно учить потоки.
Лучшей IDE создания гуи считаю MSE. Например somewidget.face.fade.colorcount, настраиваем цвета (вроде cl_dkcyan,cl_gray) градиен (gd_up) . Красота
Коротенькая, но, на мой взгляд, очень интересная статья
Реализм в дизайне пользовательских интерфейсов
Реализм в дизайне пользовательских интерфейсов
Лично я предпочитаю надпись иконке
Конечно, требуется перевод, и зачастую больше места, но тем неменее, смысл более ясный.
Если есть на кнопке иконка (без надписи), то лучше добавить к ней Hint.
Конечно, требуется перевод, и зачастую больше места, но тем неменее, смысл более ясный.
Если есть на кнопке иконка (без надписи), то лучше добавить к ней Hint.
- dunin
- энтузиаст
- Сообщения: 634
- Зарегистрирован: 02.05.2007 13:18:11
- Откуда: Тољя††и
- Контактная информация:
WAYFARER писал(а):...Так как все таки должен выглядеть хороший программный продукт? Как должны выглядеть окна программы(SDI, MDI и прочее), элементы управления, как правильно сгруппировать и расположить эти самые элементы и т.д. и т.п. ...
Вопрос, конечно, интересный. По мне, так ответ на поставленный вопрос должен начинать искаться с ответа на другой: а для чего программный продукт? К примеру никому не придет в голову делать вэб браузер или текстовый редактор с SDI интерфейсом. Равно как и среда разработки с MDI тоже будет (ИМХО) не особо удобна... Как-то так...
А по поводу иконок и кнопок, меня лично бесят две вещи: когда меню работает как кнопка и когда кнопка как меню. Например в меню написано "выход". Нажимаем в надежде, что выпадет подменю и там можно будет нажать, что требуется, а в место этого хлоп - программа закрылась. Или жмем на кнопку, но вместо результата выпадает еще "подкнопка", или как ее там назвать...
Мне думается, что хороший интерфейс обязательно должен обладать одним свойством - работать с программой можно без мыши, или наоборот - без клавиатуры. Т.е. или так или так или вместе.
Ещё люблю, когда используют AutoHint статус бара. Ненавижу ждать по пол часа пока над какой-нибудь кнопкой появиться подсказка.
И ещё люблю, когда в приложении не используют fixed-size форм. Толи у меня клаустрафобия, но не люблю их
Люблю растягивать окна как сам считаю нужным, и ожидаю, что элементы интерфейса сами подстрояться под новый размер.
И ещё... Не люблю модальные формы, точнее когда их много и особенно когда одна модальная форма вызывает другую - стараюсь проэктировать интерфейс так, чтобы таких ситуаций не возникало.
А потоки люблю..) только в примере скалогрыза, не помешало-бы добавить критических секций ..
И ещё люблю, когда в приложении не используют fixed-size форм. Толи у меня клаустрафобия, но не люблю их
И ещё... Не люблю модальные формы, точнее когда их много и особенно когда одна модальная форма вызывает другую - стараюсь проэктировать интерфейс так, чтобы таких ситуаций не возникало.
А потоки люблю..) только в примере скалогрыза, не помешало-бы добавить критических секций ..
- AbakAngelSoft
- постоялец
- Сообщения: 273
- Зарегистрирован: 06.08.2008 19:28:26
- Откуда: Краснодар
- Контактная информация:
Очень рекомендую Алан Купер "Психбольница в руках пациентов" и Джоэла Спольски "Руководство по UI дизайну для программистов".
А модальность должна быть вымарана из приличного приложения в любом ее виде!
А модальность должна быть вымарана из приличного приложения в любом ее виде!
AbakAngelSoft писал(а):А модальность должна быть вымарана из приличного приложения в любом ее виде!
даже Open/Save диалоги?
Ну полностью модальность пока не вымараеш, но подумать о том как её минимизировать перед проектированием не помешает 
- AbakAngelSoft
- постоялец
- Сообщения: 273
- Зарегистрирован: 06.08.2008 19:28:26
- Откуда: Краснодар
- Контактная информация:
скалогрыз писал(а):даже Open/Save диалоги?
В идеале - да.
Но модальность проявляется не только и не столько в модальных окнах. Часто весь интерфейс приложения настолько "модален", что у пользователя через пять минут работы целиком переполняется оперативная память.
1. А чем так плохо окно фиксированного размера? Речь не идёт же обо всех окнах подряд, но есть элементы приложения которые лучьще что б имели фиксированный размер окна?
2. А "вымарать" модальность для меня вообще откровением стало, нет кучу форточек аш глаза разбегаются я и сам не люблю но использование модульных окон с умом делает приложение более удобным, структурированным, более нативно понятным пользователю... а категорический отказ от них в графическом приложении чуть больше маленькой утилитки приведёт к хаусу...
3.:
А что за критические секции? Как с ними будет выглядеть код?
2. А "вымарать" модальность для меня вообще откровением стало, нет кучу форточек аш глаза разбегаются я и сам не люблю но использование модульных окон с умом делает приложение более удобным, структурированным, более нативно понятным пользователю... а категорический отказ от них в графическом приложении чуть больше маленькой утилитки приведёт к хаусу...
3.:
А потоки люблю..) только в примере скалогрыза, не помешало-бы добавить критических секций ..
А что за критические секции? Как с ними будет выглядеть код?
-
Padre_Mortius
- энтузиаст
- Сообщения: 1265
- Зарегистрирован: 29.05.2007 17:38:07
- Откуда: Спб
AbakAngelSoft писал(а):Часто весь интерфейс приложения настолько "модален", что у пользователя через пять минут работы целиком переполняется оперативная память.
ИМХО это уже проблемы освобождения ресурсов. В памяти должны быть загружены только те формы, с которыми пользователь работает
