Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.042 c
1-1181886899
StriderMan
2007-06-15 09:54
2007.08.26
Блочный текстовый файл.


15-1185460867
БарЛог
2007-07-26 18:41
2007.08.26
Книга по строению автомобиля "для чайников"


15-1185940922
IMHO
2007-08-01 08:02
2007.08.26
Бухгалтера vs. программисты


2-1185881681
snake-as
2007-07-31 15:34
2007.08.26
Подсказка для пользователя


15-1183988140
mrhx
2007-07-09 17:35
2007.08.26
Визуальный редактор GUI с генерацией под разные платформы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский