Форум: "Начинающим";
Текущий архив: 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.011 c