gvozd Опубликовано 29 июня, 2004 Жалоба Поделиться Опубликовано 29 июня, 2004 Как определить, когда мышь, находиться над ИмаджБоксом, а когда нет? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Gorshok23 Опубликовано 2 июля, 2004 Жалоба Поделиться Опубликовано 2 июля, 2004 Зайдешь в окно кода и выберешь для объекта Form событие MouseMove Private Sub Form_MouseDown(Button As Integer,Shift As Integer, X As Single, Y As Single) End Sub Объяснию парметры Button - какая из трех кнопок мыши была нажата; Shift - были при этом в нажатом состоянии служебные клавиши на клавиатуре и какие именно; X, Y - координаты курсора мыши во время движения. Теперь остается сравнить с координатами любого объекта расположенного на форме. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
gvozd Опубликовано 3 июля, 2004 Автор Жалоба Поделиться Опубликовано 3 июля, 2004 Gorshok23 Ну я ж не совсем ламер! Уж знаю что такое Button, Shift, X, Y! А вот как сравнить... И зачем мне МаусДаун, мне скоре МаусМув надо. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Gorshok23 Опубликовано 3 июля, 2004 Жалоба Поделиться Опубликовано 3 июля, 2004 По децл ощибся МоусМове. Сравнить просто у ИмэджБокса есть свои координаты img1.Top и img1.Left! Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
gvozd Опубликовано 4 июля, 2004 Автор Жалоба Поделиться Опубликовано 4 июля, 2004 А код? Я пытался сравнить: If X > Img1.Left And X < Img1.Left + Img1.Height Then ... Но ниче не работает <_< Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 4 июля, 2004 Жалоба Поделиться Опубликовано 4 июля, 2004 gvozd Ты явно прибавляешь к левой границе рисунка размер по вертикали, а не по горизонтали... Да и Y тоже надо сравнивать с соответствующими границами. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
gvozd Опубликовано 4 июля, 2004 Автор Жалоба Поделиться Опубликовано 4 июля, 2004 Тролль Это я к примеру Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
dmc Опубликовано 5 июля, 2004 Жалоба Поделиться Опубликовано 5 июля, 2004 (изменено) TForm1::FormMouseMove(...) { Label1.Caption = "Мышка вне Image"; } TForm1::Image1MouseMove(....) { Label1.Caption = "Мышка на Image"; } Можно отслеживать с помощью таймера void __fastcall TForm1::Timer1Timer(TObject *Sender) { POINT Pnt; RECT rc; rc.left = Left + Image1->Left; rc.top = Top + Image1->Top; //+ размер заголовка окна rc.right = rc.left + Image1->Width; rc.bottom = rc.top + Image1->Height; GetCursorPos(&Pnt); Label1->Caption = Pnt.x; Label2->Caption = Pnt.y; Label3->Caption = PtInRect(&rc, Pnt); } Значение третьей метки будет 1 или 0 в зависимости находится курсор мыши над Image или нет. Изменено 5 июля, 2004 пользователем dmc Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
gvozd Опубликовано 5 июля, 2004 Автор Жалоба Поделиться Опубликовано 5 июля, 2004 dmc Мне надо на VB! Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
dmc Опубликовано 6 июля, 2004 Жалоба Поделиться Опубликовано 6 июля, 2004 (изменено) gvozd там собственно одно и тоже :( Только во втором примере нужно будет объявить GetCursorPos и PtInRect (см. API Viewer). Dim Pnt As POINTAPI Dim rc As RECT rc.Left = Left + Image1.Left rc.Top = Top + Image1.Top //+ размер заголовка окна rc.Right = rc.Left + Image1.Width rc.Bottom = rc.Top + Image1.Height GetCursorPos Pnt Pnt.x = Pnt.x * 15 ''VB измеряет не пикселях, а в своих твипах Pnt.y = Pnt.y * 15 ''GetCursorPos возвращает пиксели, поэтому переводим в твипы :( Label1.Caption = Pnt.x Label2.Caption = Pnt.y Label3.Caption = Str(PtInRect(rc, Pnt.x, Pnt.y)) Вот и все, небольшая погрешность может быть из-за не учтенных границ окна. Изменено 6 июля, 2004 пользователем dmc Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
gvozd Опубликовано 6 июля, 2004 Автор Жалоба Поделиться Опубликовано 6 июля, 2004 а rc что такое? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 6 июля, 2004 Жалоба Поделиться Опубликовано 6 июля, 2004 gvozd Ну нельзя же писать программы, не зная языка, на котором пишешь... Dim rc As RECT - объявление переменной типа RECT с именем rc, а тип RECT - от слова rectangular - имеющийся в языке составной тип (заранее заготовленное описание структуры переменных), объединяющий под одним именем несколько полей, предназначенных для размещения в них различных параметров прямоугольников. Этот готовый тип удобно использовать при работе с прямоугольниками. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
gvozd Опубликовано 7 июля, 2004 Автор Жалоба Поделиться Опубликовано 7 июля, 2004 Тролль Язык я более или менее знаю, а вот тип RECT вижу впервые! Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
gvozd Опубликовано 7 июля, 2004 Автор Жалоба Поделиться Опубликовано 7 июля, 2004 Всем спасибо. Тема снята. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.