Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.10.18;
Скачать: [xml.tar.bz2];

Вниз

"Задисейблить" системную кнопку закрытия формы   Найти похожие ветки 

 
Smile   (2009-08-16 14:03) [0]

Уважаемые мастера, в некоторые моменты работы приложения (в частности открытые запросы или датасеты, ну и пр.) запрещаю его закрытие вот таким образом:

SysMenu := GetSystemMenu(Handle, False);
Windows.EnableMenuItem(SysMenu, SC_CLOSE, MF_DISABLED);


При компиляции под D5 все нормально, однако под D2009 системная кнопка закрытия не "дисейблится".
Подскажите, возможно ли каким либо другим способом, осуществить это под D2009?


 
KilkennyCat ©   (2009-08-16 14:18) [1]

а почему просто не обработать событие разрешения закрытия?


 
Alarm ©   (2009-08-16 14:31) [2]

> KilkennyCat ©   (16.08.09 14:18) [1]
> а почему просто не обработать событие разрешения закрытия?
>

На мой взгляд это будет сложнее. То есть необходимо будет проверять достаточно большое количество условий. Мне кажется, что совершая какую либо "операцию" (запрещая при этом закрытие приложения) и давая разрешение при завершении этой "операции" выглядит более логичным.
Хотя ...


 
KilkennyCat ©   (2009-08-16 14:37) [3]

Конечно. Гораздо проще задисэйблить. Начнем с кнопки. Потом задисейблим Альт+Ф4. Потом Ctrl+alt+del. Потом кнопку "Пуск". Потом повербуттон на системнике. успокоимся при попытке задисэйблить резет.


 
KilkennyCat ©   (2009-08-16 14:38) [4]

Причем, условие задисэйбливания, похоже, оказывается проще проверки CanClose. Блеск.


 
Smile   (2009-08-16 14:44) [5]

А вот с CanClose действительно красиво.
Не додумался:(


 
Anatoly Podgoretsky ©   (2009-08-16 15:33) [6]

> KilkennyCat  (16.08.2009 14:37:03)  [3]

Не надо успокаиваться на Reset - уже есть программные, и даже на кабели питания тоже не стоит, поскольку есть встроеные UPS


 
antonn ©   (2009-08-16 16:05) [7]


> а почему просто не обработать событие разрешения закрытия?

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


 
KilkennyCat ©   (2009-08-16 17:14) [8]


> потому что интерфейс должен показывать то, что он может
> обрабатывать.

это где такой бред написан? или сами придумали?


 
Loginov Dmitry ©   (2009-08-16 18:06) [9]

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


Пользователь хочеть закрыть окно, он не понимает, что в окне
есть какие-то открытые датасеты и запросы и пр., крестик
задисейблен, закрыть окно нельзя. Что делать пользователю?
Как дать ему понять, что нужно сперва закрыть запрос, датасет и пр.?


 
antonn ©   (2009-08-16 18:17) [10]


> это где такой бред написан?

там, где ты его не читал, разумеется.


> Loginov Dmitry ©   (16.08.09 18:06) [9]

если в это время идет запрос и появляется окошко в котором написано "обработка данных" то было бы логично встроить туда функцию "прервать".
Я не говорю за все случаи.


 
TIF ©   (2009-08-16 21:08) [11]

> однако под D2009 системная кнопка закрытия не "дисейблится"

Проверил код под Delphi 2009/2010
Всё отлично работает. ОС Windows Vista

М?


 
Smile   (2009-08-17 09:15) [12]

> Проверил код под Delphi 2009/2010
> Всё отлично работает. ОС Windows Vista

У меня XP
:(


 
Leonid Troyanovsky ©   (2009-08-17 09:26) [13]


> antonn ©   (16.08.09 16:05) [7]

> потому что интерфейс должен показывать то, что он может

Для показывать нужен MF_GRAYED.

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2009-08-17 09:29) [14]


> KilkennyCat ©   (16.08.09 14:37) [3]

> Конечно. Гораздо проще задисэйблить. Начнем с кнопки. Потом
> задисейблим Альт+Ф4.

Затем меню (окна) Application вместе с его Альт+Ф4..

--
Regards, LVT.


 
TIF ©   (2009-08-18 23:05) [15]

> У меня XP

Точно? А почему в шапке темы написано что Windows 2003 Server?

> [D5, 2003]


Сейчас специально проверю в виртуальной XP :) Даже скриншот выложу. Мне почему-то кажется что всё получится и там...


 
TIF ©   (2009-08-18 23:17) [16]

