Форум: "Основная";
Текущий архив: 2011.07.10;
Скачать: [xml.tar.bz2];
ВнизКак запретить обработку любых действий пользователя? Найти похожие ветки
← →
Суслик_ (2009-11-12 15:00) [0]Здравствуйте.
Как запретить обработку любых действий пользователя?
Под действиями понимается кликанье мышкой по кнопкам и горячие клавиши.
Задача в том, чтобы на время работы Application.ProcessMessages не дать пользователю ничего такого нажать - например, ту же alt+f4.
← →
Сергей М. © (2009-11-12 15:02) [1]
> не дать пользователю ничего такого нажать
Чтобы он ничего не нажимал, надо отобрать у него все кнопки)
> на время работы Application.ProcessMessages
Можно подумать, что тебя кто-то заставляет вызывать этот метод..
← →
Суслик_ (2009-11-12 15:05) [2]Сергей, ну есть какая-то такая глобальная штука на все программу (это MDI с горой открытых окно, Action и в главной форме и в ребенке), чтобы так
DenyAllActions();
try
...
Application.ProcessMessages();
...
finally
AllowAllActions();
end;
?
← →
Дмитрий Белькевич (2009-11-12 15:41) [3]Я у себя вывешиваю онтоповый сплэш - ждите...
← →
Игорь Шевченко © (2009-11-12 16:13) [4]DisableTaskWindows/EnableTaskWindows ?
← →
Суслик_ (2009-11-12 18:47) [5]Спасибо, Игорь. Обязательно почитаю, когда найду справку по этой функции.
У тебя, случаем, нет? Можешь кинешь копию из справки? В D2007 она не описана вообще )
← →
Игорь Шевченко © (2009-11-12 20:40) [6]Суслик_ (12.11.09 18:47) [5]
RTFS: Forms.pas
← →
Юрий Зотов © (2009-11-13 09:15) [7]> Суслик
Возможно, это:
function BlockInput(fBlockIt: BOOL): BOOL; stdcall; external user32 name "BlockInput";
procedure TForm1.Timer1Timer(Sender: TObject); // Interval = 5000
const
Colors: array[boolean] of TColor = (clGreen, clRed);
begin
FInputBlocked := not FInputBlocked; // Поле формы
Color := Colors[FInputBlocked]; // Изначально Color = clGreen
BlockInput(FInputBlocked) // Оп-ля!
end;
← →
oxffff © (2009-11-13 09:37) [8]Отрубить пользователю руки и ноги.
← →
Суслик_ (2009-11-13 10:32) [9]Спасибо, посмотрю.
← →
Плохиш © (2009-11-13 13:21) [10]
> DisableTaskWindows/EnableTaskWindows ?
http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/Forms_DisableTaskWindows@HWnd.html
Description
This is function Forms.DisableTaskWindows.
Рыдал...
← →
Anatoly Podgoretsky © (2009-11-13 20:35) [11]> Плохиш (13.11.2009 13:21:10) [10]
Это еще ничего, хуже так
По данному вопросу справки нет, сходите на Вики за подробной справкой, а там По данному вопросу справки нет
← →
oldman © (2009-11-14 00:12) [12]
> oxffff © (13.11.09 09:37) [8]
> Отрубить пользователю руки и ноги.
>
> Суслик_ (13.11.09 10:32) [9]
> Спасибо, посмотрю
Может не надо?
← →
MemoryLeak (2009-11-14 01:11) [13]Юрий Зотов, и часто вы это используете ? :)
← →
Anatoly Podgoretsky © (2009-11-14 12:43) [14]> MemoryLeak (14.11.2009 01:11:13) [13]
Вот настолько часто
http://www.podgoretsky.com/Redir.aspx?id=212&DownloadFile=~/ddp/chaos.aspx
← →
Наиль © (2009-11-14 19:47) [15]> [0] Суслик_ (12.11.09 15:00)
> Здравствуйте.
>
> Как запретить обработку любых действий пользователя?
> Под действиями понимается кликанье мышкой по кнопкам и горячие
> клавиши.
> Задача в том, чтобы на время работы Application.ProcessMessages
Простейшее решение:
Разместить на форме панель (alClient), а всё остальное на ней.
Перед началом цикла делаем панель.enabled:=false, а после наоборот.
> не дать пользователю ничего такого нажать - например, ту
> же alt+f4.
OnCloseQuery?
← →
имя (2009-11-15 02:58) [16]Удалено модератором
← →
TDelphi © (2009-11-16 06:57) [17]Зачем, что-либо размещать? Просто MainForm.Enabled := False;
← →
brother © (2009-11-16 07:43) [18]согласен с [3] ибо блокировать ВСЕ - это паранойя
как вариант: твоя прога все заболкировала... и умерла, угадай, о чем думает пользователь? ;)
← →
Дмитрий Белькевич (2009-11-16 11:30) [19]Я думаю, что если программа умерла, то уже пофиг - заблокирована она или нет.
← →
brother © (2009-11-16 12:07) [20]> заблокирована она или нет.
не она - все заблокировано... только RESET )
← →
Дмитрий Белькевич (2009-11-16 14:01) [21]
> не она - все заблокировано... только RESET )
Почему? Достаточно её снять.
← →
Дмитрий Белькевич (2009-11-16 14:02) [22]
> блокировать ВСЕ - это паранойя
Блокировать всё - имеется в виду, всё своё, конечно же.
← →
Дмитрий Белькевич (2009-11-16 14:05) [23]
> DisableTaskWindows/EnableTaskWindows ?
Это, насколько я помню, не блокирует всю винду, хотя, возможно, ошибаюсь. Но были какие-то сложности с этим, не помню за давностью. Сплэш оказался идеальным решением на то время, когда я его использовал. В следующей версии код был переписан под использование треда и необходимость в сплэше отпала. Но как быстрое, временное, решение - сгодилось.
← →
ВадимММ (2009-11-16 20:37) [24]10 трейдов с кодом
label f;
begin
f:
sleep(10);
goto f;
end;
← →
Leonid Troyanovsky © (2009-11-16 22:38) [25]
> ВадимММ (16.11.09 20:37) [24]
> 10 трейдов с кодом
Почему 10?
А если один, с сотней?
--
Regards, LVT.
← →
Дмитрий Белькевич (2009-11-16 22:47) [26]
> и необходимость в сплэше отпала.
Уточняю. Необходимость в блокировке отпала.
← →
Igor2010 (2009-11-23 21:13) [27]
> Anatoly Podgoretsky © (14.11.09 12:43) [14]
>
>
> Вот настолько часто
> http://www.podgoretsky.com/Redir.aspx?id=212&DownloadFile=~/ddp/chaos.
> aspx
бред.......такую ерунду ток под травой можно сочинить
← →
Anatoly Podgoretsky © (2009-11-23 21:44) [28]> Igor2010 (23.11.2009 21:13:27) [27]
Ты Махоткина не знаешь.
← →
Leonid Troyanovsky © (2009-11-23 23:01) [29]
> Igor2010 (23.11.09 21:13) [27]
>> http://www.podgoretsky.com/Redir.aspx?id=212&DownloadFile=~/ddp/chaos. aspx
> бред.......такую ерунду ток под травой можно сочинить
Далек ты от понимания Истинного Пyти.
--
Regards, LVT.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2011.07.10;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.003 c