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

Вниз

Внутри ли кнопки курсор.   Найти похожие ветки 

 
Nikfel ©   (2007-08-01 13:05) [0]

Пожалуйста помогите.Как в OnMouseDown проверить находится ли курсор в нутри кнопки или нет.Заранее спасибо.


 
DVM ©   (2007-08-01 13:09) [1]

А что бывает по-другому? Кнопку усилием мысли нажимали?


 
Dib@zol ©   (2007-08-01 13:09) [2]

var
 r:TRect;
 p:TPoint;

...

r.left:=bt1.left;
r.top:=bt1.top;
r.right:=r.left + bt1.width;
r.bottom:=r.top + bt1.height;

GetCursorPos(p);
ScreenToClient(p, Form1.handle);
Result:=ptInRect(p, r);

?


 
clickmaker ©   (2007-08-01 13:13) [3]


>  Nikfel ©   (01.08.07 13:05)

если в OnMouseDown кнопки, то ясно, что внутри
А если не кнопки, то ясно что снаружи
И в чем вопрос тогда?


 
Игорь Шевченко ©   (2007-08-01 13:14) [4]


> если в OnMouseDown кнопки, то ясно, что внутри


Точно ?


 
clickmaker ©   (2007-08-01 13:15) [5]


> [4] Игорь Шевченко ©   (01.08.07 13:14)

эээ... а как?


 
Игорь Шевченко ©   (2007-08-01 13:57) [6]

clickmaker ©   (01.08.07 13:15) [5]


> эээ... а как?


Извиняюсь. С OnMouseMove перепутал :)


 
Elen ©   (2007-08-01 14:27) [7]


> Игорь Шевченко ©   (01.08.07 13:57) [6]

А если это событие не кликом вызвано, а в программе прописано мол Button1MouseDown(self) тогда все-таки проверить нужно наподобие [2]. Так?


 
Игорь Шевченко ©   (2007-08-01 14:42) [8]

Elen ©   (01.08.07 14:27) [7]

Переведи


 
StriderMan ©   (2007-08-01 14:47) [9]


> Как в OnMouseDown проверить находится ли курсор в нутри
> кнопки или нет

просто поверь :))

единственное исключение - если обработчик вызвали ручками, т.е. из другой процедуры.


 
Lacmus ©   (2007-08-01 14:51) [10]


procedure TForm11.Button1MouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 ShowMessage("Button1MouseDown")
end;

procedure TForm11.Button2Click(Sender: TObject);
begin
 SetCapture(Button1.Handle)
end;


 
Elen ©   (2007-08-01 14:51) [11]


> Переведи

см. перевод в [9].


 
DVM ©   (2007-08-01 14:54) [12]


> Elen ©   (01.08.07 14:51) [11]
>
> > Переведи
>
> см. перевод в [9].

Так это к кнопке не имеет никакого отношения. Мало ли кто какую процедуру вызвал. Sender там на что дан?


 
{RASkov} ©   (2007-08-01 14:54) [13]

+1 [7] Elen

> Переведи

Я так понял, исходя из [0]
> Как в OnMouseDown проверить находится ли курсор в нутри кнопки или нет
то обработчик можно и программно вызвать.... Пример:

procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var P: TPoint;
begin
 GetCursorPos(P);
 P:=ScreenToClient(P);
 if PtInRect((Sender as TControl).BoundsRect, P) then ShowMessage("Yes") else ShowMessage("No");
end;

procedure TForm1.Button2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
 Button1MouseDown(Button1, Button, Shift, X, Y);
end;


 
Elen ©   (2007-08-01 14:58) [14]


> Я так понял, исходя из [0]...

Вот и я так подумала.


 
{RASkov} ©   (2007-08-01 14:58) [15]

Если вызов OnMouseDown происходит непосредственно нажатием онной кнопки, то нет смысла всей этой проверки курсора где он находиться...


 
DVM ©   (2007-08-01 15:01) [16]


> procedure TForm1.Button2MouseDown(Sender: TObject; Button:
>  TMouseButton; Shift: TShiftState; X, Y: Integer);
> begin
>  Button1MouseDown(Button1, Button, Shift, X, Y);> end;


Т.е. мы намеренно будем так писать, в надежде запутать программу и потом сами же будем испытывать проблемы.

Непонятно зачем это автору вопроса вообще понадобилось.


 
Elen ©   (2007-08-01 15:03) [17]


> Непонятно зачем это автору вопроса вообще понадобилось.

Это знает только автор.


 
{RASkov} ©   (2007-08-01 15:06) [18]

> [16] DVM ©   (01.08.07 15:01)
> Т.е. мы намеренно будем так писать, в надежде запутать программу
> и потом сами же будем испытывать проблемы.
>
> Непонятно зачем это автору вопроса вообще понадобилось.

Вот и я о том же.... автор толком не объяснил, что ему нужно, отсюда и такие ответы...
Что он там имел ввиду... чей OnMouseDown .... какой кнопки.... в общем он молчит... ну и фик с ним :)
А решение его проблемы наверняка простое как всегда, только проблему он не смог написать.... :)


 
Игорь Шевченко ©   (2007-08-01 15:06) [19]


> А если это событие не кликом вызвано, а в программе прописано
> мол Button1MouseDown(self) тогда все-таки проверить нужно
> наподобие [2]. Так?


Нет, нужно автора уволить. А лучше убить.


 
Elen ©   (2007-08-01 15:11) [20]


>  нужно автора уволить. А лучше убить.

Радикально. А вдруг воскреснет?


 
DVM ©   (2007-08-01 15:14) [21]


> А вдруг воскреснет?

Кол в сердце забить. оСИновый.


 
Юрий Зотов ©   (2007-08-01 23:20) [22]

WindowFromPoint?



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

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

Наверх




Память: 0.51 MB
Время: 0.027 c
15-1185518158
DevilDevil
2007-07-27 10:35
2007.08.26
Умная литература. Ведение/планирование проекта/подзадачи


15-1185274519
Kerk
2007-07-24 14:55
2007.08.26
2800 квадратных метров ткани


2-1186293267
Zagaevskiy
2007-08-05 09:54
2007.08.26
тут я чайник полный:)


2-1186204452
vegarulez
2007-08-04 09:14
2007.08.26
Вопрос про ICQ.


15-1185300419
JetAPI
2007-07-24 22:06
2007.08.26
Turbo Delphi Explorer - не знаю на чем сделать выбор.