![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Мышка и Форма
nickolayLI © (2002-12-04 14:49:00)Привет всем !
Подскажите плиз как реализовать чтобы корсор мышы мого перемещать только в пределах формы(окна)?
Спасибо. пока
nickolayLI (2002-12-05 07:20:00) [1]2Song:пасиб большой, и по счет знаний, я с апи практически можно сказать впервой сталкиваюсб :(
Diamond Cat (2002-12-05 03:26:00) [2]2 mukhaбред, был преведен пример, а уж куда и чего ставить пусть думает тот кому этот пример нужен, привязывать лишнюю панель вообще не обязательно, можно просто в onpaint сверять реальные размеры с заданными и соответственно переклипивать курсор, это снимет все объявленные вами проблемы, и кстати если уж отклипивать курсор то лучше продублировать это в onclose формы.
mukha (2002-12-04 22:23:00) [3]В приведённом примере есть один существенный недостаток. Если код? приведённый в Button1Click навесить на OnCreate, то после кампиляции перемещение мыши ограничивается размерами формы при разработке, а не при выполнении и если они не совпадают, то я не завидую пользователю.Это же произойдёт и при изменении разрешения экрана. Лучше на форму бросить панель и для неё установить Align:=alClient и ограничить перемещение курсора границами панели. Пример был в FAQ.
Song (2002-12-04 20:47:00) [4]Да ладно не мучайся, жалко стало (только знаний тебе это не добавит!):
// Ограничить мышь
Procedure TForm1.Button1Click(Sender:TObject);
Var ARect:TRect;
Begin
ARect:=Rect(Left,Top,Left+Width,Top+Height);
ClipCursor(@ARect);
End;
// Освободить
Procedure TForm1.Button2Click(Sender:TObject);
Begin
ClipCursor(nil);
End;
NickolayLi (2002-12-04 18:34:00) [5]Хм... ок
и еще один тупой вопрос, где это вызывать, какую процедуру/функцию/метод перекрыть... :( (не пинайте сильно, в АПИ слабак, можно сказать 0
Спасибо. Пока.
Ich Hasse (2002-12-04 18:05:00) [6]GetWindowRect(..) - достаешь области формы
в нее кажись входят ссылка на окно (hWindow) и PRect
(PRect = ^TRect; - прямоугольник в памяти)
ClipCursor(Rect); Rect достаешь из процедуры GetWindowRect
и при завершении работы не забудь написать
ClipRect(nil);
MBo (2002-12-04 16:14:00) [7]знаешь, что такое @?
Song (2002-12-04 16:01:00) [8]:) А какое отличие между PRect и TRect? Просвети пожалуйста..
nickolayLI (2002-12-04 15:56:00) [9]Да но тама именно что не TRect а PRect :(
ClipCursor(lpRect); :( и на TRect у мя ругается. :(
Song (2002-12-04 15:50:00) [10]Ну уж не хочешь ли чтобы я тебе пример привел по такому 2+2?
В скобках укажи указатель на структуру с типом TRect
Rect можно получить через GetWindowRect() или самому составить вручную через ф-ию Rect() или присваиванием.
К тому же у формы есть всякие TForm.ClientRect()
Вообщем.. вариантов - умри не хочу
nickolayLI (2002-12-04 15:30:00) [11]Да че-то не понятно как-то...
Song (2002-12-04 15:22:00) [12]Поподробней в хэлпе.
nickolayLI (2002-12-04 15:11:00) [13]Хм... а по подробнее можно ....
Спасибо. Пока.
Song (2002-12-04 14:52:00) [14]ClipCursor()