Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Мышка и Форма


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()


Наверх

Титульная страница Поиск, карта сайта Написать письмо