http://pinpic.ru/img/1483/02bbc0593bd7f1afbf7c1c0d1308535d.jpg.html

Более того - под XP этот код сразу и отключает "крестик" (под Vista - только затемняет и делает некликабельным)

Скомпилировал два exe-шника: под Delphi 2009 и под Delphi 2010. Нормлаьно работают оба...

Вот код кнопки, которая нажималась:
var SysMenu: Cardinal;
begin
 SysMenu := GetSystemMenu(Handle, False);
 Windows.EnableMenuItem(SysMenu, SC_CLOSE, MF_DISABLED);
end;


Уж не знаю, где ошибка, то среда разработки и компилятор тут точно не замешаны. Хотя стоп. У меня стоит Update 3 для D2009. Последний шанс - установить его, если это ещё не сделано, и проверить )))


 
KilkennyCat ©   (2009-08-18 23:25) [17]

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


 
Kolan ©   (2009-08-18 23:43) [18]

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

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

1. Формирование цели.
2. Формирование намерения.
3. Определение необходимых действий.
4. Исполнение действий.
5. Восприятия состояния окружающего пространства.
6. Интерпретация окружающего пространства.
7. Оценка результатов действия.
Подробнее про это есть в моем блоге (http://ksoftware.ya.ru/replies.xml?item_no=1877).

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

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

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

Другое дело, что в данном случае, с кнопкой закрытия, все сложнее. Не понятно как и где объяснять почему она не работает и что делать, если хочется закрыть окно.

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

Автор, озвучьте задачу пожалуйста.


 
KilkennyCat ©   (2009-08-19 00:09) [19]


> Kolan © (18.08.09 23:43) [18]

Многа буков.

Интерфейс не должен ввергать пользователя в ступор. Он должен быть логичен и удобен. Этот крестик всегда был для закрытия. Независимо ни от чего. И если закрыть нельзя, потому что что-то там не так, то об этом сообщается.
Умные слова, типа
> 5. Восприятия состояния окружающего пространства.

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


 
TIF ©   (2009-08-19 00:09) [20]

Кстати, окошечко с обратным отсчётом "завершение работы системы" (shutdown) как раз с disable-крестиком )


 
KilkennyCat ©   (2009-08-19 00:20) [21]


> TIF © (19.08.09 00:09) [20]

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


 
Kolan ©   (2009-08-19 00:23) [22]

Жаль, что вы столько лет потратили зря, ведь дело не в «юзверях», как вы их называете, это интерфейсы тех программ, что «юзвери», а на самом деле обычные люди, плохие и не понятные.

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


 
KilkennyCat ©   (2009-08-19 01:02) [23]


> Kolan © (19.08.09 00:23) [22]

что такое "априори"?


 
brother ©   (2009-08-19 05:57) [24]

> что такое "априори"?

http://ru.wikipedia.org/wiki/%D0%90%D0%BF%D1%80%D0%B8%D0%BE%D1%80%D0%B8
Априо?ри (лат. a priori — буквально «от предшествующего») — знание, полученное до опыта и независимо от него (знание априори, априорное знание). Этот философский термин получил важное значение в теории познания и логике благодаря Канту. Идея знания априори связана с представлением о внутреннем источнике активности мышления. Учение, признающее знание априори, называется априоризмом. Противоположностью априори является апостериори (лат. a posteriori — от последующего) — знание, полученное из опыта (опытное знание). В современной философии априори (как и апостериори) считается видом дескриптивного знания.


 
brother ©   (2009-08-19 06:00) [25]

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


 
Kolan ©   (2009-08-19 09:26) [26]

Априори = к гадалке не ходи. То есть получится: Спор я проиграю, к гадалке не ходи...

:)


 
KilkennyCat ©   (2009-08-19 10:54) [27]


> Kolan © (19.08.09 09:26) [26]

ну так, так бы и сказал. нафига усложнять?


 
Kolan ©   (2009-08-19 11:10) [28]

