Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2010, 17:10   #1
gadilla_cs
Пользователь
 
Регистрация: 05.12.2010
Сообщений: 25
По умолчанию Блокировка/разблокировка

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

Помогите пожалуйста.

ЗЫ: пример моего нерабочего кода, скажите может ли он вообще работать в таких случаях если я его изменю
Код:
if (Horse1.top=56) and (Horse1.Left=48) then button1.Enabled:=false;
     if (Horse1.top<>56) and (Horse1.Left<>48) then button1.Enabled:=true;

Последний раз редактировалось gadilla_cs; 05.12.2010 в 17:34.
gadilla_cs вне форума Ответить с цитированием
Старый 05.12.2010, 19:16   #2
Neoteric
Пользователь
 
Регистрация: 31.03.2009
Сообщений: 23
По умолчанию

В теории таймер + ваш код должен работать
Neoteric вне форума Ответить с цитированием
Старый 06.12.2010, 02:21   #3
gadilla_cs
Пользователь
 
Регистрация: 05.12.2010
Сообщений: 25
По умолчанию

Ну первая строка то работает, а вторую привести в действие я не могу

И как я понял вы мне говорите о том что кнопка через некоторое время активируется? тогда картинка сможет остаться на позиции где кнопка блокируется а потом просто пойти выше

Последний раз редактировалось gadilla_cs; 06.12.2010 в 02:24.
gadilla_cs вне форума Ответить с цитированием
Старый 06.12.2010, 09:05   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

телепатор подсказывает ваша проблема в математике
отрицание для (Horse1.top=56) and (Horse1.Left=48)
не эквивалентно (Horse1.top<>56) and (Horse1.Left<>48)

Код:
button1.Enabled:=not ( (Horse1.top=56) and (Horse1.Left=48)  );
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 06.12.2010 в 09:22.
evg_m вне форума Ответить с цитированием
Старый 06.12.2010, 09:44   #5
gadilla_cs
Пользователь
 
Регистрация: 05.12.2010
Сообщений: 25
По умолчанию

Все равно не помогает, кнопка не возвращается

Последний раз редактировалось gadilla_cs; 06.12.2010 в 09:47.
gadilla_cs вне форума Ответить с цитированием
Старый 06.12.2010, 10:14   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

Как в логике пользователя идет блокирование (разблокирование)?
Где находится код блокировки(разблокировки)? в каких процедурах событиях?
Короче говоря нужно больше кода.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 06.12.2010, 10:26   #7
gadilla_cs
Пользователь
 
Регистрация: 05.12.2010
Сообщений: 25
По умолчанию

Я уже понял что нужно больше кода, Только что писать я понять не могу. Где у меня ошибки понять не могу. Вот и спрашиваю.
gadilla_cs вне форума Ответить с цитированием
Старый 06.12.2010, 10:36   #8
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

Где в какой процедуре (обработчике которого события) находится тот код который вы привели (button1.enabled:=)? (весь код процедуры включая заголовок)
Если это собственная процедура(не та которая доступна в инспекторе объектов(InspectorObject) то и ее вызов в процедурах обработчиках( с указанием для каких событий это обработчики).
Каким образом пользователь может выйти(выходит) из заблокированного состояния? (Хотя бы словесное описание). И как об этом узнает программа.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 06.12.2010 в 10:40.
evg_m вне форума Ответить с цитированием
Старый 06.12.2010, 14:34   #9
gadilla_cs
Пользователь
 
Регистрация: 05.12.2010
Сообщений: 25
По умолчанию

Код:

procedure TForm1.Button1Click(Sender: TObject);
begin
Horse1.Top:=Horse1.Top-48;
if (Horse1.top=56) and (Horse1.Left=48) then Button1.enabled:=false;
if not ((Horse1.top=56) and (Horse1.Left=48)) then Button1.enabled:=true;
end;
Вот, образом перемещения картинки на доступную для передвижения вверх позицию, а вот как об этом узнает программа...
gadilla_cs вне форума Ответить с цитированием
Старый 06.12.2010, 15:58   #10
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

ну и чего вы хотите? Где логика?
Вошли в критичное состояние и .. отключили управление!
А дальше-то что?
Как вы(пользователь) теперь собираетесь изменять его положение(выходить из критичного состояния).

Движение по клику и отключаете этот самый клик (а как думаете выходить).
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Блокировка zmey31313 Помощь студентам 4 25.04.2010 14:16
Блокировка( alco84 Microsoft Office Access 1 13.03.2010 21:51
Разблокировка макроса Deni55 Microsoft Office Excel 4 18.04.2009 17:58
Разблокировка RAR-архива... Терминатор Софт 3 14.04.2009 17:01