Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
 Аватар для gore-lykovoe
32 / 32 / 3
Регистрация: 04.04.2010
Сообщений: 414

Блокировка всего, кроме моего приложения

19.03.2011, 14:49. Показов 2875. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот код
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
implementation
  uses Unit2;
{$R *.dfm}
 
function enum(hd:hwnd;Lparam:Lparam):boolean;
begin
if (IsWindowVisible(hd))and(hd<>form1.Handle)and(hd<>Application.Handle) then begin
  if lparam=0 then
   enablewindow(hd,false)
  else
   enablewindow(hd,true);
end;
 
 
result:=true;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
enumwindows(@enum,0);
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
Timer1.Enabled:=true;
end;
 
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Timer1.Enabled:=false;
enumwindows(@enum,1);
end;
 
procedure TForm1.Edit1Change(Sender: TObject);
begin
if edit1.text='123'then begin form2.showmodal; form1.Close; end;
 
end;
 
end.
Сама блокировка работает на отлично. Если просто закрыть приложение, то блокировка отключается.
Code
1
2
3
4
5
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Timer1.Enabled:=false;
enumwindows(@enum,1);
end;
а если вписать в edit 123, то открывается окно второй формы. Первая форма почему-то не закрывается. И нельзя воообще ничего сделать. Все заблокировано.
Code
1
2
3
4
5
procedure TForm1.Edit1Change(Sender: TObject);
begin
if edit1.text='123'then begin form2.showmodal; form1.Close; end;
 
end;
пробовал так, но толку тоже ноль
Code
1
2
3
4
begin
if edit1.text='123'then begin Timer1.Enabled:=false;
enumwindows(@enum,1); form2.showmodal;  end;
end;
что делать? Мне нужно открыть вторую форму через едит1, и чтобы форма один исчезла.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.03.2011, 14:49
Ответы с готовыми решениями:

Блокировка всего кроме приложение и showmessage
ИЗвините, что создал новую тему, но так легче будет разобраться тому, кто захочет помочь. У меня есть код рабочий, он блокирует форму1. ...

Возможен ли запуск стороннего приложения в окне моего приложения?
Возможно ли запускать стороннее приложение в окне моего приложения ? В Идеале не терять кроссплатформенность, в основе лежит Windows....

У моего сайта ПР 3, но ссылок всего 7
Ещё полгода назад ссылок в гугле было на около 200. Сейчас же осталось 7. В результате мои позиции сильно ухудшились. ...

18
 Аватар для anonimus
2184 / 1255 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
19.03.2011, 15:13
а в старой теме не судьба написать?

Добавлено через 1 минуту
Если у тебя несколько форм то нужно и их хендлы поставить в условие иначе конечно будут блокироваться
короче прикрепи проект

Добавлено через 57 секунд
И зачем тебе открывать вторую форму модально если у тебя первая выполняет все что тебе нужно
1
 Аватар для gore-lykovoe
32 / 32 / 3
Регистрация: 04.04.2010
Сообщений: 414
19.03.2011, 15:34  [ТС]
Прога, спасибо, что помогаете мне.
Вложения
Тип файла: rar Programm.rar (170.5 Кб, 32 просмотров)
0
 Аватар для anonimus
2184 / 1255 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
19.03.2011, 17:06
ну читай про свои ошибки
1. Зачем тебе процедура блокировки в первом и во-втором юните? Достаточно только во втором, а в первом хватит одной процедуры Edit1Change
2. Я тебе написал пример, ты не разобравщись в нем сразу начал использовать, а потом удивляешься что-то работает не так как хотелось бы.
Если у тебя 2 формы то исключить из блокировки нужно 2 формы а не только 1.
3. В первом юните у тебя условие, если пароль верный открыть вторую форму и закрыть первую, но закрывая первую ты закрываешь приложение
вместо form1.close; используй form1.Hide;
Так же при закрытии второй формы первую нужно отобразить, на нее можно вывести результат теста ) form1.Show;
1
 Аватар для gore-lykovoe
32 / 32 / 3
Регистрация: 04.04.2010
Сообщений: 414
19.03.2011, 20:07  [ТС]
Тоесть, пользователь должен обязательно закрыть форму с которой идет блокировка? А если например, пользователь закроет вторую форму по желанию, что делать тогда? Добавлять в свойство закрытия - закрытие первой? Или что? Код просто не понимаю, знаю только паскаль на школьном уровне,
0
 Аватар для anonimus
2184 / 1255 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
19.03.2011, 20:20
Цитата Сообщение от gore-lykovoe Посмотреть сообщение
Тоесть, пользователь должен обязательно закрыть форму с которой идет блокировка? А если например, пользователь закроет вторую форму по желанию
ну так на второй форме будет собственно тест, если ее закроют значит завершат тест, сделай что бы при закрытии формы выскакивало предупреждение типа если вы закроете форму тест будет не пройден (если он действительно не полностью пройден)


Цитата Сообщение от gore-lykovoe Посмотреть сообщение
знаю только паскаль на школьном уровне
зачем тогда браться? Напиши в раздел фриланс тебе все сделают
0
 Аватар для anonimus
2184 / 1255 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
19.03.2011, 20:20
Цитата Сообщение от gore-lykovoe Посмотреть сообщение
Тоесть, пользователь должен обязательно закрыть форму с которой идет блокировка? А если например, пользователь закроет вторую форму по желанию
ну так на второй форме будет собственно тест, если ее закроют значит завершат тест, сделай что бы при закрытии формы выскакивало предупреждение типа если вы закроете форму тест будет не пройден (если он действительно не полностью пройден)


Цитата Сообщение от gore-lykovoe Посмотреть сообщение
знаю только паскаль на школьном уровне
зачем тогда браться? Напиши в раздел фриланс тебе все сделают
0
 Аватар для gore-lykovoe
32 / 32 / 3
Регистрация: 04.04.2010
Сообщений: 414
19.03.2011, 20:45  [ТС]
ты закрываешь приложение
вместо form1.close; используй form1.Hide;
изменил, блокировку со второй формы удалил. Поставил кнопку на вторую форму, чтобы показывала первую форму при нажатии. Но на кнопку нельзя нажать. Форма 1 блокирует вторую форму.
ну так на второй форме будет собственно тест, если ее закроют значит завершат тест, сделай что бы при закрытии формы выскакивало предупреждение
пердупреждение должно выскакивать на первой форме типа?
зачем тогда браться? Напиши в раздел фриланс тебе все сделают
берусь, чтобы учиться. С самим кодом программы, особых проблем не будет. Проблемы с интерфейсом который создает делфи (точней у меня проблемы).
----------------------------------------------------------
в прошлой теме я искал способ, может стоит тогда вернуться к прошлому, открывать на весь экран, скрывая панель? Мне просто надо, чтобы например стояла кнопка в правом верхнем углу, а при расширении она там и осталась. Чтобы стояла картинка на фоне, а при расширении она растянулась на всю форму, а не осталась квадратом в центре формы.
0
 Аватар для anonimus
2184 / 1255 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
19.03.2011, 20:55
Цитата Сообщение от gore-lykovoe Посмотреть сообщение
блокировку со второй формы удалил
зачем, ты читать умеешь?

Цитата Сообщение от gore-lykovoe Посмотреть сообщение
пердупреждение должно выскакивать на первой форме типа?
ну с чего это? такое впечатление что ты сам не понимаешь что ты делаешь! Если тест на второй форме причем тут первая, у тебя первая форма только для авторизации.
0
 Аватар для gore-lykovoe
32 / 32 / 3
Регистрация: 04.04.2010
Сообщений: 414
19.03.2011, 22:30  [ТС]
если у меня первая форма только для авторизации, то зачем тогда ее скрывать? А нельзя закрыть? А так же возможно ли расширять картинку по мере расширения формы?