Не думал, что это слово может вызвать затруднения.


 
Andy BitOff ©   (2009-08-19 11:32) [29]


> Kolan ©   (18.08.09 23:43) [18]
> Не понятно как и где объяснять почему она не работает и что делать, если
> хочется закрыть окно.

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


 
Kolan ©   (2009-08-19 11:44) [30]

Хинт — хорошее решение, наверняка он окажется в локусе внимания.

А интересно, почему программу бывает нельзя закрыть?


 
Anatoly Podgoretsky ©   (2009-08-19 11:58) [31]

> Kolan  (19.08.2009 11:44:30)  [30]

Ну допустим идет форматирование винчестера или подготовка чего то, чего недопустимо прерывать.
У меня на одном из серверов даже кнопка RESET блокируется в подобных случаях.


 
Inovet ©   (2009-08-19 13:21) [32]

> [31] Anatoly Podgoretsky ©   (19.08.09 11:58)
> У меня на одном из серверов даже кнопка RESET блокируется
> в подобных случаях.

Ничего се, это уже и не ресет получается.


 
Kolan ©   (2009-08-19 13:29) [33]

Не убедительный пример. Форматирование диска можно прервать даже в Виндоусе. Более того это процесс можно даже на паузу поставить.

Блокирование кнопки Ресета мне кажется таким же бессмысленны как и запрещение закрытия программы. А вдруг свет выключат и что тогда?
— А надо бесперебойник иметь!
— А свет вырубили 7 часов назад...

То есть я считаю, что такой подход по сути плох. Лучше сделать так, чтобы при закрытии работа сохранялась сама, а потом её можно было бы продолжить.

Пример того, «чего недопустимо прерывать» еще жду.


 
Andy BitOff ©   (2009-08-19 13:43) [34]

У меня есть процесс, который длится очень долго, в зависимости от входных значений может длится до получаса (еще и от мощностей зависит), так вот я не даю закрыть программу юзеру, пока он не нажмет кнопку "Остановит процесс", о чем честно ему и сообщаю. Если он решил закончить, то пусть сознательно остановит процесс и потом не жалуется. А то есть юзеры (коих много на моей памяти), которые не пользуются кнопкой свернуть, а пользуются кнопкой закрыть. Но у нас не КПК, где приложения уходят в фон.


 
Kolan ©   (2009-08-19 13:57) [35]

А если я нажму питание, программа не даст Виндоусу выключится?


 
Anatoly Podgoretsky ©   (2009-08-19 13:58) [36]

> Kolan  (19.08.2009 13:29:33)  [33]

Я вспомнил более точно, это был серверный раид и не все операции допустимо прерывать, например перепрошивка БИОС


 
Anatoly Podgoretsky ©   (2009-08-19 14:07) [37]

Кнопка питания уже давно программная, а кнопку Reset я встретил уже на двух машинах, на серверах Интел и на ноутбуках НР определенных моделей. И при некоторых операциях блокируются обе. А питание можно выключить или клавишей на блоке питания или выдергиванием шнура питания. Для некоторых операциях с BMC/FRU недостаточно выключения питания кнопкой или сброса, а требуется физическое отключение.

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


 
Andy BitOff ©   (2009-08-19 14:07) [38]


> Kolan ©   (19.08.09 13:57) [35]

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


 
Kolan ©   (2009-08-19 14:15) [39]

Andy BitOff, так а что в этом случае будет с длительным процессом? Он прервется? Если да, то выходит случайная ошибка все равно возможна и необратима.


 
Andy BitOff ©   (2009-08-19 14:18) [40]

Тогда он прервется по "Остановить процесс" и программа завершится. Но это уже не моя проблема. Необратимого в данном случае ничего нет, просто придется начинать с начала.


 
Andy BitOff ©   (2009-08-19 14:25) [41]

Я не могу обеспечить всем вселенское счастье, но могу оградить неумелого юзера, от опрометчивых поступков.


 
Kolan ©   (2009-08-19 14:36) [42]

Получается что дисэйбление кнопки закрытия виляет только на вероятность возникновения ошибки, причем неизвестно как. Видимо с БИОСом тоже самое примерно.

Я сильно не настаиваю, общего хорошего решения наверно не существует.

Просто часто ребята лепят формы типа «А вы уверены что хотите... ?» и не понимают, что это почти всегда плохо и что от формы можно избавится.


 
Leonid Troyanovsky ©   (2009-08-19 14:52) [43]


> Andy BitOff ©   (19.08.09 13:43) [34]

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

Не очень понятно, чем эти полчаса юзер занимается.
Могу предположить два варианта: вводит для оной программы
доп.данные или, ожидая результатов, режется в сапера.

В первом случае юзер, все равно, не простит автора, если его
кропотливая работа пропала даром (даже если э/п выключили).

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

--
Regards, LVT.


 
Anatoly Podgoretsky ©   (2009-08-19 15:06) [44]

> Kolan  (19.08.2009 14:36:42)  [42]

> «А вы уверены что хотите... ?»

Поубивал бы


 
Kolan ©   (2009-08-19 15:11) [45]

Или, Леонид, например выполнять работу в фоне, свернувшись, прости Господи, в трей. Хорошо бы только на случай отрубания питания иметь кнопку «продолжить то, что делалось».


 
Andy BitOff ©   (2009-08-19 15:12) [46]


> Leonid Troyanovsky ©   (19.08.09 14:52) [43]

Именно второй случай. Он волен заниматься чем хочет.
Не совсем понял, что за дополнительная кнопка... Мы же, вроде, про отлючение возможности клиикнуть по крестику в углу формы. Если он попадет туда случайно, то ничего потеряно не будет.
В той задаче по уму надо было делать другое. Надо было делать другую структуру хранения входных данных. Но... Как всегда но. Данные есть, структура их самих (данных) ужастна, структура их хранения не оптимальна, но разрабатывалась еще в 94 году и с того времени пополнялась и поддерживалась. И т.д. и т.п.
В общем с чем дали с тем и работали.


 
Anatoly Podgoretsky ©   (2009-08-19 15:16) [47]

> Leonid Troyanovsky  (19.08.2009 14:52:43)  [43]

А чтобы не резался, запрещать клавиатуру и мышь.


 
Andy BitOff ©   (2009-08-19 15:21) [48]


> Kolan ©   (19.08.09 15:11) [45]

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

Вот вспомнил реальный случай. Пришел к юзеру. Давай, говорю, полную проверку включай, посмотрим. Запускает. Я говорю, ладно, покажи мне пока то-то и то-то... Перед ним окно с процессом проверки. Кликает крест. Хинт. Недоумение. Я говорю, не надо закрывать, сверни. Вот вам и реальная история.


 
Kolan ©   (2009-08-19 15:22) [49]


> В той задаче по уму надо было делать другое.

По другому наверно :)

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


 
Andy BitOff ©   (2009-08-19 15:29) [50]


> Kolan ©   (19.08.09 15:22) [49]
> Правильно ли я понял

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


 
Leonid Troyanovsky ©   (2009-08-19 15:34) [51]


> Andy BitOff ©   (19.08.09 15:12) [46]

> Не совсем понял, что за дополнительная кнопка...

Которая "Убить процесс", она ж разрешает закрытие по крестику.

> Andy BitOff ©   (19.08.09 15:21) [48]

> говорю, не надо закрывать, сверни.

Ну сделай для таких настройку: крестиком - сворачивать (в трей :)

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2009-08-19 15:41) [52]


> Anatoly Podgoretsky ©   (19.08.09 15:16) [47]

> А чтобы не резался, запрещать клавиатуру и мышь.

Чего-то уж давненько не спрашивали про оное.

--
Regards, LVT.


 
Andy BitOff ©   (2009-08-19 15:42) [53]


> Leonid Troyanovsky ©   (19.08.09 15:34) [51]
>  Которая "Убить процесс", она ж разрешает закрытие по крестику.

В эту кнопку сложно попасть случайно ;)


> Ну сделай для таких настройку: крестиком - сворачивать (в трей :)

А вот это действительно интересно. Как-то не подумал. Но не в трей, а просто minimize. Но это опять же блокировка закрытия. То, о чем мы тут и говорим.


 
Leonid Troyanovsky ©   (2009-08-19 16:04) [54]


> Andy BitOff ©   (19.08.09 15:42) [53]

> не в трей, а просто minimize. Но это опять же блокировка
> закрытия.

Но, это уже осознанный выбор, особенно хорошо, если настраивать
будет админ, уже не отмажешься :)

Ну, и там тоже не просто minimize, надо еще корректно обработать
WM_QUERYENDSESSION.

--
Regards, LVT.


 
Andy BitOff ©   (2009-08-19 16:08) [55]


> Leonid Troyanovsky ©   (19.08.09 16:04) [54]
> надо еще корректно обработать WM_QUERYENDSESSION.

Ну, это само-собой ;)


 
Kolan ©   (2009-08-19 16:20) [56]

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


 
MonoLife ©   (2009-08-19 16:21) [57]

Лично, мне не очень нравится, когда стандартный виндовый функционал переделывают на иной: раз "крестик" - значит "закрыть", а не "свернуть", "скрыть" и т.п....
Я бы полностью согласился с > Andy BitOff ©   (19.08.09 13:43) [34], но, прочитав > Leonid Troyanovsky ©   (19.08.09 14:52) [43] задумался..
Все же, надо исходить от важности задач... Если прерывание длительного процесса чревато, то лучше пользователя заранее предупредить о том, что процесс прерывать нельзя под страхом смерти и уже после убрать из поля видимости любимый ими крестик, ну, и заблокировать что только можно, как > Anatoly Podgoretsky ©   (19.08.09 11:58) [31]

И еще, обычные пользователи не любят читать, особенно, то, что им пишет система (или собственная программа, я познал это на своем опыте), они клацают Enter не читая. Поэтому везде, где "Да" - чревато, активной делаю кнопку "Нет":)


 
Anatoly Podgoretsky ©   (2009-08-19 16:32) [58]

> Leonid Troyanovsky  (19.08.2009 15:41:52)  [52]

Уже стали Махоткина забывать


 
Leonid Troyanovsky ©   (2009-08-19 16:32) [59]


> Kolan ©   (19.08.09 16:20) [56]

> много хуже варианта с хинтом, это дезинформация. Хотя смайлик
> всё объясняет.

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

Вот, некоторые, например, предпочитают Enter vs Tab, чего им
твои лекции об оной неправильности с точки зрения MS.

--
Regards, LVT.


 
Kolan ©   (2009-08-19 16:34) [60]


> И еще, обычные пользователи не любят читать, особенно, то,
>  что им пишет система (или собственная программа, я познал
> это на своем опыте), они клацают Enter не читая. Поэтому
> везде, где "Да" - чревато, активной делаю кнопку "Нет":)

Хорошая программа вообще вредных действий по умолчанию не должна предлагать.

Вы сделали хорошее наблюдение, но неправильный вывод. Люди так же быстро научаются жать Нет, Да, Закрыть или ЧтоУгодно, поэтому ваше решение не надёжное.

Если изучить ошибки, которые допускают люди, а их несколько видов, то можно дать два совета:

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


 
Anatoly Podgoretsky ©   (2009-08-19 16:34) [61]

> MonoLife  (19.08.2009 16:21:57)  [57]

Фи как ограничено, надо просто оставить только кнопку НЭТ


 
Kolan ©   (2009-08-19 16:36) [62]


> чего им
> твои лекции об оной неправильности с точки зрения MS

Где это я читал такие лекции? Особенно про точку зрения МС?


 
Leonid Troyanovsky ©   (2009-08-19 16:41) [63]


> MonoLife ©   (19.08.09 16:21) [57]

> 13:43) [34], но, прочитав > Leonid Troyanovsky ©   (19.08.
> 09 14:52) [43] задумался..

Классно, когда твои сообщения заставляют задуматься.
Я аж перечитал, чего такого умного сообщил :)

> предупредить о том, что процесс прерывать нельзя под страхом
> смерти и уже после убрать из поля видимости любимый ими
> крестик

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

> ну, и заблокировать что только можно, как > Anatoly
> Podgoretsky ©   (19.08.09 11:58) [31]

Это Анатолий шутит.

--
Regards, LVT.


 
MonoLife ©   (2009-08-19 16:46) [64]


> Вы сделали хорошее наблюдение, но неправильный вывод. Люди
> так же быстро научаются жать Нет, Да, Закрыть или ЧтоУгодно,
>  поэтому ваше решение не надёжное.
>

Я и не говорил что мое решение надёжное)) и пришел я к этим выводам не за год... У меня, просто, так сложилось, за 4 года круг моих подопечных пользователей различными приложениями особо не изменился, и наблюдения мои не голословные..
Опять же, зависит от цели...можно все равно подвести какой-то итог за многолетние пользование виндой.. Большинство программ, в диалоге которых предлагается выполнить какое-то необратимое действие, но требуемое пользователю (к примеру, удалить что-нить) "подставят под Enter", в первую очередь кнопку "Нет"... А кнопку Esc для "Отмена".. Что бы юзер "7 раз отмерил, прежде, чем что-то отрезать"..


 
Leonid Troyanovsky ©   (2009-08-19 16:46) [65]


> Kolan ©   (19.08.09 16:36) [62]

> Где это я читал такие лекции? Особенно про точку зрения
> МС?

Крестик для закрытия (твое).
Ентер против таб (мое).

Доктор сказал:  в морг, значит - в морг.

Ты, чего не в курсе, какие клавиши за что отвечают в приложениях by MS?

--
Regards, LVT.


 
Anatoly Podgoretsky ©   (2009-08-19 16:48) [66]

> Kolan  (19.08.2009 16:34:00)  [60]

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


 
Anatoly Podgoretsky ©   (2009-08-19 16:49) [67]

> Leonid Troyanovsky  (19.08.2009 16:41:03)  [63]

Леонид я не шучу.


 
Anatoly Podgoretsky ©   (2009-08-19 16:51) [68]

> Leonid Troyanovsky  (19.08.2009 16:46:05)  [65]

Кстати кнопка вредная и в некоторых компьютерах брендов ее нет, это они подчеркивают, что наши компьютеры настолько хороши, что им кнопка RESET не нужна. И это тоже не шутка.


 
Leonid Troyanovsky ©   (2009-08-19 16:52) [69]


> Anatoly Podgoretsky ©   (19.08.09 16:49) [67]

> Леонид я не шучу.

Это я сразу просек: в каждой шутке есть доля шутки.
Ну, и за меня не беспокойся :)

--
Regards, LVT.


 
Anatoly Podgoretsky ©   (2009-08-19 16:54) [70]

Запрет кнопки имеет право на существование, но пользователям это не указ.


 
Kolan ©   (2009-08-19 16:54) [71]

Что-то я не пойму о чем речь, если честно

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


 
MonoLife ©   (2009-08-19 16:58) [72]


> Лучше давайте про крестик

или крестик на теме))


 
Kolan ©   (2009-08-19 17:02) [73]

Или на теме.

Я лично считаю, что решение Andy с дисэйблением и хинтом можно советовать автору, пока не сообщено подробностей конкретной задачи.


 
MonoLife ©   (2009-08-19 17:11) [74]


> пользователей не пользуются клавиатурой и им пофигу ухищрения
> с кнопками по умолчанию

это да, к сожалению...
от крестика надо как-то избавляться))


 
Andy BitOff ©   (2009-08-19 19:05) [75]

> Kolan ©   (19.08.09 17:02) [73]
> с дисэйблением и хинтом

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


 
Anatoly Podgoretsky ©   (2009-08-19 20:42) [76]

> MonoLife  (19.08.2009 17:11:14)  [74]

Выкоривать надо, отверткой.



Страницы: 1 2 вся ветка

Форум: "Начинающим";
Текущий архив: 2009.10.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.68 MB
Время: 0.008 c
15-1249653864
Kerk
2009-08-07 18:04
2009.10.18
WiFI в Питере


2-1250337245
Чипырик
2009-08-15 15:54
2009.10.18
Вопрос по БД


2-1250322712
Ulugbek
2009-08-15 11:51
2009.10.18
Помогите как вставить кнопка в ячейке Dbgrid?


2-1250244758
fedor-dveniatin
2009-08-14 14:12
2009.10.18
Курсор мыши больше чем 32х32


15-1250351901
Холивар
2009-08-15 19:58
2009.10.18
Вопрос по вебкамере(разрешениям)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский