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

Вниз

Сменить вид курсора контрола в его MouseDown е   Найти похожие ветки 

 
DelphiLexx ©   (2006-08-14 13:22) [0]

На форме размещена кнопка MyButton: TButton при нажатии на эту кнопку вид её курсора с crDefault должен меняться на crHandPoint.
Для этого я в MyButtonMouseDown"е пишу
MyButton.Cursor := crHandPoint, но курсор не меняется.
Так как же сменить курсор?
Способ через Screen.Cursor не предлагать.


 
Джо ©   (2006-08-14 13:26) [1]

> Так как же сменить курсор?

Так и писать: MyButton.Cursor := crHandPoint. Только не понятно, почему выбрать обработчик OnMouseDown, а не OnClick.


 
DelphiLexx ©   (2006-08-14 13:28) [2]


> OnClick

OnClick не универсален. Он подайдёт для кнопки, а вот для DBGrid"a уже этого события нет.


 
Джо ©   (2006-08-14 13:31) [3]

> [2] DelphiLexx ©   (14.08.06 13:28)
>
> > OnClick
>
> OnClick не универсален. Он подайдёт для кнопки, а вот для
> DBGrid"a уже этого события нет.

Так в чем заключается вопрос? В поиске "универсального" события?


 
DelphiLexx ©   (2006-08-14 13:31) [4]


> почему выбрать обработчик OnMouseDown, а не OnClick.

Выбран OnMouseDown, потому что курсор должен менять на нажатии, а не на Click"e.


 
DelphiLexx ©   (2006-08-14 13:32) [5]


> Так в чем заключается вопрос? В поиске "универсального"
> события?

Нет. Нужно чтобы в DBGrid"e курсор менялся в его OnMouseDown"e.


 
Джо ©   (2006-08-14 13:33) [6]

> [4] DelphiLexx ©   (14.08.06 13:31)
> Выбран OnMouseDown, потому что курсор должен менять на нажатии,
> а не на Click"e.

Т.е, меняться он не должен, когда на кнопку нажимают на клавиатуре? Ну, хозяин — барин. Только в чем вопрос — непонятно. Тот код, который ты привел, прекрасно меняет курсор.


 
Джо ©   (2006-08-14 13:35) [7]

> [5] DelphiLexx ©   (14.08.06 13:32)
> Нет. Нужно чтобы в DBGrid"e курсор менялся в его OnMouseDown"e.

Чудеса. В вопросе фигурировал TButton, теперь "всплывает" TDbGrid. Впрочем, это ничего не меняет.


 
DelphiLexx ©   (2006-08-14 13:40) [8]


> Чудеса. В вопросе фигурировал TButton, теперь "всплывает"
> TDbGrid. Впрочем, это ничего не меняет.

Мне нужно было и для TButton"a и для TDBGtrid"a.
И меняться курсор должен при нажатии мыши т.е. в OnMouseDown"е этих компонентов.
Так вот пишу я код в OnMouseDown"е DBGrid"a:
 DBGrid1.Cursor := crHandPoint
Курсор как был crDefault так и остался.
Анологично все происходит и для TButton"a.


 
DprYg ©   (2006-08-14 14:05) [9]

Попробуй так:
Помести на форму компонент ApplicationEvents и в его обработчике OnMessage напиши:
if (Msg.hwnd = DBGrid1.Handle) and (Msg.message = WM_LBUTTONDOWN) then
dbgrid1.Cursor := crHandPoint;


 
Ketmar ©   (2006-08-14 14:47) [10]

> [8] DelphiLexx ©   (14.08.06 13:40)
а если подвигать мышью, не отпуская кнопки -- меняется?


 
Kolan ©   (2006-08-14 14:49) [11]

Application.ProcessMessages?


 
Loginov Dmitry ©   (2006-08-14 16:18) [12]

> Способ через Screen.Cursor не предлагать.


А чем данный вариант не устроил?


 
DelphiLexx ©   (2006-08-14 16:22) [13]


> а если подвигать мышью, не отпуская кнопки -- меняется?

Нет


 
DelphiLexx ©   (2006-08-14 16:23) [14]


> А чем данный вариант не устроил?

Мне нужно изменить только курсор DBGrid"a а не всего приложения.


 
Loginov Dmitry ©   (2006-08-14 16:38) [15]

Ну тогда так:

- При нажатии менять DBGrid.Cursor и Screen.Cursor
- При отжатии восстанавливать Screen.Cursor в прежднее состояние


 
Loginov Dmitry ©   (2006-08-14 16:39) [16]

При нажатии кнопки мыши в OnMouseDown, естественно.


 
DprYg ©   (2006-08-14 17:00) [17]

Так я не понял - [9] что, не работает?


 
Loginov Dmitry ©   (2006-08-14 18:19) [18]

> Так я не понял - [9] что, не работает?


А кто должен знать, работает оно или нет?


 
DprYg ©   (2006-08-14 19:12) [19]

Так у меня работает. Нормально работает. Просто, если это работает, зачем весь базар? Вот к чему я спросил.


 
Джо ©   (2006-08-14 23:51) [20]

> [19] DprYg ©   (14.08.06 19:12)
> Так у меня работает. Нормально работает. Просто, если это
> работает, зачем весь базар? Вот к чему я спросил.

"У меня" работает даже [0] и [1]. К чему "весь базар" — автору вопроса виднее, у него же неработает, да и код у него перед глазами :)


 
Zeqfreed ©   (2006-08-14 23:57) [21]

Насколько я понял, автор вопроса хочет чтобы при нажатии на кнопку мыши курсор сразу же принял другой вид, а при отпускании, допустим, вернул свой преждний облик.


 
Джо ©   (2006-08-15 00:58) [22]

> [21] Zeqfreed ©   (14.08.06 23:57)
> Насколько я понял, автор вопроса хочет чтобы при нажатии
> на кнопку мыши курсор сразу же принял другой вид, а при
> отпускании, допустим, вернул свой преждний облик.

Пока автор этого не сказал, я не стад бы гадать :)


 
TButton ©   (2006-08-15 05:10) [23]

имхо, выпендрёж. юзер и без скачучих курсоров обойдётся.

хотя как абстрактная задача - интересно)


 
DprYg ©   (2006-08-15 09:33) [24]


> Джо ©   (14.08.06 23:51) [20]

[0] и [1] у меня работает так. Нажимаю мышкой на грид - курсор сразу не меняется. Вожу мышкой с нажатой кнопкой - не меняется. Отпускаю - изменился. А в [9] нажимаю - сразу меняется (не обязательно отпускать). Сам не понимаю, почему так [0] не действует, может объяснит кто...


 
Джо ©   (2006-08-15 12:58) [25]

 Panel1.Cursor := crHandPoint;
 ReleaseCapture


 
DelphiLexx ©   (2006-08-16 08:40) [26]


> Насколько я понял, автор вопроса хочет чтобы при нажатии
> на кнопку мыши курсор сразу же принял другой вид, а при
> отпускании, допустим, вернул свой преждний облик.

Именно так.


 
DelphiLexx ©   (2006-08-16 08:47) [27]


>  Panel1.Cursor := crHandPoint;
>  ReleaseCapture

Спасибо Джо. Ты решил мою проблему.



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

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

Наверх




Память: 0.53 MB
Время: 0.032 c
2-1157582454
K_Lock
2006-09-07 02:40
2006.09.24
Stream and ListBox


3-1153404571
KyRo
2006-07-20 18:09
2006.09.24
Вопрос по набору данных в ADOTable


4-1148406407
Донской
2006-05-23 21:46
2006.09.24
Двухголовая машина


2-1157101100
TakTak
2006-09-01 12:58
2006.09.24
время работы в миллисекундах.


2-1157092512
worldmen
2006-09-01 10:35
2006.09.24
Ошибва в модуле.