Добавлено через 5 минут
а что в моем проекте неправильно тогда было. Я теперь изменил только close на hide, и больше ничего не трогал, все равно не работает((

Добавлено через 38 секунд
что с форумом? досят? я могу зайти сюда раз в час, все остальное время сайт недоступен((
0
 Аватар для anonimus
2184 / 1255 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
19.03.2011, 22:55
Цитата Сообщение от gore-lykovoe Посмотреть сообщение
А нельзя закрыть
она же у тебя основная, закроешь ее закроется приложение

А так же возможно ли расширять картинку по мере расширения формы
меняй размер картинки по событию формы onResize

Добавлено через 8 минут
а что в моем проекте неправильно тогда было. Я теперь изменил только close на hide, и больше ничего не трогал, все равно не работает((
перечетай еще раз
https://www.cyberforum.ru/post1466269.html

Добавлено через 1 минуту
выкладывать исправленный твой проект я не буду принципиально, как говорится рыбака накормит не рыба, а удочка
1
 Аватар для gore-lykovoe
32 / 32 / 3
Регистрация: 04.04.2010
Сообщений: 414
20.03.2011, 10:28  [ТС]
anonimus, перечетал пост много раз и понял. Говоря "зачем тебе процедура блокировки в первой форме!" вы имел ввиду не техническую сторону кода, а логическую. Тоесть зачем блокировать форму ввода пароля, когда надо блокировать только форму с вопросами, если так, то я понял, и проблем не должно быть. Просто вдруг вообще когда-нибудь понадобится блокировать много форм. Выхода не будет?

Добавлено через 33 минуты
anonimus, сделал блокировку только на форме 2, а форму 1 оставил в покое. Все работало хорошо. Так как форма 2 будет служить у меня формой для вопросов, я создал еще одну форму 3, в которой можно будет выбрать тест. И единственное, что я изменил, так это стал форму 2 открывать уже с формы 3. Но работать стало неккоректно. Форма 3 появляется сбоку, залезкая за контуры монитора, и при этом она заблокирована. Но к удивлению кнопка баттон на ней работает. И открыв форму 2 становится уже все норм. Но такая работы формы 3 (блокировка мне не нравится).
0
 Аватар для gore-lykovoe
32 / 32 / 3
Регистрация: 04.04.2010
Сообщений: 414
20.03.2011, 10:37  [ТС]
даже кнопка на форме 3 работает через раз. Если щелкнуть по форме, то она перестает работать. И тогда я вообще не знаю, что делать. Все заблоикировано. А горячих клавиш для убийства процесса конкретного я не знаю. Не подскажете, что делать, чтобы не перезагружать комп, когда все заблокировано?

Не могли бы вы подсказать в чем причина ошибок таких? Выложу файл:
Вложения
Тип файла: rar Programm2.rar (173.2 Кб, 10 просмотров)
0
 Аватар для anonimus
2184 / 1255 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
20.03.2011, 11:15
Цитата Сообщение от gore-lykovoe Посмотреть сообщение
перечетал пост много раз и понял
не фига ты не понял, перечитывай еще раз, в частности
это
Если у тебя 2 формы то исключить из блокировки нужно 2 формы а не только 1.
а если три формы то логично что исключать нужно 3.

Так же если ты добавил еще одну форму то процедуру блокировки нужно перенести на ту форму которая появляется последней.

P.S.
я так и не понял накакой ты добавил еще одну форму

Добавлено через 10 минут
разберись с этим условием
(IsWindowVisible(hd))and(hd<>form1.Handl e)and(hd<>Application.Handle)
1
 Аватар для gore-lykovoe
32 / 32 / 3
Регистрация: 04.04.2010
Сообщений: 414
20.03.2011, 11:24  [ТС]
а как исключить три формы? я не понимаю по коду, как это сделать. Не объясните?
____________
я форму создал вторую, так как не очень представляю себе, как создавать тест. Допустим у меня будет все на одной форме. Тоесть в начале: когда создается formcreate, мне надо вывести в баттонах все виды тестов. Потом, когда пользователь выбрал тест, нужно с помощью свойства invisible, скрывать 11 баттонов? Потом надо написать оператор case, где будет расписано что делать если пользователь выбрал такой-то тест. Потом когда будут считываться вопросы из файла и варианты ответов (которых может быть всегда разное количество) надо в зависимости от этого, скрывать через Invisible радиобаттон или чекбокс?

Добавлено через 1 минуту
тоесть лишние объекты надо скрывать через invisible просто, или надо как-то по другому все это делать?
0
 Аватар для anonimus
2184 / 1255 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
20.03.2011, 11:28
Цитата Сообщение от gore-lykovoe Посмотреть сообщение
а как исключить три формы
аналогично form1.Handle.
form2.Handle, form3.Handle ......

Цитата Сообщение от gore-lykovoe Посмотреть сообщение
так как не очень представляю себе, как создавать тест
что-то ты подошел к реализации программы не с того конца ))
ты сначала создай тест, а потом думай как заблокировать все кроме твоего теста

Добавлено через 1 минуту
кстати на форуме вопросы по реализации и созданию тестов поднимались и не один раз
1
 Аватар для gore-lykovoe
32 / 32 / 3
Регистрация: 04.04.2010
Сообщений: 414
20.03.2011, 11:37  [ТС]
аналогично form1.Handle.
form2.Handle, form3.Handle ......
это написано в операторе условия, тоесть как я понял
if (IsWindowVisible(hd))and(hd<>form1.Handl e)and(hd<>Application.Handle) then begin
если все это выполняется то блокируй все кроме..., а вот где написано крочем чего я не понял. Где написано чтобы он не блокировал форму мою? Из ваших слов следует, что надо сделать так:
Code
1
2
if (IsWindowVisible(hd))and(hd<>form1.Handle)and(hd<>form2.Handle)
and(hd<>form3.Handle)and(hd<>Application.Handle) then begin
но что-то я сомневаюсь, что я правильно понял.

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

Добавлено через 2 минуты
да вы правы, надо было сначала написать саму программу. Но я просто заранее подмал, как мне сделать то-то и понял что не знаю, пришел сюда
0
 Аватар для anonimus
2184 / 1255 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
20.03.2011, 11:51
но что-то я сомневаюсь, что я правильно понял
почему же, правильно
Цитата Сообщение от gore-lykovoe Посмотреть сообщение
как обойтись без перезагрузки
кинь на форму еще один таймер поставь ему интервал примерно 10 секунд
в обработчике напиши что бы он выключал таймер1 и это enumwindows(@enum,1);
1 это мы разблокируем 0 - блокируем

Добавлено через 3 минуты
и не забудь про это
Так же если ты добавил еще одну форму то процедуру блокировки нужно перенести на ту форму которая появляется последней.
1
 Аватар для gore-lykovoe
32 / 32 / 3
Регистрация: 04.04.2010
Сообщений: 414
20.03.2011, 11:52  [ТС]
anonimus, большое вам спасибо за постоянную помощь. Однако последую ща вашему совету, и напишу саму программу. А потом буду мучить ее блокировкой.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.03.2011, 11:52
Помогаю со студенческими работами здесь

Программа не работает на всех компах кроме моего
Добрый день. Создал проект, программа работает нормально. Решил вытащить exe файл, чтобы скинуть проверить на других компах, ну и знакомым...

В папке Сеть 11 других компьютеров кроме моего
Здраствуйте , на днях зашел в папку ''Сеть'' и обноружил там 11 других компьютеров кроме моего. Вопрос 1:Так должно быть или нет ? ...

Windows 8.1 транслируем системные звуки кроме моего голоса
Всем привет,вообщем проблема такая микрофон который встроен на наушниках,транслирует системные звуки(в скайпе и в играх и вообще везде где...

Блокировка окон Windows кроме браузера
Добрый день! Появилась не стандартная задача для реализации одного проекта. Суть: В здании магазина размещается сенсорный...

Почему-то не читается содержимое файла в OEM 866 на других компах, кроме моего
Всем привет! Я написал программку по считыванию файла в формате OEM 866 и выводе определенных строк в консоль. На моих компьютерах все...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru