|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Помогите код набросать, отключение бд если курсор вне поля формы
На просторах интернета особо ничего похожего найти не смог( нужно что-бы если курсор выходит за поля формы 1 то база отключалась, если курсор в поле формы 1 то бд включается, и если открыта форма 2 и форма 7 то НЕ отключать бд - (база данных access), буду очень благодарен за помощь!
|
#2
|
|||
|
|||
Ну не знаю...
Если делать в лоб, то попробуй так: 1. Кидаешь таймер, там настраиваешь проверку каждые, пусть, 0.5 сек (значение Interval = 500). 2. В обработчике проверяешь формы, а потом курсор по координатам формы. Типа как-то так: Код:
procedure TForm1.Timer1Timer(Sender : TObject); var pt : TPoint; begin // Form2 or Form7 is active - do nothing If (Form2.Visible Or Form7.Visible) Then Exit; // Get cursor position pt := Mouse.CursorPos; // Check that cursor is over the Form1 If PtInRect(Rect(Self.Left, Self.Top, Self.Right, Self.Bottom),pt) Then EnableDB Else DisableBD; end; PS. Наверное, можно придумать что-то более навороченное, основанное на событиях. Когда-то эксперементировал с MOUSE_MOVE сообщениями, но, как оказалось, там все-таки они приходят с пропусками, особенно, если мышом быстро возить. Можно мышку хукнуть, но это гораздо сложнее, а суть будет примерно та же. Последний раз редактировалось lmikle, 05.12.2017 в 22:30. |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Ekler1 (06.12.2017)
|
#3
|
|||
|
|||
ругается компилятор
Цитата:
Ошибка вылетает вот на эту строчку If PtInRect(Rect(Self.Left, Self.Top, Self.Right, Self.Bottom),pt) [dcc32 Error] Unit9.pas(62): E2003 Undeclared identifier: 'Right' [dcc32 Error] Unit9.pas(62): E2003 Undeclared identifier: 'Bottom' И ещё - Then EnableDB Else DisableBD; Тут точно все правильно? что-то меня смущает строчка EnableDB Последний раз редактировалось Ekler1, 06.12.2017 в 10:10. |
#4
|
||||
|
||||
Ну да, нету у формы таких свойств, нужно подствавить Width и Height
Я не понял Вашего вопроса, но всё же Вам на него отвечу! Последний раз редактировалось Alegun, 06.12.2017 в 15:33. |
#5
|
|||
|
|||
Да, это чё-то я протормозил. Естественно, должно быть:
Код:
PtInRect(Rect(Self.Left, Self.Top, Self.Width, Self.Height),pt) |