Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.07.23;
Скачать: [xml.tar.bz2];

Вниз

MouseMove   Найти похожие ветки 

 
Gizza ©   (2006-06-20 11:42) [0]

Доброго...
Объясню свой вопрос на примере:
Есть форма, не очень большого размера, в правом нижнем углу у него есть маленькая кнопочка... По умолчанию ее не видно, а при наведении курсора мыши на место (на форме) расположения этой кнопки (повторюсь, ее не видно) она должна появляется...
Вот собственно вопрос:
Как отслеживать координа мыши на форме?
Заранее спасибо.


 
Gizza ©   (2006-06-20 11:46) [1]

И... забыл... Добавить к кнопке события InMouse OutMouse, или что-то вроде того.


 
StriderMan ©   (2006-06-20 11:47) [2]

не на форме надо, а у кнопки

на MouseMove включаешь Visible у кнопки,
а на message WM_MOUSELEAVE делаешь обратно Visible := false;


 
Джо ©   (2006-06-20 11:47) [3]

> Как отслеживать координа мыши на форме?

Обрабатывать событие формы OnMouseMove.


 
Gizza ©   (2006-06-20 12:00) [4]

Уважаемый, а можно конкретнее написать, на что сделать, а как. Спасибо.


 
sniknik ©   (2006-06-20 12:04) [5]

ничего не отслеживать, а заменить кнопку на TSpeedButton и поставить Flat  в true.
у нее уже все отслежено (можно даже посмотреть как, при желании...)


 
Джо ©   (2006-06-20 12:08) [6]

> [4] Gizza ©   (20.06.06 12:00)
> Уважаемый, а можно конкретнее написать, на что сделать,
> а как. Спасибо.

Уважаемый, не имею желания разжевывать и класть в ротик. Примите и проч.


 
Gizza ©   (2006-06-20 12:24) [7]


> а на message WM_MOUSELEAVE делаешь обратно Visible := false;

Ээээ... Это же раздел для начинающих... вроде...

на MouseMove включаешь Visible у кнопки
это понятно.

А чего такое message WM_MOUSELEAVE?


 
Gizza ©   (2006-06-20 12:33) [8]

Слушайте... Всмысле, читайте...
Если кнопку не видно, то и событие MouseMove у кнопки выполняться не будет...


 
StriderMan ©   (2006-06-20 12:36) [9]


> А чего такое message WM_MOUSELEAVE?

начинающим неплохо бы почитать что такое сообщения (MESSAGE) в операционной системе WINDOWS.

Вобщем вариантов несколько:
1. В MouseMove отслеживать, что координаты находятся в неком диапаозне, и есть граница (область в несколько пикселей по периметру), в которой Visible должен быть равен false, а в остальном - true;
2. Написать компонент-наследник от TButton, в котором будет процедура типа
 procedure MouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
3. Подменить у кнопки WindowProc, в котором разруливать сообщение WM_MOUSELEAVE, при этом ни в коем случае не забыть сохранить старый WindowsProc и вызывать его после своего

с учетом

> Ээээ... Это же раздел для начинающих... вроде...

подходит вариант номер 1. Хотя он самый трудоемкий, ненадежный и "велосипедный"


 
sniknik ©   (2006-06-20 12:36) [10]

> Если кнопку не видно ...
то ее не обязательно не видно потому, что у нее Visible false, а может еще и потому, что она "маскируется", сливается с фоном. ([5] Flat у TSpeedButton)


 
Джо ©   (2006-06-20 12:40) [11]


> [8] Gizza ©   (20.06.06 12:33)
> Слушайте... Всмысле, читайте...
> Если кнопку не видно, то и событие MouseMove у кнопки выполняться
> не будет...

Зачем проверять OnMouseMove у кнопки? См. пост [3] Джо ©.

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);
var
 Pt: TPoint;
 Rct: TRect;
begin
 Pt.X := X;
 Pt.Y := Y;

 Rct.Left := Button1.Left;
 Rct.Top := Button1.Top;
 Rct.Right := Button1.Left + Button1.Width;
 Rct.Bottom := Button1.Top + Button1.Height;

 Button1.Visible := PtInRect(Rct,Pt);
end;


 
StriderMan ©   (2006-06-20 12:45) [12]


> Если кнопку не видно, то и событие MouseMove у кнопки выполняться
> не будет...

а ведь прав !


> Джо ©

можно и так


 
begin...end ©   (2006-06-20 17:24) [13]

> StriderMan ©   (20.06.06 12:36) [9]

> Подменить у кнопки WindowProc, в котором разруливать сообщение
> WM_MOUSELEAVE

И при этом учесть, что до вызова TrackMouseEvent разруливать будет нечего.


 
UMU ©   (2006-06-20 19:56) [14]


> Gizza ©   (20.06.06 11:42)  
> Доброго...
> Объясню свой вопрос на примере:
> Есть форма


А фон формы какой? Рисунок или обыкновенная заливка?


 
Джо ©   (2006-06-21 00:51) [15]

> [14] UMU ©   (20.06.06 19:56)
> А фон формы какой? Рисунок или обыкновенная заливка?

Вот уж вопрос вопросов.


 
sniknik ©   (2006-06-21 08:25) [16]

нормальный вопрос, по делу... на однотонном поле кнопку легче спрятать без Visible:= false


 
Leonid Troyanovsky ©   (2006-06-21 09:06) [17]


> sniknik ©   (21.06.06 08:25) [16]

> нормальный вопрос, по делу... на однотонном поле кнопку
> легче спрятать


А чего, сложно битмапку скопировать на кнопку?
В любом случае, это уж после "она должна появляется..."

--
Regards, LVT.


 
UMU ©   (2006-06-21 09:34) [18]

Если кнопка должна располагаться на однотонном фоне, то этот вопрос


> а при наведении курсора мыши на место... она должна появляется


довольно легко решается


 
sniknik ©   (2006-06-21 11:11) [19]

> А чего, сложно битмапку скопировать на кнопку?
не сложно, а сложнее, разница. или совсем ничего не делать или рисунок при каждом передвижении кнопки по форме (при дизане) подбирать, вставлять, или код писать чтобы это автоматом делалось.


 
Gizza ©   (2006-07-01 21:05) [20]

Вообще вариант Джо, меня полностью устроил, всем большоее спасибо.

А если кому еще интересно, то форма одного цвета ;)



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

Форум: "Начинающим";
Текущий архив: 2006.07.23;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.014 c
15-1150810602
Cerberus
2006-06-20 17:36
2006.07.23
Как заблокировать входящий трафик


2-1149947049
TGX
2006-06-10 17:44
2006.07.23
Низкоуровневый доступ к файлу


15-1150823390
Alx2
2006-06-20 21:09
2006.07.23
Ителлектуальная собственность


2-1150789331
Gizza
2006-06-20 11:42
2006.07.23
MouseMove


15-1151360686
фывсссяч
2006-06-27 02:24
2006.07.23
English





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский