gvozd Posted June 29, 2004 Report Share Posted June 29, 2004 Как определить, когда мышь, находиться над ИмаджБоксом, а когда нет? Link to comment Share on other sites More sharing options...
Gorshok23 Posted July 2, 2004 Report Share Posted July 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 - координаты курсора мыши во время движения. Теперь остается сравнить с координатами любого объекта расположенного на форме. Link to comment Share on other sites More sharing options...
gvozd Posted July 3, 2004 Author Report Share Posted July 3, 2004 Gorshok23 Ну я ж не совсем ламер! Уж знаю что такое Button, Shift, X, Y! А вот как сравнить... И зачем мне МаусДаун, мне скоре МаусМув надо. Link to comment Share on other sites More sharing options...
Gorshok23 Posted July 3, 2004 Report Share Posted July 3, 2004 По децл ощибся МоусМове. Сравнить просто у ИмэджБокса есть свои координаты img1.Top и img1.Left! Link to comment Share on other sites More sharing options...
gvozd Posted July 4, 2004 Author Report Share Posted July 4, 2004 А код? Я пытался сравнить: If X > Img1.Left And X < Img1.Left + Img1.Height Then ... Но ниче не работает <_< Link to comment Share on other sites More sharing options...
Тролль Posted July 4, 2004 Report Share Posted July 4, 2004 gvozd Ты явно прибавляешь к левой границе рисунка размер по вертикали, а не по горизонтали... Да и Y тоже надо сравнивать с соответствующими границами. Link to comment Share on other sites More sharing options...
gvozd Posted July 4, 2004 Author Report Share Posted July 4, 2004 Тролль Это я к примеру Link to comment Share on other sites More sharing options...
dmc Posted July 5, 2004 Report Share Posted July 5, 2004 (edited) 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 или нет. Edited July 5, 2004 by dmc Link to comment Share on other sites More sharing options...
gvozd Posted July 5, 2004 Author Report Share Posted July 5, 2004 dmc Мне надо на VB! Link to comment Share on other sites More sharing options...
dmc Posted July 6, 2004 Report Share Posted July 6, 2004 (edited) 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)) Вот и все, небольшая погрешность может быть из-за не учтенных границ окна. Edited July 6, 2004 by dmc Link to comment Share on other sites More sharing options...
gvozd Posted July 6, 2004 Author Report Share Posted July 6, 2004 а rc что такое? Link to comment Share on other sites More sharing options...
Тролль Posted July 6, 2004 Report Share Posted July 6, 2004 gvozd Ну нельзя же писать программы, не зная языка, на котором пишешь... Dim rc As RECT - объявление переменной типа RECT с именем rc, а тип RECT - от слова rectangular - имеющийся в языке составной тип (заранее заготовленное описание структуры переменных), объединяющий под одним именем несколько полей, предназначенных для размещения в них различных параметров прямоугольников. Этот готовый тип удобно использовать при работе с прямоугольниками. Link to comment Share on other sites More sharing options...
gvozd Posted July 7, 2004 Author Report Share Posted July 7, 2004 Тролль Язык я более или менее знаю, а вот тип RECT вижу впервые! Link to comment Share on other sites More sharing options...
gvozd Posted July 7, 2004 Author Report Share Posted July 7, 2004 Всем спасибо. Тема снята. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now