Форум: "Начинающим";
Текущий архив: 2007.08.26;
Скачать: [xml.tar.bz2];
ВнизВнутри ли кнопки курсор. Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.035 c