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 Всем спасибо. Тема снята. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти