Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.20;
Скачать: CL | DM;

Вниз

Мышка и Форма   Найти похожие ветки 

 
nickolayLI   (2002-12-04 14:49) [0]

Привет всем !

Подскажите плиз как реализовать чтобы корсор мышы мого перемещать только в пределах формы(окна)?

Спасибо. пока


 
Song ©   (2002-12-04 14:52) [1]

ClipCursor()


 
nickolayLI   (2002-12-04 15:11) [2]

Хм... а по подробнее можно ....

Спасибо. Пока.


 
Song ©   (2002-12-04 15:22) [3]

Поподробней в хэлпе.


 
nickolayLI   (2002-12-04 15:30) [4]

Да че-то не понятно как-то...


 
Song ©   (2002-12-04 15:50) [5]

Ну уж не хочешь ли чтобы я тебе пример привел по такому 2+2?

В скобках укажи указатель на структуру с типом TRect
Rect можно получить через GetWindowRect() или самому составить вручную через ф-ию Rect() или присваиванием.
К тому же у формы есть всякие TForm.ClientRect()
Вообщем.. вариантов - умри не хочу


 
nickolayLI   (2002-12-04 15:56) [6]

Да но тама именно что не TRect а PRect :(
ClipCursor(lpRect); :( и на TRect у мя ругается. :(




 
Song ©   (2002-12-04 16:01) [7]

:) А какое отличие между PRect и TRect? Просвети пожалуйста..


 
MBo ©   (2002-12-04 16:14) [8]

знаешь, что такое @?


 
Ich Hasse ©   (2002-12-04 18:05) [9]

GetWindowRect(..) - достаешь области формы

в нее кажись входят ссылка на окно (hWindow) и PRect

(PRect = ^TRect; - прямоугольник в памяти)

ClipCursor(Rect); Rect достаешь из процедуры GetWindowRect

и при завершении работы не забудь написать
ClipRect(nil);


 
NickolayLi   (2002-12-04 18:34) [10]

Хм... ок
и еще один тупой вопрос, где это вызывать, какую процедуру/функцию/метод перекрыть... :( (не пинайте сильно, в АПИ слабак, можно сказать 0

Спасибо. Пока.


 
Song ©   (2002-12-04 20:47) [11]

Да ладно не мучайся, жалко стало (только знаний тебе это не добавит!):

// Ограничить мышь
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;


 
mukha ©   (2002-12-04 22:23) [12]

В приведённом примере есть один существенный недостаток. Если код? приведённый в Button1Click навесить на OnCreate, то после кампиляции перемещение мыши ограничивается размерами формы при разработке, а не при выполнении и если они не совпадают, то я не завидую пользователю.Это же произойдёт и при изменении разрешения экрана. Лучше на форму бросить панель и для неё установить Align:=alClient и ограничить перемещение курсора границами панели. Пример был в FAQ.


 
Diamond Cat ©   (2002-12-05 03:26) [13]

2 mukha бред, был преведен пример, а уж куда и чего ставить пусть думает тот кому этот пример нужен, привязывать лишнюю панель вообще не обязательно, можно просто в onpaint сверять реальные размеры с заданными и соответственно переклипивать курсор, это снимет все объявленные вами проблемы, и кстати если уж отклипивать курсор то лучше продублировать это в onclose формы.


 
nickolayLI   (2002-12-05 07:20) [14]

2Song: пасиб большой, и по счет знаний, я с апи практически можно сказать впервой сталкиваюсб :(




Страницы: 1 вся ветка

Текущий архив: 2003.01.20;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.012 c
4-62950
Alexec
2002-12-02 10:16
2003.01.20
Jpeg


1-62565
maxim2
2003-01-11 13:04
2003.01.20
Как не дать запуститься своей проге?


1-62637
BJValentine
2003-01-09 14:16
2003.01.20
Grid


3-62409
sumrak
2002-12-25 18:04
2003.01.20
Построение отчета


4-62947
Asteroid
2002-12-05 23:56
2003.01.20
SetWindowRgn